【发布时间】:2015-10-02 17:21:59
【问题描述】:
我正在尝试通过为每个标记构建 DFA 并在 C 中模拟它们来为 C 标记编写词法分析器。目前我正在尝试识别字符串文字。根据定义,字符串文字是包含在 " 之间的字符。考虑以下程序:
#include<stdio.h>
int main()
{
char *a = "Hello "
"World";
printf("%s",a);
}
输出:
Hello World
所以现在我很困惑我应该将Hello 和World 视为单独的令牌还是将Hello World 组合为一个令牌?谢谢 ! :)
【问题讨论】:
-
如果空格多于一个,编译器会忽略
-
如果它们之间只有白色字符,则任何两个字符串文字将在编译时连接。
-
@Michi ,C 编译器是否将它们视为多个标记或单个标记?我假设预处理器在标记之前去除所有空格?
-
"Hello"和"World"是两个独立的令牌。这是词法分析的考虑。当它们彼此相邻时,它们代表单个字符串文字的两个部分。这是语义上的考虑——即标记组合在 C 源代码中的含义。 -
@PruthviRaj,是的,这将是一个传统的编译器架构。
标签: c string compiler-construction