文档介绍:《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) {
("读取文件字符失败!");
();
}