mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
Merge pull request #3470 from jix/smtbmc-faster-parse
smtbmc: Avoid unnecessary string copies when parsing solver output
This commit is contained in:
commit
1bc6ea2366
|
@ -847,31 +847,28 @@ class SmtIo:
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def parse(self, stmt):
|
def parse(self, stmt):
|
||||||
def worker(stmt):
|
def worker(stmt, cursor=0):
|
||||||
if stmt[0] == '(':
|
while stmt[cursor] in [" ", "\t", "\r", "\n"]:
|
||||||
|
cursor += 1
|
||||||
|
|
||||||
|
if stmt[cursor] == '(':
|
||||||
expr = []
|
expr = []
|
||||||
cursor = 1
|
cursor += 1
|
||||||
while stmt[cursor] != ')':
|
while stmt[cursor] != ')':
|
||||||
el, le = worker(stmt[cursor:])
|
el, cursor = worker(stmt, cursor)
|
||||||
expr.append(el)
|
expr.append(el)
|
||||||
cursor += le
|
|
||||||
return expr, cursor+1
|
return expr, cursor+1
|
||||||
|
|
||||||
if stmt[0] == '|':
|
if stmt[cursor] == '|':
|
||||||
expr = "|"
|
expr = "|"
|
||||||
cursor = 1
|
cursor += 1
|
||||||
while stmt[cursor] != '|':
|
while stmt[cursor] != '|':
|
||||||
expr += stmt[cursor]
|
expr += stmt[cursor]
|
||||||
cursor += 1
|
cursor += 1
|
||||||
expr += "|"
|
expr += "|"
|
||||||
return expr, cursor+1
|
return expr, cursor+1
|
||||||
|
|
||||||
if stmt[0] in [" ", "\t", "\r", "\n"]:
|
|
||||||
el, le = worker(stmt[1:])
|
|
||||||
return el, le+1
|
|
||||||
|
|
||||||
expr = ""
|
expr = ""
|
||||||
cursor = 0
|
|
||||||
while stmt[cursor] not in ["(", ")", "|", " ", "\t", "\r", "\n"]:
|
while stmt[cursor] not in ["(", ")", "|", " ", "\t", "\r", "\n"]:
|
||||||
expr += stmt[cursor]
|
expr += stmt[cursor]
|
||||||
cursor += 1
|
cursor += 1
|
||||||
|
|
Loading…
Reference in a new issue