summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodrigo Alejandro Melo <rmelo@inti.gob.ar>2017-11-22 14:35:09 -0300
committerRodrigo Alejandro Melo <rmelo@inti.gob.ar>2017-11-22 14:35:09 -0300
commitdfd920bf774a5d488aaed8a5269296bc86ed42c4 (patch)
treef6251a4263ed368b6e41606b13c2f3f2413dbf14
parent9023ec57a1d34bffd6d331a26877dacd37d5ca4f (diff)
downloadvhdl2vl-dfd920bf774a5d488aaed8a5269296bc86ed42c4.tar.gz
vhdl2vl-dfd920bf774a5d488aaed8a5269296bc86ed42c4.zip
Supports for exponentiation at the lex layer
-rw-r--r--src/vhd2vl.l1
-rw-r--r--src/vhd2vl.y9
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);
OpenPOWER on IntegriCloud