BeneficialYam7 | 1 points | Aug 09 2021 22:56:31

大学有一节课是要我们用java写一个编译器,能够用来测试其它语言编写的程序代码中的语法错误。我们很多人都是用函数递归做的,除了用递归的方式,还有其他的解决方案吗?

已经毕业很久了,只是好奇问问。

[-] hidden_Taksaka | 5 points | Aug 10 2021 01:20:45

递归下降会有不必要的函数开销,如果你觉得这样效率下降可以用编译原理课本里的自底向上归约。但实际上,gcc也只是生成AST然后对它后序遍历来进行检查的,所以GCC的parser也是一个典型的递归下降分析过程。递归下降比那些自底向上的语法更好理解,也更好实现。

[-] BeneficialYam7 | 3 points | Aug 09 2021 22:59:11

当初写这个写的头大。就是把其它编程语言的代码存到一个txt文件里面。然后java读取这个txt文件,看看里面的代码有什么语法错误。

[-] Random-32927 | 3 points | Aug 09 2021 23:25:28

都说了 写一个编译器 那解决方法就是写个编译器啊 从context free grammar 写起,再写个parser,如果parse 不了就有语法错误

[-] netking_sunxiaochuan | 2 points | Aug 09 2021 23:58:57

啊这,编译器难道不是用c/cpp写吗

[-] BeneficialYam7 | 2 points | Aug 10 2021 00:19:22

不是真的写一个编译器。只是要测试代码。

[-] Mechanialist | 1 points | Aug 10 2021 00:30:47

什么码农tv

[-] [deleted] | 1 points | Aug 10 2021 00:51:17

[deleted]

[-] Ok-Ad-2513 | 1 points | Aug 10 2021 01:29:16

你要看检查的具体是静态语言还是动态语言,而且要分两次检查,第一次是语法第二次是逻辑。这不是机导基础吗

[-] [deleted] | 1 points | Aug 10 2021 01:36:02

[deleted]

[-] BeneficialYam7 | 1 points | Aug 10 2021 02:32:58

老师让我们测试的是ada语言。

[-] Anxious-Tonight-6014 | 1 points | Aug 10 2021 03:32:06

机器学习

[-] peroxideal | 1 points | Aug 10 2021 17:25:03

这让我想起了抽象老师讲了点mfc基础知识就让你开发一个GIS系统的故事