【发布时间】:2019-03-31 10:29:23
【问题描述】:
我正在学习编译的工作原理,我的最终目标是编写一个迷你 C 编译器。我还处于这个项目的开始阶段。当我在构建 AST 的扫描器和解析器部件上工作时,我意识到在 i+ +4、i+(+4)、i- -4 或 i-(-4) 这样的表达式中需要空格(或括号)。否则,在i--4 表达式(例如)中,-- 被解释为一元运算符-- 并引发错误。我完全理解其中的原因。这不是问题。
问题如下,之前,我天真地认为空格在 C 中并不那么重要,如果只是出于代码可读性的考虑。但是现在,我想知道是否还有其他类似上述论文的例子?
【问题讨论】:
-
是的,例如你不能写
intmain或return0。它必须是int main/return 0或int(main)/return(0)。 -
我同意这些明显的例子。
标签: c parsing compiler-construction flex-lexer