PL/0语言词法及语法分析系统的设计与实现
2007-03-15 21:55:30 来源:WEB开发网本文示例源代码或素材下载
摘要:本文介绍了一个PL/0语言的词法及语法分析系统的设计与实现
关键词:循环分支 递归下降 管道 输出重定向
现在的编译系统都是IDE(Integrated Development Environment)和编译器独立实现,他们之间通过管道通信,本系统也采用这一方法来实现。我首先给出本文中的PL/0语言的文法:
PL/0语言的BNF描述(扩充的巴克斯范式表示法)<prog> → program <id>;<block>
注释:
<block> → [<condecl>][<vardecl>][<proc>]<body>
<condecl> → const <const>{,<const>}
<const> → <id>:=<integer>
<vardecl> → var <id>{,<id>}
<proc> → procedure <id>(<id>{,<id>});<block>{;<proc>}
<body> → begin <statement>{;<statement>}end
<statement> → <id> := <exp>
|if <lexp> then <statement>[else <statement>]
|while <lexp> do <statement>
|call <id>[(<exp>{,<exp>})]
|<body>
|read (<id>{,<id>})
|write (<exp>{,<exp>})
<lexp> → <exp> <lop> <exp>|odd <exp>
<exp> → [+|-]<term>{<aop><term>}
<term> → <factor>{<mop><factor>}
<factor>→<id>|<integer>|(<exp>)
<lop> → =|<>|<|<=|>|>=
<aop> → +|-
<mop> → *|/
<id> → l{l|d} (注:l表示字母)
<integer> → d{d} <prog>:程序 ;<block>:块、程序体 ;<condecl>:常量说明 ;<const>:常量;
下面我们先来看看词法及语法分析器的设计与实现。词法分析采用循环分支方法实现,语法分析采用递归下降来实现。它们的程序流程图如下:
<vardecl>:变量说明 ;<proc>:分程序 ; <body>:复合语句 ;<statement>:语句;
<exp>:表达式 ;<lexp>:条件 ;<term>:项 ; <factor>:因子 ;<aop>:加法运算符;
<mop>:乘法运算符; <lop>:关系运算符
odd:判断表达式的奇偶性。
- ››PLSQL中配置远程数据库连接
- ››PL/SQL Cursor双嵌套的应用
- ››pl/sql获取工作时间
- ››Pl/SQL 从零开始
- ››Places Directory for Android试用
- ››PlayPad 手机音频播放器
- ››Planetbeing解锁iPhone 4最新工作进度更新
- ››Plastic Jelly Styles
- ››Platform engine using Box2D
- ››Platform engine using Box2D – Step 2
- ››Platform engine using Box2D – Step 3
- ››PL/SQL块定义部分之一标量类型