【发布时间】:2013-08-04 22:10:49
【问题描述】:
我想练习C,所以我决定本着python解释器的精神写一个C解释器。我有一些 C 知识,但我一直是一个边做边学的程序员。
到目前为止,我所拥有的非常简单。只需解析用户的输入,一次一行,并区分以下声明:
int x = 10;
char c = 'a';
我创建了一个结构,该结构表示变量的类型、名称和 ivalue(用于 int 值)和 cvalue(用于 char 值)。还有很多事情要做,但一步一步。
我也可以解析函数调用,例如:
printf("value of x = %d\n, x);
我提取函数的名称,并将 args 存储在 char** args 中。
这听起来很傻,但我想避免为每个标准 c 库函数编写映射器,以便执行对 printf、strstr 或 strcpy 之类的调用。反正有没有这种方法动态调用标准c函数?
另外,非常欢迎对这个东西的设计提出建议。
【问题讨论】:
-
不使用
ctypes? -
@IgnacioVazquez-Abrams 我正在用 C 而不是 python 编写解释器。
-
Quibble:
int x = 10;和char c = 'a';是带有初始化的声明,而不是赋值语句。如果你想实现 C,你需要了解它的语法。 -
@KeithThompson 只是写错了。我代码中的函数实际上叫做 parse_declaration
-
如果这个程序是用 C 编写的,并且解释了 C,那么它不应该被 Python 标记。
标签: c interpreter