
词法分析器和语法分析器的编译原理课程实验报告。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
Java编程包含图形界面以及完整的代码结构,其核心在于`main()`函数块,该函数块由多个语句块构成:{语句串}和{语句串}。每个语句块内部可能包含语句;语句串|语句;语句,这些语句则可以为赋值语句、条件语句或循环语句,并伴随相应的赋值语句。例如,赋值语句采用ID = 表达式;来指定变量的值,条件语句使用 `if` 关键字来判断条件是否成立并执行相应的代码块,循环语句则通过 `while` 关键字实现重复执行,其条件判断基于表达式 (表达式关系符 表达式) 以及最终的表达式、运算符和表达式之间的组合,或者直接使用 ID | NUM 运算符 表达式 或 (表达式) | ID | NUM 运算符。关系符包括 <、<=、>、>=、= 和 !>word.wordList包(用于存储关键字):word:这是一个定义了存储关键字的结构,包含 String 型的关键字和 int 型的识别符。wordList:此类存储了29个关键字,并在构造函数中进行初始化。2、word包(用于词法分析)中:basicFunction:此类定义了进行词法分析的基本函数,包括GetChar() 函数用于读取输入字符并移动搜索器指针;GetBC() 函数用于检查字符是否为空白;Concat() 函数将字符连接到字符串Token之后;IsLetter() 函数用于判断字符是否为字母;IsDigit() 函数用于判断字符是否为数字;Reserve() 函数在保留字表查找匹配项并返回编码或0;Retract() 和 RetractStr() 函数用于调整搜索指针位置和清空字符串Token。lexAnalysis:此类负责进行词法分析,将分析结果存储在 word 数组中。注意在词法分析过程中,连续的字母被认为是 ID,连续的数字被认为是 NUM。识别符分别以 ID 和 NUM 的形式存储其内容。其中的 wordAnalysis 函数是具体的词法分析实现。3、stack包(定义栈)中:栈是通过链表实现的结构。StringListElement:该类定义了链表的每一个节点;StringStrack:此类定义了栈结构,包含长度属性以及 Top() (获取栈顶元素)、Push() (压栈) 和 Pop() (出栈) 等函数。4、sentence包(语法分析)中:juzi 定义了文法的句子结构,采用 key [ ] 的形式表示,其中 key 代表左边部分的语法规则, [] 代表右边推出的部分, lo 表示句子长度, grammar 则存储了文法的27个关系式. AnalysisFB 定义了分析表的存储结构. AnalysisF 存储分析表. SentenceAnalysis 实现语法分析功能. JuProduction(word w):此函数用于根据当前栈与输入串的状态选择合适的产生式,返回产生式在数组中的下标. 如果输入串的第一个字符与栈顶字符相同则表示可以规约,返回 -1; 如果无法使用任何产生式,则返回 -2. AnalysisBasic(word w):此函数执行基本的语法分析操作,对符号栈进行操作. 根据需要产生的规则对符号栈进行操作. 返回0表示规约; 返回1表示移进; 其他值表示输入串不是文法的句子.5.Main包(主界面)中: Main 类定义了图形用户界面的相关功能和元素.
全部评论 (0)


