java编程含有界面以及完整代码〈程序〉→main()〈语句块〉〈语句块〉→{〈语句串〉}〈语句串〉→〈语句〉;
〈语句串〉|〈语句〉;
〈语句〉→〈赋值语句〉|〈条件语句〉|〈循环语句〉〈赋值语句〉→ID=〈表达式〉;〈条件语句〉→if〈条件〉〈语句块〉〈循环语句〉→while〈条件〉〈语句块〉〈条件〉→(〈表达式〉〈关系符〉〈表达式〉)〈表达式〉→〈表达式〉〈运算符〉〈表达式〉|(〈表达式〉)|ID|NUM〈运算符〉→+|-|*|/〈关系符〉→<|<=|>|>=|=|!>word.wordList包(存储了关键字):word:此类是定义了存储关键字的结构:包括String型的关键字,和int型的识别符。
wordList:此类存储了29个关键字,在构造函数中初始化。
2、word包(进行词法分析)中:basicFunction:此类定义了做词法分析的基本函数:GetChar()将下一输入字符读到ch中,搜索知识器前移一个字符位置GetBC();
检查ch中的字符是否为空白。
若是,则调用GetChar直至不是字符为止Concat();
将ch中的字符连接到strToken之后IsLetter();
判断ch中的字符是否为字母IsDigit();
判断ch中的字符是否为数字Reserve();
对strToken中的字符创查找保留字表,若是则返回它的编码,否则返回0Retract();
将搜索指示器回调一个字符位置RetractStr();
将strToken置空lexAnalysis:此类是用来进行词法分析,将分析后的单词存入word数组中,(注:在词法分析中,若是一串字母,则认为是ID,若是数字,则认为是NUM。
存储的时候识别符分别存ID与NUM的识别符,但是内容仍然是自己的内容)其中的wordAnalysis函数就是词法分析函数(具体实现请看后面的重要函数分析)3、stack包(定义栈)中:栈是通过链表来定义的,因此StringListElement:次类定义了链表的每一个节点StringStrack:此类定义了栈,其中有长度属性,有函数:Top();用来取得栈顶Push();
压栈Pop();
出栈4、sentence包(语法分析)中:juzi:定义了文法的句子的结构:key(左边部分)content[](右边推出的部分)lo(长度)grammar:存储了文法的27个关系式AnalysisFB:定义了分析表的存储结构AnalysisF:存储分析表SentenceAnalysis:语法分析JuProduction(wordw):此函数是用来判断在当前栈与输入串的情况下,用哪一个产生式,返回产生式在数组中的下标 若输入串的第一个字符与栈顶字符相同则表示可以规约,则返回-1;
若不能过用产生式,则返回-2;
AnalysisBasic(wordw):此函数是分布进行语法分析,对栈操作 *根据所需要的产生式对符号栈进行操作 *返回0表示规约;
返回1表示移进;
否则表示输入串不是文法的句子5.Main包(主界面)中Main:此类定义了图形界面
2024/4/19 1:25:48 3.25MB 词法分析器及语法分析器
1
java实现的C语言(部分文法)简单编译器,包括词法分析、语法分析、语义分析,输出四元式,有详细文档
2024/3/10 22:38:33 733KB 编译器 java
1
对于给定的文法,根据first集以及follow集构造LL(1)分析表。
输入语句,进行分析
2024/3/10 21:44:08 6KB 编译
1
编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。
可通过不同的文法(通过数据表现)进行测试。
给定算术表达式文法,编写程序。
测试数据:1.算术表达式文法E→TE’E’→+TE’|-TE’|εT→FT’T’→*FT’|/FT’|%FT’|εF→(E)|id|num给定一符合该文法的句子,如id+id*id#,运行预测分析程序,给出分析过程和每一步的分析结果。
2024/2/11 1:24:16 3KB 编译原理 预测分析表 c++
1
这是我做的编译原理简单优先文法判定和分析器的构造。
包括第一章概述 31.1项目背景 31.2设计目的 31.3实验环境与开发工具 31.4C++语言 4第二章需求分析 52.1问题陈述 52.1.1简单优先文法 52.1.2简单优先文法的定义 62.1.3简单优先文法的算法 62.1.4简单优先分析法的操作步骤 62.2需要完成的功能 72.2.1判定输入的文法是否是简单优先文法 72.2.2构造文法的简单优先关系矩阵 72.3分析器的构造 7第三章逻辑设计 93.1系统的组织与基本工作流程 93.2总体结构逻辑结构图 9第思章软件功能设计 114.1软件功能分析 114.1.1判定文法是否为简单优先文法 114.1.2查找分析文法优先关系相等 124.1.3查找分析文法中小于的关系 144.1.4查找分析文法中大于的关系 154.1.5构造文法的简单优先关系矩阵 16第五章界面设计 185.1用户输入文法界面 195.2优先矩阵的初始状态 205.3文法中等于关系 215.4小于关系 225.5大于关系 235.6优先关系矩阵 25小结 27参考文献 28附录 29
2024/2/8 13:33:44 337KB 编译原理 课程设计 概要 引言
1
LR(0)文法分析器(LR(0)grammarparser)对于实现整个编译器而言,语法分析器是整个过程的核心部分,同时对构造整个编译器起到了关键作用,对程序的进一步扩展,以后有机会涉及对编译器的编写而言,将会是很容易便上手,当然,对于复杂的文法,复杂的语言而言,需要对文法的识别进一步扩展
2024/2/7 0:46:11 4.29MB 编译原理 文法分析 LR(0) 分析器
1
和附录上是一模一样的,适合初学者,java代码,简单易懂。
直接导入即可使用。
注意:其编译的对象即语法并非C语言,而是附录中定义的文法,请自行看书理解。
2024/1/30 18:53:38 51KB 龙书 附录 编译器前端 源码
1
编译原理实验的语法分析器lr1只有一个main.java差不多900行(加上注释)有详细的注释如有问题可切磋改进由于老师给的是Pascal的文法当然也可自行修改出错处理不是很完善,$表示空,#表示结束符注意文法要有适当的空格,从output.dat文件输入,文件中是词法分析的输出(部分,不影响)
2024/1/23 8:04:56 24KB lr1 java 语法分析器
1
(1)设计语法制导翻译生成表达式的四元式的算法;
(2)编写代码并上机调试运行通过。
·输入——算术表达式·输出——语法分析结果相应的四元式序列(3)本实验已给出递归子程序法的四元式属性翻译文法的设计,鼓励学生在此基础上进行创新,即设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文法,使用扩展的语法分析器实现语法制导翻译。
2024/1/17 10:47:11 202KB 中间代码生成器 设计 实验报告 代码
1
Pascal文法子集的词法分析器和语法分析器,在vc++6.0下运行成功,c语言编写
2023/12/20 1:41:25 7KB 编译原理
1
共 161 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡