我必须用 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
问题只是,如果有更好的类型而不是 Enum