Skip to content

Commit 2878481

Browse files
authored
Merge pull request #54 from JaewonHur/req1
Req1. add parsing rule, integer declaration and initialization.
2 parents 52242eb + 9352c20 commit 2878481

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

pyverilog/vparser/ast.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,15 +272,18 @@ class StringConst(Constant):
272272
class Variable(Value):
273273
attr_names = ('name', 'signed')
274274

275-
def __init__(self, name, width=None, signed=False, dimensions=None, lineno=0):
275+
def __init__(self, name, value=None, width=None, signed=False, dimensions=None, lineno=0):
276276
self.lineno = lineno
277277
self.name = name
278+
self.value = value
278279
self.width = width
279280
self.signed = signed
280281
self.dimensions = dimensions
281282

282283
def children(self):
283284
nodelist = []
285+
if self.value:
286+
nodelist.append(self.value)
284287
if self.width:
285288
nodelist.append(self.width)
286289
if self.dimensions:

pyverilog/vparser/parser.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -682,21 +682,21 @@ def p_declassign_element_delay(self, p):
682682
# Integer
683683
def p_integerdecl(self, p):
684684
'integerdecl : INTEGER integernamelist SEMICOLON'
685-
intlist = [Integer(r,
685+
intlist = [Integer(rname, rvalue,
686686
Width(msb=IntConst('31', lineno=p.lineno(2)),
687687
lsb=IntConst('0', lineno=p.lineno(2)),
688688
lineno=p.lineno(2)),
689-
signed=True, lineno=p.lineno(2)) for r in p[2]]
689+
signed=True, lineno=p.lineno(2)) for rname, rvalue in p[2]]
690690
p[0] = Decl(tuple(intlist), lineno=p.lineno(1))
691691
p.set_lineno(0, p.lineno(1))
692692

693693
def p_integerdecl_signed(self, p):
694694
'integerdecl : INTEGER SIGNED integernamelist SEMICOLON'
695-
intlist = [Integer(r,
695+
intlist = [Integer(rname, rvalue,
696696
Width(msb=IntConst('31', lineno=p.lineno(3)),
697697
lsb=IntConst('0', lineno=p.lineno(3)),
698698
lineno=p.lineno(3)),
699-
signed=True, lineno=p.lineno(3)) for r in p[2]]
699+
signed=True, lineno=p.lineno(3)) for rname, rvalue in p[2]]
700700
p[0] = Decl(tuple(intlist), lineno=p.lineno(1))
701701
p.set_lineno(0, p.lineno(1))
702702

@@ -710,9 +710,14 @@ def p_integernamelist_one(self, p):
710710
p[0] = (p[1],)
711711
p.set_lineno(0, p.lineno(1))
712712

713+
def p_integername_init(self, p):
714+
'integername : ID EQUALS rvalue'
715+
p[0] = (p[1], p[3])
716+
p.set_lineno(0, p.lineno(1))
717+
713718
def p_integername(self, p):
714719
'integername : ID'
715-
p[0] = p[1]
720+
p[0] = (p[1], None)
716721
p.set_lineno(0, p.lineno(1))
717722

718723
# Real

0 commit comments

Comments
 (0)