相关疑难解决方法(0)

从c ++代码中获取人类可读的AST

为了更好地理解C++语言和语法的一些细节,我希望能够编写一个小的C++程序,并查看编译器从中生成的AST.

看起来clang过去有这个功能(-emit-asm),但它已经删除了.

今天有一个简单的方法吗?

c++ abstract-syntax-tree

20
推荐指数
3
解决办法
1万
查看次数

用于打印C/C++文件的所有函数定义的Python脚本

我想要一个python脚本来打印C/C++文件中定义的所有函数的列表.

例如,abc.c定义两个函数:

void func1() { }
int func2(int i) { printf("%d", i); return 1; }
Run Code Online (Sandbox Code Playgroud)

我只想搜索文件(abc.c)并打印其中定义的所有函数(仅限函数名).在上面的例子中,我想打印func1,func2使用python脚本.

python string parsing

7
推荐指数
1
解决办法
8023
查看次数

对C语言的反思?

在脱离背景阅读时,问题标题可能会产生误导.让我先解释一下我想要建立什么.

我正在构建一个脚本,它将需要我的学生编写的100个非常简单的C程序,并检查一些非常基本的属性,如.

  1. 他们是否声明了一个名为'x'的变量,它的类型是'int',依此类推.
  2. 变量'z'的值是多少?

如果这是某种脚本编程语言,那可能会容易得多.我可以简单地使用include或eval然后完成检查.

但是当谈到C编程时,我会说这很难.我该怎么做 ?

c reflection verification parsing abstract-syntax-tree

5
推荐指数
1
解决办法
346
查看次数

GCC/Clang 词法分析器和解析器

我很好奇 C/C++ 词法分析器和解析器如何协同工作。我知道解析器通常需要至少一个标记的前瞻。我的问题是,在生产编译器(例如 gcc 或 clang)中:

1)词法分析器是否先运行,对整个文件进行词法分析,然后让解析器生成 AST。这意味着词法分析器会生成一个标记列表。

或者

2) 词法分析器是否只生成一小部分足以让解析器完成其工作的标记。这意味着词法分析器和解析器轮流运行。

我绝对认为使用选项 1,因为像 C++ 这样的语言有时需要任意前瞻,因为语法不是上下文无关的,但这会占用大量内存。

compiler-construction

4
推荐指数
1
解决办法
2706
查看次数