summaryrefslogtreecommitdiffstats
path: root/src/vhd2vl.y
diff options
context:
space:
mode:
authorLarry Doolittle <ldoolitt@recycle.lbl.gov>2017-11-20 15:12:24 -0800
committerLarry Doolittle <ldoolitt@recycle.lbl.gov>2017-11-20 15:12:24 -0800
commit88d6a4044e4125ea0a0c011e0a1223e365f9a868 (patch)
treeebaa7e0c9a2e8f5641134aca3f3a9569552024af /src/vhd2vl.y
parent49ff6f12d6365de2fd728c63c55c3989b4437a78 (diff)
downloadvhdl2vl-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.y15
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;
OpenPOWER on IntegriCloud