编译原理词法分析

上传人:公**** 文档编号:510371547 上传时间:2023-06-01 格式:DOC 页数:19 大小:442.55KB
返回 下载 相关 举报
编译原理词法分析_第1页
第1页 / 共19页
编译原理词法分析_第2页
第2页 / 共19页
编译原理词法分析_第3页
第3页 / 共19页
编译原理词法分析_第4页
第4页 / 共19页
编译原理词法分析_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《编译原理词法分析》由会员分享,可在线阅读,更多相关《编译原理词法分析(19页珍藏版)》请在金锄头文库上搜索。

1、目 录一实验目的1二实验要求1三实验内容1四实验测试代码及结果10五实验总结17一实验目的通过设计编写一个具体的词法分析程序,加深对词法分析原理的理解。并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。 二实验要求编写一个对输入源程序进行词法分析的程序,该程序能够识别出输入源程序中各个具有独立意义的单词,包括保留字、标识符、无符号整数、运算符、分隔符、未知字符六大类;并输出一个包含各个单词的内部编码及单词符号自身值的报表。 三实验内容所识别语言词法的EBNF表示 := if, int, for, while, do,return, break, continue, d

2、ouble, float, char, byte,const, private, public, protected, class, package,static, void, throw(java语言常用保留字) := | := := + | - | * | / | = | + | -|+= | -= | *= | /=|&| | | := | | = | != | = | & | | := ( | ) | | | | | ; | , | . | | := a | b | c | | z| A | B | | Z := 0 | 1 | 2 | | 9单词种别码保留字:单词种别码均为1。标识符

3、:单词种别码均为2。无符号整数:单词种别均码为3。运算符/判别符:单词种别码均为4。分隔符:单词种别码均为5。未知字符:单词种别码均为6。词法分析程序包含的模块、各模块间的关系图、程序流程图、全局变量、函数接口等。模块:主函数模块:新建类对象,调用各个模块。读文件模块:获取源程序文件的输入流。判断单词种别模块:从文件流中读取字符并且判断读入的单词种别,将结果保存至Token对象中。输出模块:将Tokens对象数组输出并保存到文件。写文件模块:打开文件输出流,将分析结果写入文本文件。模块关系图:Main主函数输入判断字符类别加入Tokens分析输出文件操作程序流程图:类变量内部类,存放二元式cl

4、ass Token public int type;/ 字符类型public String str;/ 字符字符类型常量public static final int OPERATOR1 = 0;public static final int KEY_WORD = 1;public static final int IDENTIFIER = 2;public static final int NUMBER = 3;public static final int OPERATOR = 4;public static final int DELIMITER = 5;public static fi

5、nal int UNKONWN = 6;public static final int END_OF_FILE = 65535;保存关键字、分隔符、运算符的数组private String keyword = new Stringif, int, for, while, do,return, break, continue, double, float, char, byte,const, private, public, protected, class, package,static, void, throw;private String operator = new String=, ,

6、 , , , &, |,=, ;private char delimiter = , , , , , (, ), ., ;, ;类向量,用来存放二元组private Vector tokens = new Vector();文件输入流private FileInputStream fis;文件输出流private FileWriter fw;文件输出路径private String outFilepath;函数接口private boolean compare(String str1, int i)将输入字符串与指定的数据类型数组比较,确定字符串的类型。private boolean isCh

7、ar(char c)判断是否是字符,除了普通字符之外,还有_。public void doAnalysis() throws IOException程序总控函数,在main中调用。接收输入字符并判断。private char dealWithOther(char c) throws IOException处理除数字字母之外的字符情况。private char dealWithNumber(char c) throws IOException处理数字开头的情况。private char dealWithChar(char c) throws IOException处理字符开头的情况。public

8、 void printTokens() throws IOException打印统计结果。public static void main(String args) throws IOException主函数,调用doAnalysis()和printTokens(),完成分析和输出。词法分析程序源代码package study;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOExcep

9、tion;import java.util.Date;import java.util.Vector;public class SrcAnalysis / 此内部类(结构)用于存放识别后的二元式,每个对象存放一个二元式class Token Token(int typ, String st) type = typ;str = st;public int type;public String str;public static final int OPERATOR1 = 0;public static final int KEY_WORD = 1;public static final int

10、IDENTIFIER = 2;public static final int NUMBER = 3;public static final int OPERATOR = 4;public static final int DELIMITER = 5;public static final int UNKONWN = 6;public static final int END_OF_FILE = 65535;/ 保留字、运算符、分隔符private String keyword = new Stringif, int, for, while, do,return, break, continue

11、, double, float, char, byte,const, private, public, protected, class, package,static, void, throw;private String operator = new String=, , , , , &, |,=, ;private char delimiter = , , , , , (, ), ., ;, ;/ 类向量,用来存放二元组private Vector tokens = new Vector();/ 输入流private FileInputStream fis;private FileWri

12、ter fw;private String outFilepath;/ 构造函数,其中program_java.java是输入的C语言代码public SrcAnalysis() throws FileNotFoundException fis = new FileInputStream(new File(program_java.java);outFilepath = out.txt;public SrcAnalysis(String filepath) throws FileNotFoundException fis = new FileInputStream(new File(filepath);/ 将字符串与保留字、运算符、分隔符比较private boolean compare(String str1, int i) switch (i) case KEY_WORD :for (int j = 0; j keyword.length; j+)if (str1.equals(keywordj)return true;break;case OPERATOR :f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号