在Perl中编写部分编译器(用c ++编写)

fat*_*fat 3 c++ compiler-construction perl programming-languages lexer

我想了解更多有关编译器和编程语言的知识,不幸的是我的大学没有提供有关编译器的课程,所以我必须自己做(感谢互联网).

目前我试着理解并为我的语言实现词法分析器,我需要正则表达式.

我习惯于快速编写perl正则表达式脚本,我认为我可以在我的C++词法分析器中嵌入Perl.现在的问题是:

  • 它会导致沉重的开销吗?
  • 我应该尝试与BOOST(或任何其他c ++库良好的gor正则表达式)和平?

谢谢您阅读此篇 :)

Blr*_*rfl 8

在项目中嵌入Perl只是为了做正则表达式,就像试图将大象塞入Miata以获得更多的行李箱空间.(Badump!)

升压是处理正则表达式的一种方式,或者如果你在一个支持POSIX.2的环境中编写,窥视regcomp(),regexec()regfree()功能.

在编写了自己的词法分析器之后,请研究一个名为工具的工具lex,它几乎是开发词法分析器的黄金标准.它有一个合作伙伴YACC,需要开发解析器.两者都经过时间测试,并生成严密,无错误的代码.(GNU-ish环境称这些程序flexbison.)


Ben*_*igt 6

没有理由你不能成为优秀程序员的一部分就是使用正确的工具来完成这项工作,perl非常擅长文本处理.

但是,不要考虑将基于perl的词法分析器填充到C++编译器中(用C++编写,而不是编译C++,我希望),你应该考虑用C++编写perl模块,并让编译器驱动程序用perl编写,执行lexing,填入数据结构,然后调用C++模块的函数来完成编译.