Index: const_gram.c =================================================================== --- const_gram.c (revision 36858) +++ const_gram.c (revision 36859) @@ -15,50 +15,64 @@ #include "../src_plugins/order/const_gram.h" static const pcb_ordc_int_t pcb_ordc_lhs[] = { -1, 0, 0, 5, 5, 5, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, - 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 4, 2, 3, }; static const pcb_ordc_int_t pcb_ordc_len[] = { 2, 0, 2, 1, 1, 1, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 1, 1, 1, 2, 3, - 5, 7, + 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, + 2, 4, 4, 4, 3, 5, 7, }; static const pcb_ordc_int_t pcb_ordc_defred[] = { 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, - 0, 2, 16, 17, 18, 0, 0, 0, 0, 0, - 20, 6, 0, 19, 0, 0, 0, 0, 0, 0, + 0, 2, 18, 0, 20, 0, 0, 0, 0, 0, + 0, 0, 25, 0, 0, 0, 6, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 14, 15, 21, 0, 0, 22, + 0, 0, 0, 16, 17, 26, 0, 24, 22, 23, + 0, 27, }; static const pcb_ordc_int_t pcb_ordc_dgoto[] = { 4, - 19, 5, 6, 7, 8, + 21, 5, 6, 7, 8, }; -static const pcb_ordc_int_t pcb_ordc_sindex[] = { -122, - -29, -26, -122, 0, 0, 0, 0, -122, 14, -242, - -100, 0, 0, 0, 0, 14, 14, -230, -41, -16, - 0, 0, -38, 0, 14, 14, 14, 14, 14, 14, - 14, 14, -122, -229, 0, -33, -33, -33, -33, -33, - -33, 0, 0, 0, -11, -27, 0, +static const pcb_ordc_int_t pcb_ordc_sindex[] = { -121, + -28, -27, -121, 0, 0, 0, 0, -121, -36, -243, + -110, 0, 0, -22, 0, -20, -18, -36, -36, -241, + -35, -21, 0, -36, -36, -36, 0, -24, 0, -36, + -36, -36, -36, -36, -36, -36, -36, -36, -36, -121, + -236, -16, -8, 1, 0, 64, 64, 64, 64, 64, + 64, -38, -42, 0, 0, 0, -15, 0, 0, 0, + -31, 0, }; -static const pcb_ordc_int_t pcb_ordc_rindex[] = { 33, - 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, +static const pcb_ordc_int_t pcb_ordc_rindex[] = { 30, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -28, -25, -15, -12, -2, - 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 33, 39, 45, 51, 57, + 63, 17, 25, 0, 0, 0, 0, 0, 0, 0, + 0, 0, }; -static const pcb_ordc_int_t pcb_ordc_gindex[] = { 26, - -8, 0, 0, 0, 3, +static const pcb_ordc_int_t pcb_ordc_gindex[] = { 23, + 87, 0, 0, 0, 8, }; -#define pcb_ordc_TABLESIZE 274 -static const pcb_ordc_int_t pcb_ordc_table[] = { 33, - 3, 31, 35, 32, 31, 11, 32, 22, 23, 31, - 9, 32, 8, 10, 20, 9, 36, 37, 38, 39, - 40, 41, 42, 43, 21, 10, 24, 34, 11, 46, - 45, 47, 1, 12, 0, 44, 0, 0, 12, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 17, 0, 0, 0, 0, 16, 0, +#define pcb_ordc_TABLESIZE 332 +static const pcb_ordc_int_t pcb_ordc_table[] = { 20, + 38, 3, 39, 19, 38, 40, 39, 38, 18, 39, + 11, 9, 10, 22, 23, 29, 45, 24, 38, 25, + 39, 26, 41, 57, 58, 61, 38, 62, 39, 1, + 12, 0, 59, 0, 38, 0, 39, 0, 0, 0, + 0, 60, 0, 38, 0, 39, 0, 56, 0, 19, + 0, 19, 0, 19, 0, 0, 0, 14, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 13, 27, 28, 38, 0, 39, 0, + 42, 43, 44, 0, 0, 0, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -66,29 +80,35 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, - 26, 27, 25, 26, 27, 0, 28, 29, 30, 28, - 29, 30, 8, 8, 8, 9, 9, 9, 0, 8, - 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, - 11, 0, 10, 10, 10, 11, 11, 11, 12, 12, - 12, 13, 13, 13, 0, 12, 12, 12, 13, 13, - 13, 13, 14, 15, + 0, 13, 14, 15, 36, 30, 31, 32, 33, 34, + 35, 36, 37, 0, 16, 17, 30, 31, 32, 33, + 34, 35, 36, 37, 30, 31, 32, 33, 34, 35, + 36, 37, 30, 31, 32, 33, 34, 35, 36, 37, + 0, 30, 31, 32, 33, 34, 35, 36, 37, 19, + 19, 19, 19, 19, 19, 19, 19, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, + 15, 0, 15, 8, 8, 8, 8, 8, 8, 9, + 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, + 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, + 12, 12, 12, 13, 13, 13, 13, 13, 13, 0, + 36, 37, }; -static const pcb_ordc_int_t pcb_ordc_check[] = { 41, - 123, 43, 41, 45, 43, 3, 45, 16, 17, 43, - 40, 45, 41, 40, 257, 41, 25, 26, 27, 28, - 29, 30, 31, 32, 125, 41, 257, 44, 41, 41, - 260, 59, 0, 8, -1, 33, -1, -1, 41, -1, - -1, 41, -1, -1, -1, -1, -1, -1, -1, 36, - -1, -1, -1, 40, -1, -1, -1, -1, 45, -1, +static const pcb_ordc_int_t pcb_ordc_check[] = { 36, + 43, 123, 45, 40, 43, 41, 45, 43, 45, 45, + 3, 40, 40, 257, 125, 257, 41, 40, 43, 40, + 45, 40, 44, 260, 41, 41, 43, 59, 45, 0, + 8, -1, 41, -1, 43, -1, 45, -1, -1, -1, + -1, 41, -1, 43, -1, 45, -1, 40, -1, 41, + -1, 43, -1, 45, -1, -1, -1, 41, -1, -1, + -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, + -1, -1, -1, 41, -1, -1, -1, -1, -1, 41, + -1, -1, -1, -1, -1, 41, -1, -1, -1, -1, + -1, 41, -1, -1, -1, -1, -1, 41, -1, -1, + -1, -1, -1, 41, 18, 19, 43, -1, 45, -1, + 24, 25, 26, -1, -1, -1, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 269, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -96,20 +116,18 @@ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 264, 265, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, - 262, 263, 261, 262, 263, -1, 268, 269, 270, 268, - 269, 270, 261, 262, 263, 261, 262, 263, -1, 268, - 269, 270, 268, 269, 270, 261, 262, 263, 261, 262, - 263, -1, 268, 269, 270, 268, 269, 270, 261, 262, - 263, 261, 262, 263, -1, 268, 269, 270, 268, 269, - 270, 258, 259, 260, + -1, 258, 259, 260, 267, 261, 262, 263, 264, 265, + 266, 267, 268, -1, 271, 272, 261, 262, 263, 264, + 265, 266, 267, 268, 261, 262, 263, 264, 265, 266, + 267, 268, 261, 262, 263, 264, 265, 266, 267, 268, + -1, 261, 262, 263, 264, 265, 266, 267, 268, 261, + 262, 263, 264, 265, 266, 267, 268, 261, 262, 263, + 264, 265, 266, 267, 268, 261, 262, 263, 264, 265, + 266, -1, 268, 261, 262, 263, 264, 265, 266, 261, + 262, 263, 264, 265, 266, 261, 262, 263, 264, 265, + 266, 261, 262, 263, 264, 265, 266, 261, 262, 263, + 264, 265, 266, 261, 262, 263, 264, 265, 266, -1, + 267, 268, }; #define pcb_ordc_FINAL 4 #define pcb_ordc_MAXTOKEN 272 @@ -126,8 +144,8 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,"T_ID","T_INTEGER","T_FLOAT","T_QSTR","T_EQ","T_NEQ","T_GE", -"T_IF","T_ERROR","T_INTVAL","T_FLOATVAL","T_LE","T_GT","T_LT","\"||\"","\"&&\"", -0,0,0,0,0,0,0,"illegal-symbol", +"T_LE","T_GT","T_LT","T_AND","T_OR","T_IF","T_ERROR","T_INT","T_STRING",0,0,0,0, +0,0,0,"illegal-symbol", }; static const char *const pcb_ordc_rule[] = { "$accept : file", @@ -144,6 +162,8 @@ "expr : expr T_LE expr", "expr : expr T_GT expr", "expr : expr T_LT expr", +"expr : expr T_AND expr", +"expr : expr T_OR expr", "expr : expr '+' expr", "expr : expr '-' expr", "expr : T_INTEGER", @@ -150,6 +170,9 @@ "expr : T_FLOAT", "expr : T_QSTR", "expr : '$' T_ID", +"expr : T_INT '(' expr ')'", +"expr : T_STRING '(' expr ')'", +"expr : T_FLOAT '(' expr ')'", "stmt_block : '{' statement '}'", "stmt_if : T_IF '(' expr ')' statement", "stmt_error : T_ERROR '(' T_ID ',' T_QSTR ')' ';'", @@ -394,20 +417,20 @@ { yyctx->val.un.tree = binop(PCB_ORDC_LT, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } break; case 14: -#line 105 "../src_plugins/order/const_gram.y" - { yyctx->val.un.tree = binop(PCB_ORDC_ADD, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } +#line 104 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = binop(PCB_ORDC_AND, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } break; case 15: -#line 106 "../src_plugins/order/const_gram.y" - { yyctx->val.un.tree = binop(PCB_ORDC_SUB, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } +#line 105 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = binop(PCB_ORDC_OR, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } break; case 16: -#line 108 "../src_plugins/order/const_gram.y" - { yyctx->val.un.tree = NULL; } +#line 107 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = binop(PCB_ORDC_ADD, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } break; case 17: -#line 109 "../src_plugins/order/const_gram.y" - { yyctx->val.un.tree = NULL; } +#line 108 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = binop(PCB_ORDC_SUB, yyctx->stack.l_mark[-2].un.tree, yyctx->stack.l_mark[0].un.tree); } break; case 18: #line 110 "../src_plugins/order/const_gram.y" @@ -418,18 +441,38 @@ { yyctx->val.un.tree = NULL; } break; case 20: -#line 116 "../src_plugins/order/const_gram.y" - { yyctx->val.un.tree = yyctx->stack.l_mark[-1].un.tree; } +#line 112 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = NULL; } break; case 21: -#line 119 "../src_plugins/order/const_gram.y" +#line 113 "../src_plugins/order/const_gram.y" { yyctx->val.un.tree = NULL; } break; case 22: -#line 123 "../src_plugins/order/const_gram.y" +#line 115 "../src_plugins/order/const_gram.y" { yyctx->val.un.tree = NULL; } break; -#line 445 "../src_plugins/order/const_gram.c" +case 23: +#line 116 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = NULL; } +break; +case 24: +#line 117 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = NULL; } +break; +case 25: +#line 122 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = yyctx->stack.l_mark[-1].un.tree; } +break; +case 26: +#line 125 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = NULL; } +break; +case 27: +#line 129 "../src_plugins/order/const_gram.y" + { yyctx->val.un.tree = NULL; } +break; +#line 488 "../src_plugins/order/const_gram.c" } yyctx->stack.s_mark -= yyctx->yym; yyctx->state = *yyctx->stack.s_mark; Index: const_gram.h =================================================================== --- const_gram.h (revision 36858) +++ const_gram.h (revision 36859) @@ -72,13 +72,15 @@ #define T_EQ 261 #define T_NEQ 262 #define T_GE 263 -#define T_IF 264 -#define T_ERROR 265 -#define T_INTVAL 266 -#define T_FLOATVAL 267 -#define T_LE 268 -#define T_GT 269 -#define T_LT 270 +#define T_LE 264 +#define T_GT 265 +#define T_LT 266 +#define T_AND 267 +#define T_OR 268 +#define T_IF 269 +#define T_ERROR 270 +#define T_INT 271 +#define T_STRING 272 #define pcb_ordc_ERRCODE 256 #ifndef pcb_ordc_INITSTACKSIZE Index: const_gram.y =================================================================== --- const_gram.y (revision 36858) +++ const_gram.y (revision 36859) @@ -53,15 +53,15 @@ /* Generic */ %token T_ID T_INTEGER T_FLOAT T_QSTR -%token T_EQ T_NEQ T_GE +%token T_EQ T_NEQ T_GE T_LE T_GT T_LT T_AND T_OR /* Keywords for builtin functions */ %token T_IF T_ERROR -%token T_INTVAL T_FLOATVAL +%token T_INT T_FLOAT T_STRING %left T_EQ T_NEQ T_GE T_LE T_GT T_LT -%left "||" -%left "&&" +%left T_OR +%left T_AND %left '+' '-' %left '*' '/' '%' %left '!' @@ -101,6 +101,8 @@ | expr T_LE expr { $$ = binop(PCB_ORDC_LE, $1, $3); } | expr T_GT expr { $$ = binop(PCB_ORDC_GT, $1, $3); } | expr T_LT expr { $$ = binop(PCB_ORDC_LT, $1, $3); } + | expr T_AND expr { $$ = binop(PCB_ORDC_AND, $1, $3); } + | expr T_OR expr { $$ = binop(PCB_ORDC_OR, $1, $3); } | expr '+' expr { $$ = binop(PCB_ORDC_ADD, $1, $3); } | expr '-' expr { $$ = binop(PCB_ORDC_SUB, $1, $3); } @@ -109,6 +111,10 @@ | T_FLOAT { $$ = NULL; } | T_QSTR { $$ = NULL; } | '$' T_ID { $$ = NULL; } + + | T_INT '(' expr ')' { $$ = NULL; } + | T_STRING '(' expr ')' { $$ = NULL; } + | T_FLOAT '(' expr ')' { $$ = NULL; } ; /*** statements ***/ Index: const_lex.c =================================================================== --- const_lex.c (revision 36858) +++ const_lex.c (revision 36859) @@ -4,7 +4,7 @@ static const unsigned char pcb_ordc_nfa_1[] = {4,11,3,0,0,0,0,0,32,255,131,0,0,0,40,0,0,0,0,0,3,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,11,3,0,0,0,0,0,40,255,3,32,0,0,0,32,0,0,0,0,0,0,0}; static const unsigned char pcb_ordc_nfa_2[] = {4,3,0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,11,3,0,0,0,0,0,32,255,3,254,255,255,135,254,255,255,7,0,0,0}; static const unsigned char pcb_ordc_nfa_3[] = {4,1,34,6,1,11,3,255,255,255,255,251,255,255,255,255,255,255,255,255,255,255,255,0,7,1,1,34,0,0}; -static const unsigned char pcb_ordc_nfa_4[] = {4,3,0,0,0,0,112,191,0,0,0,0,0,0,0,0,0,56,0}; +static const unsigned char pcb_ordc_nfa_4[] = {4,3,0,0,0,0,48,191,0,8,0,0,0,0,0,0,0,40,0}; static const unsigned char pcb_ordc_nfa_5[] = {4,3,0,38,0,0,1,0,0,0,0,0,0,0,0,0,0,0,11,3,0,38,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* strtree.h BEGIN { */ #ifndef UREGLEX_STRTREE_H @@ -18,7 +18,7 @@ #include #include "ureglex/exec.h" -int pcb_ordc_strings[] = {2,33,69,2,60,57,2,61,74,2,62,63,2,101,46,2,102,22,2,105,39,4,1,108,1,111,1,97,1,116,1,118,1,97,1,108,3,15,4,2,102,96,2,110,85,4,1,114,1,114,1,111,1,114,3,13,4,2,61,79,3,11,4,2,61,82,3,10,4,1,61,3,7,4,1,61,3,6,4,3,9,4,3,8,4,1,116,1,118,1,97,1,108,3,14,4,3,12,4}; +int pcb_ordc_strings[] = {2,33,95,2,38,78,2,60,83,2,61,100,2,62,89,2,101,62,2,102,31,2,105,42,2,115,49,2,124,73,4,1,108,1,111,1,97,1,116,3,18,4,2,102,116,2,110,111,4,1,116,1,114,1,105,1,110,1,103,3,16,4,1,114,1,114,1,111,1,114,3,15,4,1,124,3,13,4,1,38,3,12,4,2,61,105,3,11,4,2,61,108,3,10,4,1,61,3,7,4,1,61,3,6,4,3,9,4,3,8,4,1,116,3,17,4,3,14,4}; ureglex_precomp_t pcb_ordc_rules[] = { {pcb_ordc_nfa_0, pcb_ordc_bittab_0, pcb_ordc_chrtyp_0, 1.000000}, {pcb_ordc_nfa_1, pcb_ordc_bittab_0, pcb_ordc_chrtyp_0, 1.000000}, @@ -36,9 +36,12 @@ {ureglex_nfa_str, NULL, NULL, 1.000000}, {ureglex_nfa_str, NULL, NULL, 1.000000}, {ureglex_nfa_str, NULL, NULL, 1.000000}, + {ureglex_nfa_str, NULL, NULL, 1.000000}, + {ureglex_nfa_str, NULL, NULL, 1.000000}, + {ureglex_nfa_str, NULL, NULL, 1.000000}, {NULL, NULL, NULL, 0.0} }; -#define pcb_ordc_num_rules 16 +#define pcb_ordc_num_rules 19 typedef struct pcb_ordc_ureglex_s { ureglex_precomp_t *rules; char buff[256]; @@ -162,21 +165,33 @@ } return UREGLEX_NOP; case 12:{ - return T_IF; + return T_AND; } return UREGLEX_NOP; case 13:{ - return T_ERROR; + return T_OR; } return UREGLEX_NOP; case 14:{ - return T_INTVAL; + return T_IF; } return UREGLEX_NOP; case 15:{ - return T_FLOATVAL; + return T_ERROR; } return UREGLEX_NOP; + case 16:{ + return T_STRING; + } + return UREGLEX_NOP; + case 17:{ + return T_INT; + } + return UREGLEX_NOP; + case 18:{ + return T_FLOAT; + } + return UREGLEX_NOP; } return UREGLEX_NO_MATCH; goto ureglex_ignore; Index: const_lex.h =================================================================== --- const_lex.h (revision 36858) +++ const_lex.h (revision 36859) @@ -54,7 +54,7 @@ #endif /* exec.h END } */ -#define pcb_ordc_num_rules 16 +#define pcb_ordc_num_rules 19 typedef struct pcb_ordc_ureglex_s { ureglex_precomp_t *rules; char buff[256]; Index: const_lex.ul =================================================================== --- const_lex.ul (revision 36858) +++ const_lex.ul (revision 36859) @@ -60,7 +60,7 @@ return T_QSTR; rule chars -regex [(){}|$&,*/+%-] +regex [(){}$,*/+%;-] code return *ULX_BUF; @@ -75,8 +75,11 @@ rulestring <= return T_LE; rulestring > return T_GT; rulestring < return T_LT; +rulestring && return T_AND; +rulestring || return T_OR; rulestring if return T_IF; rulestring error return T_ERROR; -rulestring intval return T_INTVAL; -rulestring floatval return T_FLOATVAL; +rulestring string return T_STRING; +rulestring int return T_INT; +rulestring float return T_FLOAT; Index: constraint.h =================================================================== --- constraint.h (revision 36858) +++ constraint.h (revision 36859) @@ -16,6 +16,8 @@ PCB_ORDC_LE, PCB_ORDC_GT, PCB_ORDC_LT, + PCB_ORDC_AND, + PCB_ORDC_OR, PCB_ORDC_ADD, PCB_ORDC_SUB } pcb_ordc_node_type_t;