]> mj.ucw.cz Git - umpf.git/commitdiff
numbers added
authorAnicka Bernathova <anicka@anicka.net>
Wed, 2 Jul 2008 13:46:53 +0000 (15:46 +0200)
committerAnicka Bernathova <anicka@anicka.net>
Wed, 2 Jul 2008 13:46:53 +0000 (15:46 +0200)
cond.y

diff --git a/cond.y b/cond.y
index 0155cbd353b24091ca7189972af03819652d23ee..962fcb04c8728f9ba15f69f196432323258eb1ed 100644 (file)
--- a/cond.y
+++ b/cond.y
@@ -10,11 +10,13 @@ void yyerror (char const *);
 
 %union {
        int b;  
+       int n;
        char* str;
 }
 
 %token <str> CONST
-%left EQ
+%token <n> NUM
+%left EQ NEQ GE LE GT LT
 %left '|' '&' '^'
 %left '!'
 %type <b> boo
@@ -29,8 +31,14 @@ line:        '\n'
        | error '\n'            { yyerrok; }
 ;
 
-boo:    CONST EQ CONST         { $$ = ! strcmp($1, $3); } 
-       | boo EQ boo            { $$ = $1 == $3 } 
+boo:    CONST EQ CONST         { $$ = ! strcmp($1, $3); }
+       | CONST NEQ CONST       { $$ = !! strcmp($1, $3); }
+       | NUM EQ NUM            { $$ = $1 == $3 }
+       | NUM NEQ NUM           { $$ = $1 != $3 }
+       | NUM GE NUM            { $$ = $1 >= $3 }
+       | NUM LE NUM            { $$ = $1 <= $3 }
+       | NUM GT NUM            { $$ = $1 > $3 }
+       | NUM LT NUM            { $$ = $1 < $3 }
        | boo '|' boo           { $$ = $1 || $3 }
        | boo '&' boo           { $$ = $1 && $3 }
        | boo '^' boo           { $$ = ($1 || $3) && !($1 && $3) }
@@ -72,6 +80,31 @@ yylex(void)
                return CONST;   
        }
 
+       if (isdigit(c)){
+               ungetc(c,stdin);
+               scanf("%d",&yylval.n);
+               return NUM;
+       }
+
+       if (c == '!'){
+               if ((c = getchar ()) == '=')
+                       return NEQ;
+       }
+
+       if (c == '<'){
+               if ((c = getchar ()) == '=')
+                       return LE;
+               else
+                       return LT;
+       }
+
+       if (c == '>'){
+               if ((c = getchar ()) == '=')
+                       return GE;
+               else
+                       return GT;
+       }
+
        if (c == '='){
                if ((c = getchar ()) == '=')
                        return EQ;