- 博客(10)
- 收藏
- 关注
原创 HNU-非常简单编译器-第9关:对定义语句进行补充——可以进行变量的连续定义(Parser6)
为了完善定义语句的功能,我们还需要使得它能够进行变量的连续定义。
2024-10-24 16:50:57
249
2
原创 HNU-非常简单编译器c1-第8关:新增符号表类进行语义检查(给出这个类的整体框架进行 补充)(Parser5)
如下代码是符号表类VariableTable的一部分,addVariable函数调用了Judge这个函数,我们对变量的语义检查就主要是用Judge完成的,请你补充Judge函数。该部分通过新增的符号表类,实现了更为优雅的语义检查。
2024-10-19 23:35:48
700
原创 HNU-非常简单编译器c1-第7关:利用变量类进行变量的同名检查
众所周知,我们所定义的变量不能够同名,但我们上一关给出的测试数据中却定义了两个同名变量。因此,在本关中我们需要添加这个功能,请你继续对DeclareSentence函数进行补充,通过对vVariable中已经记录的变量进行遍历,若发现当前定义的变量与之前定义的变量同名,则报错。
2024-10-17 16:17:33
315
原创 HNU-非常简单编译器c1-第6关:定义变量类(Parser3)
为了更好的管理我们定义的变量,我们定义了一个变量类,该类记录了变量的类型名称和所在行等信息(类的具体信息请在代码文件中查询)。现在请你对DeclareSentence函数进行补充,在定义了一个变量后记录变量的类型名称等信息。初始化variable类v:(其中t.image等均是是 JavaCC 自动生成的)依此匹配int,变量名,分号,并将变量名的值赋给t。其中,Delaresentence声明了一个。,用于存储变量信息。
2024-10-16 15:49:37
209
原创 HNU-非常简单原型机c1-第5关:添加对变量定义的识别并测试(Parser2)
请你完善如下代码,实现对int型变量的定义语句的识别,并对补全的函数进行测试(测试文档为t002-1.txt),看看是否能够编译成功。的识别功能,使得编译器能够通过 DeclareSentence函数 来识别main函数体中若干个 变量定义.想要做出一个编译器,仅仅识别标识符是不够的,我们还需要根据语言的语法规则,来识别句子。(放代码的文件夹变成了src/parser002,最后编译的时候路径要改一下)该部分 我们将添加 对。
2024-10-15 18:20:46
395
原创 HNU-非常简单编译器c1-第四关:了解SKIP的用法
SKIP 关键字用于指定需要被忽略的文本。当词法分析器遇到与 SKIP 规则匹配的文本时,它将忽略该文本,不会生成对应的 token。通常用于跳过空白字符、注释等对语法分析没有实质影响的文本。我们在编译程序时,有些信息是我们不需要的,比如说代码中的注释。这时候我们便要忽略这些不需要的信息,而SKIP便是做这个工作的。发现在上一关写掉了。
2024-10-14 17:17:44
368
原创 HNU-非常简单编译器c1-第三关:了解TOKEN的用法
这些 token 本身不会被解析器直接使用或者返回,但它们可以在其他规则中被引用。它指定了一种模式,当词法分析器匹配到满足该模式的文本时,将生成对应的 token。的 token 不会作为独立的词法单元暴露给语法规则,而是作为内部的辅助工具。我们要预先设立记录每个标识符的含义,这时候就需要用到javacc中的TOKEN。定义词法分析器中的 token。TOKEN 关键字用于。
2024-10-14 16:18:42
428
原创 HNU-非常简单编译器c1-第2关:介绍javacc的语法规则和测试
TOKEN : /* KEYS 需要放在标识符的定义前面*/TOKEN : /*界符*/" >{}< VOID >< MAIN >< LC >< RC >< LB >< RB >}//识别形如void main(){}的空程序,会自动跳过空格和注释等这定义了一个名为Program()的方法,返回类型是void,表示这个方法不会有返回值。在解析器生成器(如JavaCC)中,这个方法用来匹配某种特定的语言结构(在这里是形如的程序结构)。{}这是方法体为空的定义,表示在Program()
2024-10-14 15:46:03
1107
原创 HNU-非常简单编译器c1
和定义了一个名为Parse的解析器。这部分的目的是为了解析特定的输入语法(虽然在这个例子中并没有实际定义具体的语法规则)。mainParsermain虽然你定义了一个解析器,但在这个示例中并没有使用它来解析任何输入或文本。实际上,你的程序只是简单地输出了。
2024-10-10 19:29:21
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人