解析下一行出错



怎么了

因此,我在解析器正确接受多行时遇到了麻烦。


from lark import Lark

class SetLanguageLarkParser():
def __init__(self):
self.setParser = Lark(r"""
start: statement+ 
statement : "DISP" expr ";"-> display
| name "=" expr ";"-> assign
expr : expr "+" rest         -> union
| expr "-" rest      -> differnce
| expr "*" rest      -> cross
| expr "|" rest      -> intersection
| rest
rest : expr
| content | name
content : "{" [ [NUMBER|WORD] ("," [NUMBER|WORD])*] "}"
name : WORD
%import common.WORD
%import common.NUMBER
%import common.WS
%ignore WS
""", start='start')


def main():
data = """
x = {0};
S = {1,2,3};
"""
setLangP = SetLanguageLarkParser()
print(setLangP.setParser.parse(data).pretty())
main()

最终,如果我向解析器提供一个像"S={1,2,3};"它工作得很好,但我给它提供了多个字符串,如
"S={1,2,3};
X={0};">
无法正确解析。我收到的错误是UnexpectedCharacters: No terminal matches 'S' in the current parser context

提前感谢。

看起来我转向Stackoverflow太快了。我把开头改成了"statement"。时,"在解析器初始化🤦‍♂️。谢谢看了一眼的人。

最新更新