4
我使用Python Parsimonious Parser試圖爲我設計的簡單語言構建解釋器。我看了這個非常有用的tutorial video,現在我正在慢慢修改代碼以符合我自己的規則。我卡上的分配規則最初定義爲:簡潔解析器 - 試圖解析賦值語法的錯誤
def assignment(self, node, children):
'assignment = lvalue "=" expr'
lvalue, _, expr = children
self.env[lvalue] = expr
return expr
我用下面的語法修改規則略有:
def assignment(self, node, children):
'assignment = "SET" lvalue "," expr'
_, lvalue, _, expr = children
self.env[lvalue] = expr
return expr
我想解析器評估SET a, 7
例如,同作爲a = 7
並將值7
綁定到名稱a
。然而,當我嘗試分析它,我從圖書館吝嗇得到這個錯誤:
parsimonious.exceptions.IncompleteParseError: Rule 'program' matched in its
entirety, but it didn't consume all the text. The non-matching portion of
the text begins with 'SET a, 7' (line 1, column 1).
我是相當新的解析/文法和我完全不知道我是否正確定義的規則。希望有更多解析/練習經驗的人能夠幫助我正確定義規則並解釋我出錯的地方。也許也可以解釋一下Parsimonious的錯誤嗎?
注意:_是另一個規則,定義爲「_ =〜」\ s *「'(即不確定的空格)。 –