diff --git a/sw/tools/fp_lexer.mll b/sw/tools/fp_lexer.mll index 5e9a397cc8..69f8d787de 100644 --- a/sw/tools/fp_lexer.mll +++ b/sw/tools/fp_lexer.mll @@ -23,6 +23,7 @@ rule token = parse | "&&" { AND } | "||" { OR } | ">" { GT } + | "%" { MOD } | ">=" { GEQ } | "+" { PLUS } | "=" { ASSIGN } diff --git a/sw/tools/fp_parser.mly b/sw/tools/fp_parser.mly index 75555fc6e5..02933987aa 100644 --- a/sw/tools/fp_parser.mly +++ b/sw/tools/fp_parser.mly @@ -9,13 +9,12 @@ open Fp_syntax %token COMMA SEMICOLON LP RP LC RC LB RB AND COLON OR %token EQ GT ASSIGN GEQ NOT %token PLUS MINUS -%token MULT DIV - +%token MULT DIV MOD %left AND OR /* lowest precedence */ %left EQ GT ASSIGN GEQ %left PLUS MINUS -%left MULT DIV +%left MULT DIV MOD %nonassoc NOT %nonassoc UMINUS /* highest precedence */ @@ -34,6 +33,7 @@ expression: | expression MINUS expression { CallOperator ("-",[$1;$3]) } | expression MULT expression { CallOperator ("*",[$1;$3]) } | expression DIV expression { CallOperator ("/",[$1;$3]) } + | expression MOD expression { CallOperator ("%",[$1;$3]) } | MINUS expression %prec UMINUS { CallOperator ("-",[$2]) } | NOT expression { CallOperator ("!",[$2]) } | INT { Int $1 }