cyk库,包含解析上下文无关语法所需的所有工具。
grammp的Python项目详细描述
格莱美
当前版本:2.0.0
表示形式语法的包。 包含处理语法并解析它们的算法。
安装
如果您使用的是pip
,只需运行以下命令。
pip install grammpy
您也可以从存储库安装包。
git clone https://github.com/PatrikValkovic/grammpy.git
cd grammpy
python setup.py install
用法
定义语法不再需要特殊工具。 你所需要的只是一个ide,你有充分的支持。
让我们用标准的python对象来定义语法。
fromgrammpyimport*fromgrammpy.transformsimportContextFree,InverseContextFreefromgrammpy.parsersimportcykclassNumber:def__init__(self,value):self.value=valuedef__hash__(self):returnhash(Number)classPlusNonterminal(Nonterminal):@propertydefvalue(self):returnself.to_rule.get_value()classPlusRule(Rule):rule=([PlusNonterminal],[PlusNonterminal,'+',PlusNonterminal])defget_value(self):child1=self.to_symbols[0]child2=self.to_symbols[2]returnchild1.value+child2.valueclassRewriteRule(Rule):fromSymbol=PlusNonterminaltoSymbol=Numberdefget_value(self):returnself.to_symbols[0].s.valueg=Grammar(terminals=[Number,'+'],nonterminals=[PlusNonterminal],rules=[PlusRule,RewriteRule],start_symbol=PlusNonterminal)ContextFree.prepare_for_cyk(g,inplace=True)root=cyk(g,[Number(5),'+',Number(3),'+',Number(8)])root=InverseContextFree.reverse_cyk_transforms(root)assertroot.value==16
文档
您可以在doc目录中阅读有关库的更多信息。
示例
您可以在examples目录中查看一些示例。
版本:2.0.0
作者:帕特里克·瓦尔科维奇
许可证:麻省理工学院