Skip to content

Commit 5e33a16

Browse files
Merge pull request #10198 from dreamsxin/volt_2.0
Updated `is not` syntax for volt
2 parents 21d6e37 + 1e14195 commit 5e33a16

File tree

11 files changed

+3695
-5516
lines changed

11 files changed

+3695
-5516
lines changed

ext/phalcon/mvc/view/engine/volt/base.c

+35
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ const phvolt_token_names phvolt_tokens[] =
8080
{ SL("EXTENDS"), PHVOLT_T_EXTENDS },
8181
{ SL("IS"), PHVOLT_T_IS },
8282
{ SL("DEFINED"), PHVOLT_T_DEFINED },
83+
{ SL("EMPTY"), PHVOLT_T_EMPTY },
84+
{ SL("EVEN"), PHVOLT_T_EVEN },
85+
{ SL("ODD"), PHVOLT_T_ODD },
86+
{ SL("NUMERIC"), PHVOLT_T_NUMERIC },
87+
{ SL("SCALAR"), PHVOLT_T_SCALAR },
88+
{ SL("ITERABLE"), PHVOLT_T_ITERABLE },
8389
{ SL("INCLUDE"), PHVOLT_T_INCLUDE },
8490
{ SL("DO"), PHVOLT_T_DO },
8591
{ SL("WHITESPACE"), PHVOLT_T_IGNORE },
@@ -245,6 +251,11 @@ int phvolt_internal_parse_view(zval **result, zval *view_code, zval *template_pa
245251

246252
/** Start the reentrant parser */
247253
phvolt_parser = phvolt_Alloc(phvolt_wrapper_alloc);
254+
if (unlikely(!phvolt_parser)) {
255+
MAKE_STD_ZVAL(*error_msg);
256+
ZVAL_STRING(*error_msg, "Memory allocation error", 1);
257+
return FAILURE;
258+
}
248259

249260
parser_status = emalloc(sizeof(phvolt_parser_status));
250261
state = emalloc(sizeof(phvolt_scanner_state));
@@ -595,6 +606,30 @@ int phvolt_internal_parse_view(zval **result, zval *view_code, zval *template_pa
595606
phvolt_(phvolt_parser, PHVOLT_DEFINED, NULL, parser_status);
596607
break;
597608

609+
case PHVOLT_T_EMPTY:
610+
phvolt_(phvolt_parser, PHVOLT_EMPTY, NULL, parser_status);
611+
break;
612+
613+
case PHVOLT_T_EVEN:
614+
phvolt_(phvolt_parser, PHVOLT_EVEN, NULL, parser_status);
615+
break;
616+
617+
case PHVOLT_T_ODD:
618+
phvolt_(phvolt_parser, PHVOLT_ODD, NULL, parser_status);
619+
break;
620+
621+
case PHVOLT_T_NUMERIC:
622+
phvolt_(phvolt_parser, PHVOLT_NUMERIC, NULL, parser_status);
623+
break;
624+
625+
case PHVOLT_T_SCALAR:
626+
phvolt_(phvolt_parser, PHVOLT_SCALAR, NULL, parser_status);
627+
break;
628+
629+
case PHVOLT_T_ITERABLE:
630+
phvolt_(phvolt_parser, PHVOLT_ITERABLE, NULL, parser_status);
631+
break;
632+
598633
case PHVOLT_T_DO:
599634
phvolt_(phvolt_parser, PHVOLT_DO, NULL, parser_status);
600635
break;

ext/phalcon/mvc/view/engine/volt/generate

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
#! /bin/sh
1+
if [ ! -f lemon ]; then
2+
gcc -O2 lemon.c -o lemon
3+
fi
4+
rm -f *.o
5+
rm -f *.lo
6+
re2c -b -o scanner.c scanner.re && ./lemon -s -q parser.lemon && cat base.c >> parser.c
7+
sed -i 's!^#line.*$$!/* & */!g' scanner.c
8+
sed -i 's!^#line.*$$!/* & */!g' parser.c
29

3-
make clean
4-
make all

0 commit comments

Comments
 (0)