私は単純な言語を解析しようとしています。問題は、関数呼び出しの解析に伴います。関数呼び出しが式であり、その後に左括弧、引数リスト、および右括弧が続くことを伝えようとしています。私はこのようなものを持っています:
expr = Forward()
iden = Word(alphas+'_', alphanums+'_')
integer = Word(nums)
binop = operatorPrecedence(expr, ...) # irrevelant
call = expr + Literal('(') + delimitedList(expr) + Literal(')')
expr << call | integer | iden
問題は明らかですexpr
。左再帰です。しかし、これを解決するために何をすべきかわかりません。私は右再帰スタイルの文法 (別名 PLY、Yacc など) の経験がありますが、まだ左再帰文法を理解しようとしています。