实验题目:词法分析设计 我幸苦写的程序,老师竟然认为我可能是抄的。女生就写不出来吗!不能忍啊!既然如此,我就将它放上网吧!(其他两个实验报告,我也会放上网的。请不用客气的下载吧) Edited by Magic Yang 完成日期:2013-5-22一、实验目的 通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。 二、实验内容 用 VC++/VB/JAVA 语言实现对 C 语言子集的源程序进行词法分析。通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error” ,然后跳过错误部分继续显示 ;同时进行标识符登记符号表的管理。 以下是实现词法分析设计的主要工作: (1)从源程序文件中读入字符。 (2)统计行数和列数用于错误单词的定位。 (3)删除空格类字符,包括回车、制表符空格。 (4)按拼写单词,并用(内码,属性)二元式表示。(属性值— — token 的机内表示) (5)如果发现错误则报告出错 (6)根据需要是否填写标识符表供以后各阶 段 使用。 三 、数据结 构及生成 的算 法描述 事 先 已 经 构造好 的表 k 数组 ------关 键 字表 1,每 个数组 元素 存 放 一个关 键 字 s 数组 ------分界 符表 2 m 数组 ------算 术 运算 符表 3 r 数组 ------关 系 运算 符表 4 事 先 定义 的表及变 量 ci 数组 ------常 数表 5 id 数组 ------标识符表 6 pint------搜 索 指 示器 strtoken------存 放 构成 单词符号的字符串 row ------行数 line------列数 ch------存 放 最 新 读入源程序字符 instring------存 放 输入源程序 用到的方法 boolean isdigit(char c)---判 断 字符 c 是否是数字 boolean isletter(char c)---判 断 字符 c 是否是字母 boolean isline(char c)---判 断 字符 c 是否是下划 线 boolean remove()---用于在 判 断 关 系 运算 符时,判 断 是否是要再 读一个字符 void getbc()---检 查 空白 直 到读入字符非 空白 void getchar()---读入下一个字符 void retract()---读入前 一个字符 void words()---识别 字符串 void num()---识别 数字串 void show(int i,String s,char a)---各种...