c++ - 用于任意编程语言或 IR 的 AST

标签 c++ c yacc lex abstract-syntax-tree

是否可以单独使用 C 或 C++(不借助 YACC 和 LEX 等工具)为任意编程语言或 IR 创建 AST?

如果是,如何实现词法和句法分析?

如果不是,必须增强到 C 或 C++ 才能成功创建 AST 的工具是什么?

希望我把我的疑问说清楚了。如果我的问题看起来含糊不清或断章取意,请指出所需内容。

P.S:我实际上是在尝试为 IR 表示的 LLVM .ll 格式创建 AST。我知道 .ll 是从 AST 派生的。但我正在尝试静态分析实践。所以我正在考虑创建 AST。

最佳答案

在没有解析器生成器的情况下创建解析器的最直接的方法是 recursive descent .它有很好的记录 - 该领域的标准书籍是 The Dragon Book .

可以使用标准字符串操作技术编写一个扫描器,它将文本作为输入并生成一串标记作为输出。

关于c++ - 用于任意编程语言或 IR 的 AST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868938/

相关文章:

c - 这个 C 代码块如何解析为整数赋值?

go - golang中的问题yacc : syntax error: unexpected $end

c - Bison 语法/解析器的多个起点

c++ - 为什么没有更多的迭代器随机访问?

c++ - 如何检查 C++ 中的类型 `T` 是否为 `std::pair<?, bool>`?

c++ - 必须使用普通旧数据的情况示例?

c++ - 寻找提供类似于 Google Go channel 功能的 C 或 C++ 库

c - 指针数组的问题

c - fgets 函数未读取输入中的第一个字符

parsing - 如何用基于语法的解析器替换宏?