2013-03-13 75 views
1

我正在用flex寫一個簡單的掃描器。我希望掃描儀在看到關鍵字「int」時打印出「看到的整數類型」。以下兩種方式有什麼區別?flex中的引號「」

1路:

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

第二個辦法:

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

那麼,有沒有寫if"if"之間的差異?另外,例如,當我們看到==運營商時,我們會打印一些內容。在flex文件中寫入=="=="有什麼區別?

回答

2

在這些特定情況下沒有區別 - 引號(")只是告訴lex不要解釋引用字符串中的任何特殊字符(例如,用於正則表達式),但如果沒有涉及特殊字符, 「T事:

[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"); 

字符是特殊的,意味着什麼報價的不同之外包括.*+?|^$<>[](){}/。其中一些只有在某些地方出現時才具有特殊含義,但如果要匹配文字字符,則無論它們出現的位置如何,它們通常都會更清楚地引用它們。

+0

謝謝,如果你在這裏,請讓我知道,我還有一個小問題 – yrazlik 2013-03-13 22:48:22