一 需求分析
本工程实现了对PL/0源代码的词法分析,语法分析,语义分析及生成Pcode代码,还对Pcode的代码进行了解释,使其能在Java虚拟机上运行。
功能要求如下:
输入:符合PL/0文法的源程序
输出:P-Code
错误信息。
P-Code指令集。
语法分析部分要求统一使用递归下降子程序法实现。
PL/0文法的EBNF所示:
::=.
::=[][变量说明部分>][]
::= const{,};
::==
::= {}
::={|}
::=var{,};
::= ;{}
::=procedure;
::=||||||||
::=:=
::=[+|-]{}
::={}
::=||’(‘’)‘
::= +|-
::= *|/
::=|odd
::= =|<>||>=
::=ifthen[else]
::= whiledo
::= call
::=begin{;}end
::=repeat{;}until
::=read’(‘{,}’)‘
::=write’(‘{,}’)‘
::=a|b|…|X|Y|Z
::=0|1|2|…|8|9.
二 程序设计
一个经典的编译程序一般包括7个部分:词法分析,语法分析,语义分析及代码生成,代码优化(可省略),代码执行,符号表管理,出错管理。这7个部分之间的关联关系如下图所示:
参考文档和完整的文档和源码下载地址: