summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorStephen Dolan <mu@netsoc.tcd.ie>2012-11-26 22:23:30 +0000
committerStephen Dolan <mu@netsoc.tcd.ie>2012-11-26 22:24:04 +0000
commit2dad2bdd974e6964e739f9bd09c7ad2c4025d00b (patch)
tree35f0269f8718a42eaf746d15fa8903f4ef3a7822 /parser.y
parentd56370f734a2195fb473b8809f40358b024bb073 (diff)
parent0923c79fee215ee6c01c3d2f822b6267ad29090e (diff)
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y8
1 files changed, 7 insertions, 1 deletions
diff --git a/parser.y b/parser.y
index 92d6f7cd..59d535e6 100644
--- a/parser.y
+++ b/parser.y
@@ -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 '*' '/'
@@ -149,6 +150,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);
@@ -293,6 +295,10 @@ Exp ">=" Exp {
$$ = gen_binop($1, $3, GREATEREQ);
} |
+Exp "contains" Exp {
+ $$ = gen_binop($1, $3, CONTAINS);
+} |
+
Term {
$$ = $1;
}