diff options
author | Stephen Roantree <stroantree@gmail.com> | 2012-10-24 11:42:25 -0700 |
---|---|---|
committer | Stephen Roantree <stroantree@gmail.com> | 2012-10-24 13:50:26 -0700 |
commit | 5e25c2a259d2337d38b730d5dc22e7db67ea88cb (patch) | |
tree | bf0d88fdad29f2fa9ea25a3ae5de73c8ea7c2297 /parser.y | |
parent | 033d9b2fd55b1fef0f17ce91d864c55e07f3ee5d (diff) |
Implemented contains operator
Diffstat (limited to 'parser.y')
-rw-r--r-- | parser.y | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -65,6 +65,7 @@ struct lexer_param; %token SETDEFINEDOR "//=" %token LESSEQ "<=" %token GREATEREQ ">=" +%token CONTAINS "contains" %token QQSTRING_START %token <literal> QQSTRING_TEXT @@ -80,7 +81,7 @@ struct lexer_param; %nonassoc '=' SETPIPE SETPLUS SETMINUS SETMULT SETDIV SETDEFINEDOR %left OR %left AND -%nonassoc NEQ EQ '<' '>' LESSEQ GREATEREQ +%nonassoc NEQ EQ '<' '>' LESSEQ GREATEREQ CONTAINS %left '+' '-' %left '*' '/' @@ -152,6 +153,7 @@ static block gen_binop(block a, block b, int op) { case '>': funcname = "_greater"; break; case LESSEQ: funcname = "_lesseq"; break; case GREATEREQ: funcname = "_greatereq"; break; + case CONTAINS: funcname = "_contains"; break; } assert(funcname); @@ -308,6 +310,10 @@ Exp ">=" Exp { $$ = gen_binop($1, $3, GREATEREQ); } | +Exp "contains" Exp { + $$ = gen_binop($1, $3, CONTAINS); +} | + String { $$ = $1; } | |