gpt4 book ai didi

programming-languages - yacc/lex还是手动编码?

转载 作者:行者123 更新时间:2023-12-04 05:59:03 25 4
gpt4 key购买 nike

我正在研究新的编程语言,但是每个人都在使用yaxx/lex来解析代码,但事实并非如此,这使我始终感到困惑。

我的编译器(已经在工作)已经用C++/STL进行了手工编码,我不能说它很复杂或花费了太多时间。它同时具有某种词法分析器和解析器,但它们不是自动生成的。

早些时候,我以相同的方式编写了一个C编译器(不是完整规范)-它能够一次编译该程序,并且所有这些后向引用都可以解析和预处理-这对于yacc/lex绝对是不可能的。

我只是无法说服自己放弃所有这些内容,而开始深入研究yaxx/lex-这可能需要付出很大的努力才能实现,并且可能会引入一些语法限制。

不使用yacc/lex时会错过什么吗?我做恶事吗?

最佳答案

Yacc在某些方面不灵活:

  • 良好的错误处理非常困难(基本上,仅将其算法定义为正确解析正确的字符串,否则,所有赌注都将关闭;这是GCC移至手写解析器的原因之一)
  • 上下文相关性很难表达,而使用手写的递归下降解析器,您可以简单地向函数
  • 添加参数

    此外,我注意到lex/yacc目标代码通常大于手写的递归下降解析器(源代码倾向于相反)。

    我没有使用过ANTLR,所以我不能说在这些方面是否更好。

    关于programming-languages - yacc/lex还是手动编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3593149/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com