WEB开发网
开发学院软件开发VC PL/0语言词法及语法分析系统的设计与实现 阅读

PL/0语言词法及语法分析系统的设计与实现

 2007-03-15 21:55:30 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 摘要:本文介绍了一个PL/0语言的词法及语法分析系统的设计与实现关键词:循环分支 递归下降 管道 输出重定向现在的编译系统都是IDE(Integrated Development Environment)和编译器独立实现,他们之间通过管道通信,PL/0语言词法及语法分析系统的设计与实现

本文示例源代码或素材下载

摘要:本文介绍了一个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:判断表达式的奇偶性。   
  下面我们先来看看词法及语法分析器的设计与实现。词法分析采用循环分支方法实现,语法分析采用递归下降来实现。它们的程序流程图如下:

1 2 3 4  下一页

Tags:PL 词法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接