自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 HNU-非常简单编译器-第9关:对定义语句进行补充——可以进行变量的连续定义(Parser6)

为了完善定义语句的功能,我们还需要使得它能够进行变量的连续定义。

2024-10-24 16:50:57 249 2

原创 HNU-算法设计与分析实验源码

dysania-z/algorithm-lab (github.com)

2024-10-20 21:36:17 310

原创 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关注的人

提示
确定要删除当前文章?
取消 删除