对于简单的编程语言,是否可以使用某种运算符优先解析器或分流码数算法?例如,如果这种语言只有表达式、函数和变量声明。
这种方式的利弊是什么?它能比传统的LL/LR解析器快很多吗?
发布于 2011-03-11 22:40:29
为了回答你的第一个问题,是的,可以将运算符优先解析作为语言的一部分。如果你对此感兴趣,你应该看看Pratt parsers。这通常是自顶向下解析的一种变体,因此它应该与其他解析选项处于相同的性能范围内。一般来说,我认为人们过于关注解析速度。编译器通常会把大部分时间花在优化上,在解析阶段花几毫秒的时间对我来说似乎不值得。
有一种语言magpie,它实现了一个Pratt解析器。所以最大的优点是他们已经在一个库中定义了语言的所有运算符,而不是核心语言。这使得核心语言变得令人难以置信地紧凑和可扩展。然而,缺点是,这使得其他用户总是不得不想知道特定运算符的优先级是什么,因为通常的内置规范可能不适用。
https://stackoverflow.com/questions/5270865
复制相似问题