diff options
author | Larry Doolittle <ldoolitt@recycle.lbl.gov> | 2017-11-20 15:12:24 -0800 |
---|---|---|
committer | Larry Doolittle <ldoolitt@recycle.lbl.gov> | 2017-11-20 15:12:24 -0800 |
commit | 88d6a4044e4125ea0a0c011e0a1223e365f9a868 (patch) | |
tree | ebaa7e0c9a2e8f5641134aca3f3a9569552024af /src/vhd2vl.y | |
parent | 49ff6f12d6365de2fd728c63c55c3989b4437a78 (diff) | |
download | vhdl2vl-88d6a4044e4125ea0a0c011e0a1223e365f9a868.tar.gz vhdl2vl-88d6a4044e4125ea0a0c011e0a1223e365f9a868.zip |
Adding support for while loop
Supplied by jeinstei
Labelling of the loop is still unsupported.
Diffstat (limited to 'src/vhd2vl.y')
-rw-r--r-- | src/vhd2vl.y | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/vhd2vl.y b/src/vhd2vl.y index bbf01f1..4c34720 100644 --- a/src/vhd2vl.y +++ b/src/vhd2vl.y @@ -705,7 +705,7 @@ slist *emit_io_list(slist *sl) %token <txt> ARCHITECTURE COMPONENT OF ARRAY %token <txt> SIGNAL BEGN NOT WHEN WITH EXIT %token <txt> SELECT OTHERS PROCESS VARIABLE CONSTANT -%token <txt> IF THEN ELSIF ELSE CASE +%token <txt> IF THEN ELSIF ELSE CASE WHILE %token <txt> FOR LOOP GENERATE %token <txt> AFTER AND OR XOR MOD %token <txt> LASTVALUE EVENT POSEDGE NEGEDGE @@ -1808,6 +1808,19 @@ p_body : rem {$$=$1;} sl=addtxt(sl,"end\n"); $$=addsl(sl,$15); /* p_body:2 */ } +/* 1 2 3 4 5 6 7 8 9 10 11*/ + | rem WHILE exprc LOOP doindent p_body unindent END LOOP ';' p_body { + slist *sl; + sl=addsl($1,indents[indent]); + sl=addtxt(sl,"while "); + sl=addtxt(sl,"("); + sl=addsl(sl,$3); /* exprc */ + sl=addtxt(sl,") begin\n"); + sl=addsl(sl,$6); /* p_body:1 */ + sl=addsl(sl,indents[indent]); + sl=addtxt(sl,"end\n"); + $$=addsl(sl,$11); /* p_body:2 */ + } /* 1 2 3 4 5 6 7 8 9 10 */ | rem CASE signal IS rem cases END CASE ';' p_body { slist *sl; |