diff options
author | Rodrigo Alejandro Melo <rmelo@inti.gob.ar> | 2017-11-22 14:35:09 -0300 |
---|---|---|
committer | Rodrigo Alejandro Melo <rmelo@inti.gob.ar> | 2017-11-22 14:35:09 -0300 |
commit | dfd920bf774a5d488aaed8a5269296bc86ed42c4 (patch) | |
tree | f6251a4263ed368b6e41606b13c2f3f2413dbf14 | |
parent | 9023ec57a1d34bffd6d331a26877dacd37d5ca4f (diff) | |
download | vhdl2vl-dfd920bf774a5d488aaed8a5269296bc86ed42c4.tar.gz vhdl2vl-dfd920bf774a5d488aaed8a5269296bc86ed42c4.zip |
Supports for exponentiation at the lex layer
-rw-r--r-- | src/vhd2vl.l | 1 | ||||
-rw-r--r-- | src/vhd2vl.y | 9 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/vhd2vl.l b/src/vhd2vl.l index d2cda55..b4de189 100644 --- a/src/vhd2vl.l +++ b/src/vhd2vl.l @@ -122,6 +122,7 @@ void getbasedstring(unsigned skip); "xor" { return XOR; } "xnor" { return XNOR; } "mod" { return MOD; } +"**" { return POW; } "event" { return EVENT; } "rising_edge" { return POSEDGE;} "falling_edge" { return NEGEDGE;} diff --git a/src/vhd2vl.y b/src/vhd2vl.y index 559be68..c553e85 100644 --- a/src/vhd2vl.y +++ b/src/vhd2vl.y @@ -740,7 +740,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 +%token <txt> AFTER AND OR XOR MOD POW %token <txt> LASTVALUE EVENT POSEDGE NEGEDGE %token <txt> STRING NAME RANGE NULLV OPEN %token <txt> CONVFUNC_1 CONVFUNC_2 BASED FLOAT LEFT @@ -784,6 +784,7 @@ slist *emit_io_list(slist *sl) %left '<' '>' BIGEQ LESSEQ NOTEQ EQUAL %left '+' '-' '&' %left '*' '/' +%left POW %right UMINUS UPLUS NOTL NOT %error-verbose @@ -2219,7 +2220,7 @@ expr : signal { | '+' expr %prec UPLUS {$$=addexpr(NULL,'p'," +",$2);} | expr '+' expr {$$=addexpr($1,'+'," + ",$3);} | expr '-' expr {$$=addexpr($1,'-'," - ",$3);} - | expr '*' '*' expr {$$=addexpr($1,'*'," ** ",$4);} + | expr POW expr {$$=addexpr($1,'*'," ** ",$3);} | expr '*' expr {$$=addexpr($1,'*'," * ",$3);} | expr '/' expr {$$=addexpr($1,'/'," / ",$3);} | expr MOD expr {$$=addexpr($1,'%'," % ",$3);} @@ -2416,8 +2417,8 @@ simple_expr : signal { | simple_expr '-' simple_expr { $$=addexpr($1,'-'," - ",$3); } - | simple_expr '*' '*' simple_expr { - $$=addexpr($1,'*'," ** ",$4); + | simple_expr POW simple_expr { + $$=addexpr($1,'*'," ** ",$3); } | simple_expr '*' simple_expr { $$=addexpr($1,'*'," * ",$3); |