[template-glib] expr-parser.y: separate boolean operations



commit 589f8df419f06c7a17cbda1c0e81aed36628f53b
Author: Christian Hergert <chergert redhat com>
Date:   Fri May 6 11:42:40 2022 -0700

    expr-parser.y: separate boolean operations

 src/tmpl-expr-parser.y  | 5 +++++
 src/tmpl-expr-scanner.l | 6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/src/tmpl-expr-parser.y b/src/tmpl-expr-parser.y
index 06a72d7..62c28a6 100644
--- a/src/tmpl-expr-parser.y
+++ b/src/tmpl-expr-parser.y
@@ -26,6 +26,7 @@
   TmplExprBuiltin fn;  /* builtin call */
   int b;               /* boolean */
   int cmp;             /* comparison */
+  int boolcmp;         /* boolean comparison */
 }
 
 %{
@@ -126,6 +127,7 @@ add_to_list (TmplExpr *stmt,
 %token NOP
 
 %left <cmp> CMP
+%left <boolcmp> BOOLCMP
 %right '='
 %left '+' '-'
 %left '*' '/'
@@ -202,6 +204,9 @@ list: /* nothing */ { $$ = NULL; }
 exp: exp CMP exp {
     $$ = tmpl_expr_new_simple ($2, $1, $3);
   }
+  | exp BOOLCMP exp {
+    $$ = tmpl_expr_new_simple ($2, $1, $3);
+  }
   | exp '+' exp {
     $$ = tmpl_expr_new_simple (TMPL_EXPR_ADD, $1, $3);
   }
diff --git a/src/tmpl-expr-scanner.l b/src/tmpl-expr-scanner.l
index 3ed530a..c203b7a 100644
--- a/src/tmpl-expr-scanner.l
+++ b/src/tmpl-expr-scanner.l
@@ -64,8 +64,10 @@ TmplExprParser *parser = yyextra;
 "==" { yylval->cmp = TMPL_EXPR_EQ;  return CMP; }
 ">=" { yylval->cmp = TMPL_EXPR_GTE; return CMP; }
 "<=" { yylval->cmp = TMPL_EXPR_LTE; return CMP; }
-"||" { yylval->cmp = TMPL_EXPR_OR; return CMP; }
-"&&" { yylval->cmp = TMPL_EXPR_AND; return CMP; }
+
+ /* boolean ops */
+"||" { yylval->boolcmp = TMPL_EXPR_OR; return BOOLCMP; }
+"&&" { yylval->boolcmp = TMPL_EXPR_AND; return BOOLCMP; }
 
  /* keywords */
 "if"       { return IF; }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]