我正在使用新的编程语言,但是我一直对每个人都使用yaxx/lex来解析代码这一事实感到困惑,但我不是。yacc/lex还是手工编码?
我的编译器(已经工作)在C++/STL中被手动编写,我不能说它很复杂或花费太多时间。它既有某种词法分析器也有解析器,但它们不是自动生成的。
早些时候,我用同样的方式编写了一个C编译器(不是完整的spec) - 它能够在1遍中编译程序,所有这些反向引用都可以解析&预处理 - yacc/lex绝对不可能。
我只是不能说服自己放弃所有这些,并开始潜入yaxx/lex--这可能需要相当大的努力来实现,并可能会引入一些语法限制。
当没有使用yacc/lex时,是否有我想念的东西?我做了一件坏事吗?
良好的模块化设计(例如,词法分析器和词法分析器应该完全分离)可以减少这个问题。仍然重要。 – delnan 2010-08-29 11:23:40