diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vhd2vl.l | 1 | ||||
-rw-r--r-- | src/vhd2vl.y | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/vhd2vl.l b/src/vhd2vl.l index 9719206..36ac4ee 100644 --- a/src/vhd2vl.l +++ b/src/vhd2vl.l @@ -126,6 +126,7 @@ int scan_int(char *s); "xor" { return XOR; } "xnor" { return XNOR; } "mod" { return MOD; } +"rem" { return RW_REM; } "**" { return POW; } "event" { return EVENT; } "rising_edge" { return POSEDGE;} diff --git a/src/vhd2vl.y b/src/vhd2vl.y index 682c802..41d6b80 100644 --- a/src/vhd2vl.y +++ b/src/vhd2vl.y @@ -867,7 +867,7 @@ slist *emit_io_list(slist *sl) %token <txt> SELECT OTHERS PROCESS VARIABLE CONSTANT %token <txt> IF THEN ELSIF ELSE CASE WHILE %token <txt> FOR LOOP GENERATE -%token <txt> AFTER AND OR XOR MOD POW +%token <txt> AFTER AND OR XOR MOD RW_REM POW %token <txt> LASTVALUE EVENT POSEDGE NEGEDGE %token <txt> STRING NAME RANGE NULLV OPEN %token <txt> CONVFUNC_1 CONVFUNC_2 BASED FLOAT LEFT @@ -906,7 +906,7 @@ slist *emit_io_list(slist *sl) %left XOR %left XNOR %left AND -%left MOD +%left MOD RW_REM /* Comparison: */ %left '<' '>' BIGEQ LESSEQ NOTEQ EQUAL %left '+' '-' '&' @@ -2357,6 +2357,7 @@ expr : signal { | expr '*' expr {$$=addexpr($1,'*'," * ",$3);} | expr '/' expr {$$=addexpr($1,'/'," / ",$3);} | expr MOD expr {$$=addexpr($1,'%'," % ",$3);} + | expr RW_REM expr {$$=addexpr($1,'%'," % ",$3);} | NOT expr {$$=addexpr(NULL,'~'," ~",$2);} | expr AND expr {$$=addexpr($1,'&'," & ",$3);} | expr OR expr {$$=addexpr($1,'|'," | ",$3);} |