pyPEG

软件截图:
pyPEG
软件详细信息:
版本: 2.4.1
上传日期: 14 Apr 15
开发: Volker Birk
许可: 免费
人气: 29

Rating: 1.5/5 (Total Votes: 2)

Python是一个很好的脚本语言。它甚至让您使用它自己的解析器和编译器。这也使您可以访问不同的其他解析器用于特殊目的,如XML和字符串模板。
但有时,你可能想有自己的解析器。这是什么pyPEG的。
要获取有关发生了什么快速查看,请阅读这篇文章对如何解析任意语言,pyPEG到XML在我的博客。
什么是PEG?
PEG是指解析表达式语法。这有点像正则表达式上下文无关语言的想法;一个非常明确的解释,你会发现关于PEG的维基百科文章。
带销,你可以描述相同的语言像BNF(而且他们甚至类似)。
什么是解析器解释器?
常见的解析器不使用的PEG和自上而下的分析,但LR(n)或LL(n)和自下而上的分析。这将导致在执行解析器生成器的想法。
由于与LR(n)或LL(N)分析器,你需要计算出一个DFA第一,平时你让解析器发电机为你做这个。其结果是一个解析器实现为您的BNF语法,为所述输入。人们可以调用一个解析器生成的BNF一个编译器解析器实现。
解析器解释器不工作作为一个解释,而不应是这样的编译器。只要给你的语法作为输入,并解析语言描述出来的文字。将不会有生成的程序。
使用pyPEG
这意味着:使用pyPEG是很容易;-)如果你已经知道正则表达式,您将学习如何快速使用pyPEG。
一个小样本
举个例子:想到一个简单的语言像这样的:
功能FAK(N){
 如果(N == 0){// 0! 1定义
 返回1;
 }其他{
 回报N * FAK(N - 1);
 };
}
一个pyPEG该语言看起来像下面的代码(见示例脚本):
高清评论():返回[re.compile(R“//.*”),re.compile(“/*.*?*/”,re.S)
高清文字():返回re.compile(“*?”r'd * .d的* | | D +')
高清符号():返回re.compile(r“W +”)
DEF运算符():返回re.compile(R“+ | - | * | / | ==”)
DEF操作():返回符号,运营商,[文字,functioncall]
高清表达式():返回[文字,操作,functioncall]
与expressionlist高清():返回表达式,-1,(“,”,表达式)
高清returnstatement():return关键字(“回归”),表达
高清ifstatement():return关键字(“如果”),“(”,表达“)”,块,关键词(“其他”),块
DEF声明():返回[ifstatement,returnstatement]“;”
DEF块():返回“{”,-2,声明中,“}”
高清PARAMETERLIST():回归“(”符号,-1,(“,”符号)“。)”
高清functioncall():返回符号“(”的expressionlist“)”
高清功能():return关键字(“功能”),符号,PARAMETERLIST,块
高清simpleLanguage():返回功能

什么在此版本中是新的

  • 在这是一个清理的释放。解析的代码()和撰写()是固定的。

什么是1.4版本,新的

  • 在该版本修复了一些bug与packrat解析

什么是1.3版的新

  • 在由符号更换元组在pyAST名(名单)类,这是相当兼容,但支持在编译器后端更具描述性的代码了。

什么是在1.2版本中新的

  • 在使用Unicode错误的错误处理固定

什么在1.1版本的新

  • 在Unicode支持加入

什么是在0.46版本新

  • 在pyPEG.print_trace为True
  • 在转换pyPEG到Python 3.x的,现在可以无缝地使用2to3的
  • 在该应用可以追溯到可选的语法规则通过设置
  • 在pyPEG将输出此跟踪到stderr。

什么在0.45版本新

  • 在错误修正

什么是在0.44版本新

  • 在pyPEG现在装饰与源文件名和行每个pyAST对象号。

要求

  • 在Python中

类似的软件

Lua
Lua

17 Aug 18

GCC UPC
GCC UPC

11 May 15

Susie
Susie

2 Jun 15

LavaPE
LavaPE

20 Feb 15

显影剂的其他软件 Volker Birk

YML
YML

11 May 15

意见 pyPEG

评论没有发现
添加评论
打开图片!