为小型解析器生成语法转换语法

时间:2017-04-28 15:35:00

标签: c# parsing grammar parser-generator

对于让我为实习做好准备的个人项目,我决定尝试学习更多关于语法和解析器的知识。我想制作一个简单的编译器,并确定了一个看起来像这样的语法。终端是小写的。

P -> S P | epsilon
S -> id assign E semi | print id semi
E -> T E'
E'-> + T E' | - T E' | epsilon
T -> F T'
T' -> * F T' | / F T' | epsilon
F -> X F'
F' -> **X F' | epsilon
X -> (E) | identifier | number

gramamr将允许这样的代码。操作将分配

陈述(=)

添加( - )

乘(*)

除(/)

减( - )

求幂(**)

陈述序列

和打印声明(打印)。还将包括parantheses。

xabc = 3.141592 ; 
y = -2.0 ; 
z = xabc * y - 1 ; 
print z ;

我开始使用名为Tiny Parser Generator的codeproject.com程序。链接在这里。 https://www.codeproject.com/Articles/28294/a-Tiny-Parser-Generator

那里给出的简单例子允许我理解的整数的基本数学函数。我只是希望有人可以给我一些见解,使用这个生成器来尝试将我的语法转换为可以与生成器一起使用的语法,特别是使用变量,赋值语句(即=),并允许多行代码要写。任何帮助将不胜感激,谢谢。

编辑 - 感谢您的评论。我意识到我如何措辞我的问题造成了混乱。我想要做的第一个任务是添加简单表达式2我用链接的网站工具给出的语法,具有变量和赋值语句的能力,如     x = 5;

0 个答案:

没有答案