ネスト可能な状態について説明したいと思います。これが私が取り組んでいるものです:
expr = ( /[_a-zA-Z][a-zA-Z0-9_-]*/ ) ;
condop = ( "AND" | "OR" ) ;
condition = expr { condop condition } ;
start = condition ;
次のような行で AST を生成できます。
foo AND bar
ここで AST :
[
"foo",
[
[
"AND",
[
"bar",
[]
]
]
]
]
しかし、「bar」の後に空のリストがあります。これは、条件ルールが最後に一致したときと推測されるため、「condop 条件」は空の文字列に値します。ドキュメントhttps://pypi.python.org/pypi/grako/3.16.0によると、{} は空のリストを生成します。
これが起こらないようにする方法はありますか?