我必須用flex編譯編譯器。Flex使用常量容器
但我不喜歡給定的代碼,並想讓自己。
lexfile.l:
{%
typedef enum { EQ=0, NE, PLUS, MINUS, SEMICOLON } punctuationType;
typedef enum { PRINT=100, WHILE, IDENT } keywordType;
%}
%%
"!=" { return NEQ; }
"=" { return EQ; }
"+" { return PLUS; }
"-" { return MINUS; }
";" { return SEMICOLON; }
%%
有沒有更好的解決辦法?
我已經搜索了一個解決方案,但另一個解決方案是定義常量。
#define EQ 0
#define NE 1
...
輸出例:
Operator EQ
Operator NE
問題是唯一的,如果有一個更好的類型,而不是枚舉
您是否將這個與野牛一起使用?如果是這樣,你通常在野牛本身定義令牌。 – Josh 2013-04-11 15:14:11