编译原理实验报告 班级:软件 0 5 0 1 班 学号:********** 姓名:*** 词法分析器与语法分析器 I. 问题描述 设计、编制并调试一个词法分析子程序,完成识别语言单词的任务; 设计、编制、调试一个语法分析程序,并用它对词法分析程序所提供的单词序列进行语法检查和结构分析。 ii. 设计简要描述 界面需求: 为了更加形象的模拟过程,此实验使用图形界面。要求从图形界面上输入输入串,点击词法分析,可以将词法分析后识别的单词符号显示,点击语法分析,可以将语法分析的堆栈过程显示,并且显示结果(是否是符合文法的句子),清空则可以将所有置空。 功能分析: 1、由用户输入输入串; 2、用户点击“词法分析”,可以将词法分析后识别的单词符号显示。 3、用户点击语法分析,可以将语法分析的堆栈过程显示,并且显示结果(是否是符合文法的句子) 4、用户点击清空,则将界面所有组件置为空 思路描述: 一、设计构想: 本实验决定编写一个简易 C 语言的词法分析器和语法分析器。使其能够识别while,if 等关键字,可以判断赋值语句、条件语句、循环语句。 二、文法分析 1、需要识别的关键字及其识别码有: 关键字 识别码 关键字 识别码 关键字 识别码 main 0 - 11 ; 22 int 1 * 12 > 23 char 2 / 13 < 24 if 3 ( 14 >= 25 else 4 ) 15 <= 26 for 5 [ 16 == 27 while 6 ] 17 != 28 ID 7 { 18 ERROR -1 NUM 8 } 19 = 9 , 20 + 10 : 21 2、文法 〈程序〉→ main()〈语句块〉 〈语句块〉→{〈语句串〉} 〈语句串〉→〈语句〉;〈语句串〉|〈语句〉; 〈语句〉→〈赋值语句〉|〈条件语句〉|〈循环语句〉 〈赋值语句〉→ ID =〈表达式〉; 〈条件语句〉→ if〈条件〉〈语句块〉 〈循环语句〉→ while〈条件〉〈语句块〉 〈条件〉→(〈表达式〉〈关系符〉〈表达式〉) 〈表达式〉→〈表达式〉〈运算符〉〈表达式〉|(〈表达式〉)|ID|NUM 〈运算符〉→+|-|*|/ 〈关系符〉→<|<=|>|>=|=|!> 转化为符号表示: S→ main() K|空 K→ { C } C→Y;C |空 Y→F | T | X F→ ID = B T→ if J K X→ while J K J→( B G B ) B→ B Z B |( B )| ID | NUM Z→ + | - | * | / G→< | <= | > | >= | == | !> 表示含义: S:程序 K:语句块 C:语句串 Y...