电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

《320144X1(编译原理)》实验报告

《320144X1(编译原理)》实验报告_第1页
1/18页
《320144X1(编译原理)》实验报告_第2页
2/18页
《320144X1(编译原理)》实验报告_第3页
3/18页
《320144X1(编译原理)》实验报告第一部分 词法分析(实验一必作)实验一 词法分析程序设计与实现实验报告要求详细说明你的程序的设计思路和实现过程。用有限自动机或者文法的形式对词法定义做出详细说明,说明词法分析程序的工作过程,说明错误处理的实现。设计思路:首先把单词进行分类,分为String[] keyword = {"if", "int"};ArrayList biaoshi = new ArrayList<>();ArrayList changshu = new ArrayList<>();String[] yunsuan = {"+", "=", "-", ">", "==", "!="};String[] spilt = {",", "(", ")", "{", "}", ";"};五类,分别是关键字、标识符、常数、运算符以及分隔符。然后逐个字符读入,对于关键字或标识符这类英文单词开始的单词,用空格隔开,其他可以用分隔符、运算符、空格、回车等。读入一个单词后对照一开始的五类分析出是哪一类,符合后交给语法分析器处理。实现过程:import java.io.*;import java.util.ArrayList;/** * Created by 温 睿诚 on 2016/5/11/0011. */public class CiFa { String[] keyword = {"if", "int"}; ArrayList biaoshi = new ArrayList<>(); ArrayList changshu = new ArrayList<>(); String[] yunsuan = {"+", "=", "-", ">", "==", "!="}; String[] spilt = {",", "(", ")", "{", "}", ";"}; //记录结果的符号表 //用什么数据结构呢? //当前单词 StringBuilder str = new StringBuilder(""); //下一个要读的字符 char now; //一个栈 ArrayList stack = new ArrayList<>(); private void put() { stack.add(new Character(now)); } private char pop() { if (stack.size() > 0) { return ((Character) stack.remove(stack.size() - 1)).charValue(); } else { return 0; } } //错误信息 String errorMsg; Reader reader = null; public static void main(String[] args) { CiFa cifa = new CiFa(); cifa.fenXi(args[0]); } private void fenXi(String filename) { //读取文件 File file = new File(filename); try { reader = new InputStreamReader(new FileInputStream(file)); } catch (FileNotFoundException e) { System.out.println("读取文件字符失败!"); e.printStackT...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

《320144X1(编译原理)》实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部