[英]Grako left recursion
我正在嘗試使用grako來描述一個簡單的左遞歸語法,但是這樣做很難。
右遞歸確實可以正常工作:
symbol = /[a-z]/ ;
condition = symbol "AND" condition | symbol ;
start = condition $ ;
根據我發現的所有示例,應該以這種方式描述左遞歸:
symbol = /[a-z]/ ;
condition = condition "AND" symbol | symbol ;
start = condition $ ;
但是,它不適用於以下規則:
a AND b AND c
我收到此錯誤:
grako.exceptions.FailedParse: srecur(1:3) Expecting end of text. :
a AND b AND c
^
start
我現在了解到的是規則的第一個字符與symbol
匹配,而不與condition "AND" symbol
匹配,因此grako希望使用它。 但是我的開始規則要求所有角色都被消耗掉。
我嘗試使用許多變通方法,但是找不到合適的變通方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.