1 / 32
文档名称:

中南大学软件学院编译原理实验报告样稿.docx

格式:docx   大小:211KB   页数:32页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

中南大学软件学院编译原理实验报告样稿.docx

上传人:业精于勤 2020/11/15 文件大小:211 KB

下载得到文件列表

中南大学软件学院编译原理实验报告样稿.docx

文档介绍

文档介绍:《34X1(编译原理)》
试验汇报
项目名称 编译原理
专业班级 软件工程1403
学 号
姓 名 温睿诚
试验成绩:
批阅老师:
年 月 日
第一部分 词法分析(试验一必作)
试验一 词法分析程序设计和实现
试验汇报要求
具体说明你程序设计思绪和实现过程。用有限自动机或文法形式对词法定义做出具体说明,说明词法分析程序工作过程,说明错误处理实现。
设计思绪:
首先把单词进行分类,分为
String[] keyword = {"if", "int"};
ArrayList<String> biaoshi = new ArrayList<>();
ArrayList<Integer> changshu = new ArrayList<>();
String[] yunsuan = {"+", "=", "-", ">", "==", "!="};
String[] spilt = {",", "(", ")", "{", "}", ";"};
五类,分别是关键字、标识符、常数、运算符和分隔符。
然后逐一字符读入,对于关键字或标识符这类英文单词开始单词,用空格隔开,其它能够用分隔符、运算符、空格、回车等。
读入一个单词后对照一开始五类分析出是哪一类,符合后交给语法分析器处理。
实现过程:
import .*;
import ;
/**
* Created by 温 睿诚 on /5/11/0011.
*/
public class CiFa {
String[] keyword = {"if", "int"};
ArrayList<String> biaoshi = new ArrayList<>();
ArrayList<Integer> changshu = new ArrayList<>();
String[] yunsuan = {"+", "=", "-", ">", "==", "!="};
String[] spilt = {",", "(", ")", "{", "}", ";"};
//统计结果符号表
//用什么数据结构呢?
//目前单词
StringBuilder str = new StringBuilder("");
//下一个要读字符
char now;
//一个栈
ArrayList<Character> stack = new ArrayList<>();
private void put() {
(new Character(now));
}
private char pop() {
if (() > 0) {
return ((Character) (() - 1)).charValue();
} else {
return 0;
}
}
//错误信息
String errorMsg;
Reader reader = null;
public static void main(String[] args) {
CiFa cifa = new CiFa();
(args[0]);
}
private void fenXi(String filename) {
//读取文件
File file = new File(filename);
try {
reader = new InputStreamReader(new FileInputStream(file));
} catch (FileNotFoundException e) {
("读取文件字符失败!");
();
}