alway_comb nested if support
[sv2nmigen.git] / parse_sv.py
index 427f399e7a287b54f99d5173f35e56038fa4eac3..6a153fffe282fa2aafa6f7a762e98809ef11656e 100644 (file)
@@ -27,7 +27,7 @@ from lib2to3.pygram import python_symbols as syms
 
 yacc1_debug = 0
 yacc2_debug = 0
-parse_debug = 0
+parse_debug = 1
 
 
 #from parse_tokens import tokens
@@ -116,13 +116,6 @@ class StatementList:
         self.statements += [s]
 
 
-class PAssign:
-    def __init__(self, l, op, r):
-        self.l = l
-        self.op = op
-        self.r = r
-
-
 # -------------- RULES ----------------
 ()
 
@@ -11869,6 +11862,8 @@ def p_statement_item_1(p):
     #          }
 ()
 
+# TODO: read all statement items
+
 
 def p_statement_item_2(p):
     '''statement_item : K_deassign lpvalue ';' '''
@@ -11927,6 +11922,14 @@ def p_statement_item_6(p):
     if(parse_debug):
         print('statement_item_6', list(p))
 
+        tmp = None
+        if(p[3]):
+            throw(Exception("assert(! current_block_stack.empty());"))
+        else:
+            tmp = p[5]
+
+        p[0] = tmp
+
 
     # { PBlock*tmp;
     #  if (p[3]) {
@@ -12187,6 +12190,8 @@ def p_statement_item_23(p):
     if(parse_debug):
         print('statement_item_23', list(p))
 
+    p[0] = absyn.cond_statement3(p[3], p[5], None)
+
 
     # { PCondit*tmp = new PCondit(p[3], p[5], 0);
     #            FILE_NAME(tmp, @1);
@@ -12200,6 +12205,7 @@ def p_statement_item_24(p):
     if(parse_debug):
         print('statement_item_24', list(p))
 
+        p[0] = absyn.cond_statement3(p[3], p[5], p[7])
 
     # { PCondit*tmp = new PCondit(p[3], p[5], p[7]);
     #            FILE_NAME(tmp, @1);