flex中的引号“”

时间:2013-03-13 20:57:31

标签: compiler-construction flex-lexer lexical-analysis

我在flex中编写一个简单的扫描仪。我希望我的扫描仪在看到关键字“int”时打印出“看到的整数类型”。以下两种方式有什么区别吗?

第一种方式:

%%
int printf("integer type seen");
%%
第二种方式:

%%
"int" printf("integer type seen");
%%

那么,写if还是"if"之间有区别吗?另外,例如,当我们看到==运算符时,我们会打印一些内容。在flex文件中写=="=="之间有区别吗?

1 个答案:

答案 0 :(得分:3)

这些特定情况没有区别 - 引号(")只是告诉lex不解释引用字符串中的任何特殊字符(例如,对于正则表达式),但是如果没有涉及特殊字符,他们无所谓:

[a-z]     printf("matched a single letter\n");
"[a-z]"   printf("matched the 5-character string '[a-z]'\n");
0*        printf("matched zero or more zero characters\n");
"0*"      printf("matched a zero followed by an asterisk\n");

特殊且在引号之外表示不同内容的字符包括. * + ? | ^ $ < > [ ] ( ) { } /。其中一些只有在某些地方出现时才具有特殊意义,但如果你想匹配字面字符,无论它们出现在何处,都可以更清楚地引用它们。