所有解析器都是用 yacc 或 bison (和 lex/flex)制作的吗?

luk*_*kas 5 c regex linux yacc bison

我认为 Bison 和 Yacc 经常用于解析编程语言的语法。(以及用于标记化的 lex/flex...)

我的问题是:所有编译器都是用这个工具制作的还是有人从头开始编写解析器?(我主要是在没有“编译器编译器”的情况下完成的,但我知道它们)

在没有这些工具的情况下构建解析器是否“有利可图”?

yacc/bison 和 lex/flex 是否有更“开放”且不那么严格的替代方案。是否存在 C 库可以为我做这件事(解析)?是否有另一种选择可以在没有 yacc 的情况下构建解析器,但也不从头开始编写它?

最好的问候卢卡斯

Mik*_*CAT 3

所有解析器都是用 yacc 或 bison (和 lex/flex)制作的吗?

不。例如,GCC 不使用它们。

c - GCC 和 Clang 解析器真的是手写的吗?- 堆栈溢出