1

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

第一种方式:

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

第二种方式:

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

if那么,写和写有区别"if"吗?此外,例如,当我们看到一个==运算符时,我们会打印一些东西。==写入或"=="在 flex 文件中有区别吗?

4

1 回答 1

3

在这些特定情况下没有区别——quotes( ") 只是告诉 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");

引号之外的特殊字符和表示不同含义的字符包括. * + ? | ^ $ < > [ ] ( ) { } /. 其中一些仅在它们出现在某些地方时才具有特殊含义,但是如果您想匹配文字字符,则无论它们出现在何处,通常都会更清楚地引用它们。

于 2013-03-13T22:06:54.653 回答