私はForward()
pyparsingから要素を理解しようとしています。この単純なBNFがあるとします。
identifier =
"a..z,$,_" < "a..z,$,_,0..9" >
package_name =
identifier
/ ( package_name "." identifier )
そして、結果として得られるか、再帰から戻らないjava.lang.String
かのように、単純なパッケージを解析しようとします。java
私はこのようにそれを試しました:
from pyparsing import alphas,alphanums, Word, Forward, ZeroOrMore, Group, Literal
identifier=Word(alphas+"$_",alphanums+"$_")
dot=Literal(".")
package_name = Forward()
definition = package_name+dot+identifier
package_name << Group(identifier+ZeroOrMore(definition))
package_name.parseString("java.lang.String")
[['java']]を出力します
from pyparsing import alphas,alphanums, Word, Forward, ZeroOrMore, Group, Literal
identifier=Word(alphas+"$_",alphanums+"$_")
dot=Literal(".")
package_name = Forward()
definition = identifier^package_name+dot+identifier
package_name << definition
package_name.parseString("java.lang.String")
再帰制限に達します
Forward
このプレースホルダーはどのように機能しますか?