可以解析C代码的最简单的解析算法是什么?

可以解析C代码的最简单的解析算法是什么?,c,parsing,C,Parsing,有人知道最薄弱的一类广泛使用的解析算法是什么,它可以解析C代码吗?也就是说,C语法是LL(1)、LR(0)、LALR(1)等吗。?我很好奇,因为作为一个辅助项目,我对为其中一个系列编写解析器生成器感兴趣,并希望最终能够为另一个辅助项目解析C代码。似乎是解析器。LALR解析器比LL解析器更健壮,但也更复杂。因此,我怀疑LALR(1)可能是能够解析C代码的最弱的解析算法 除非你真的开始使用你自己的识别器。这可能是你最好的选择。ANTLR使用LL*算法(实际上是LALR)。大多数解析器都是以识别“太多

有人知道最薄弱的一类广泛使用的解析算法是什么,它可以解析C代码吗?也就是说,C语法是LL(1)、LR(0)、LALR(1)等吗。?我很好奇,因为作为一个辅助项目,我对为其中一个系列编写解析器生成器感兴趣,并希望最终能够为另一个辅助项目解析C代码。

似乎是解析器。LALR解析器比LL解析器更健壮,但也更复杂。因此,我怀疑LALR(1)可能是能够解析C代码的最弱的解析算法


除非你真的开始使用你自己的识别器。这可能是你最好的选择。ANTLR使用LL*算法(实际上是LALR)。

大多数解析器都是以识别“太多”的方式构建的,多余的部分会被解析器外部的额外检查拒绝。在这种情况下,正则表达式“[.]*”是解析C语言的最脆弱的解析器,尽管需要进行大量额外的语义检查。一旦这是显而易见的,应该很清楚,您可以使任何解析器生成器进程C,模额外的黑客攻击。(编写一个接受太少作为起点的解析器似乎是完全疯狂的)我又一次被这个问题绊倒了。显而易见的实用答案是“手动编码自上而下递归”。我敢打赌,这就是第一个C解析器是如何构建的(早在YACC:)最有趣的问题是,除了基础之外,它还需要多少黑客性?