s******u 发帖数: 501 | 1 parsing有用了几十年的现成算法了,像从下到上的LR parsing或者从上到下的LL
parsing,所以算法那块就不用自己去研究了
接下来parsing的library也基本上到处都是,C的bison+yacc,c++的boost spirit,
java的antler,各个常用语言基本都有自己的parsing library
在其次,你这个题目已经有现成的EBNF给你了,用那些library无非就是把这个EBNF照
样写上去,或者改写成某个Domain spcific language,生成代码,自己再处理一下生
成的syntax tree就完事了 |
|
r*********r 发帖数: 3195 | 2 没学过 compiler 的成不了太好的程序员。
学语言最快的就是看 EBNF |
|
s******u 发帖数: 501 | 3 boost spirit用现有的C++语法和工具几乎完美的模拟了EBNF notation。虽然用一个
general purpose language来做一个domain specific language该做的事情是不是合适
本身也有点争议,但是不能否认的是C++有足够的灵活性让他能够担任DSL的功能--很少
有其他的语言能够做到这一点。
另外不要因为你不熟悉或者不理解就简单地下结论说这不是正常人写的,只是你没到这
水平而已 |
|