mirror of https://github.com/YosysHQ/yosys.git
Add pmgen "fallthrough" statement
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
parent
cd5a372cd1
commit
f95853c822
|
@ -315,6 +315,9 @@ state variables used to pass arguments.
|
||||||
|
|
||||||
Subpatterns cann be called recursively.
|
Subpatterns cann be called recursively.
|
||||||
|
|
||||||
|
If a `subpattern` statement is preceded by a `fallthrough` statement, this is
|
||||||
|
equivalent to calling the subpattern at the end of the preceding block.
|
||||||
|
|
||||||
Generate Blocks
|
Generate Blocks
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -141,12 +141,23 @@ def process_pmgfile(f, filename):
|
||||||
|
|
||||||
assert current_pattern is not None
|
assert current_pattern is not None
|
||||||
|
|
||||||
if cmd == "subpattern":
|
if cmd == "fallthrough":
|
||||||
block = dict()
|
block = dict()
|
||||||
block["type"] = "final"
|
block["type"] = "fallthrough"
|
||||||
block["pattern"] = (current_pattern, current_subpattern)
|
|
||||||
blocks.append(block)
|
blocks.append(block)
|
||||||
line = line.split()
|
line = line.split()
|
||||||
|
assert len(line) == 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
if cmd == "subpattern":
|
||||||
|
if len(blocks) == 0 or blocks[-1]["type"] != "fallthrough":
|
||||||
|
block = dict()
|
||||||
|
block["type"] = "final"
|
||||||
|
block["pattern"] = (current_pattern, current_subpattern)
|
||||||
|
blocks.append(block)
|
||||||
|
elif len(blocks) and blocks[-1]["type"] == "fallthrough":
|
||||||
|
del blocks[-1]
|
||||||
|
line = line.split()
|
||||||
assert len(line) == 2
|
assert len(line) == 2
|
||||||
current_subpattern = line[1]
|
current_subpattern = line[1]
|
||||||
subpattern_args[(current_pattern, current_subpattern)] = list()
|
subpattern_args[(current_pattern, current_subpattern)] = list()
|
||||||
|
|
Loading…
Reference in New Issue