Flex-lexer:将状态定义写入不同的文件

Flex-lexer: Write state defines to a different file

我想在函数(和外部文件)中使用 flex 的启动状态。因此,我需要将状态定义放在外部头文件中。

有什么方法可以将定义写入外部文件吗?

下面的代码显示了在 l 文件中定义的函数中使用状态的示例

lexer.l

%{
   void changeState(){
     YY_START = MY_STATE;
  }
%}

%x MY_STATE

%%

 [ rules ]

%%

以下应该有效:

lexer.l

%x MY_STATE

%%

 [ rules ]

%%
  void changeState(){
     BEGIN(MY_STATE);
  }

不要忘记,上面的部分实际上只是用于声明。定义应该放在最后一部分。这样,它们就位于 #define 部分之后