返回信息流最近我发明了一种语言。很简单的语言,不是编程用的。比json,xml之类的都简单,跟brainfuck差不多。具体请见
http://forum.byr.edu.cn/wForum/disparticle.php?boardName=Linux&ID=69219&pos=20
根据编译原理课的经验,手写语法分析器一般都用“递归下降”的方法,一个函数分析一个符号,这样不断往下。
但是,做了之后,发现,即使是一个很简单的语言,用这种手写的方法也相当费事。大部分相似的代码不断重复,还不断出错。写完以后基本上就脑残了简直就是brainfuck了。
现代的编程少不了分析一些简单的文件,比如json,yaml,xml什么的。这个语法分析器有没有什么好的方法写呢?
这是一条镜像帖。来源:北邮人论坛 / soft-design / #32512同步于 2009/1/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
有没有用Python做过语法分析器的?来讨论一下
wks
2009/1/16镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
路过……不了解python,倒是用过boost.spirit写brainfuck的分析器……
要避免手写的麻烦的话,我觉得还是用个基于BNF的分析器生成工具是王道(连antigravity都有的python应该也有这样的工具吧)
如果只是讨论怎么手写分析器,当我啥也没说……
莫小看brainfuck,brainfuck也算语言的。
【 在 Solmyr 的大作中提到: 】
: 赞lz的第一句话。。。
: 赞三楼的“连antigravity都有的python”
只用bison做过。只要定义好语法规则,代码就自动出来了,省去了许多无谓的出错过程。
如果可以忍受的话,可以用bison或者yacc弄一个语法器,把语法分析器的结果输出成一个标准格式的文件,最后再以这个中间结果为基础做代码生成工作。