您可以从中派生自己的lexer类
yyFlexLexer
加上你想要的。
如果这样做,您可能希望告诉flex您的类的名称:
%option yyclass="myLexer"
参见的说明
this option
以下内容:
â--yyclass=NAME, %option yyclass="NAME"â
…通知flex您已经
NAME
作为
YYflexlexer公司
,因此flex将把您的操作放在成员函数中
NAME::yylex()
而不是
yyFlexLexer::yylex()
….
以及
note about the
yylex()
成员函数:
virtual int yylex()
执行相同的角色是
年x月x日
对于普通的flex扫描仪:它扫描输入流,使用令牌,直到规则的操作返回值。如果你派生出一个子类
S
从
YYflexlexer公司
并希望访问的成员函数和变量
S
里面
年x月x日
,然后需要使用
%option yyclass="S"
通知flex您将使用该子类而不是
YYflexlexer公司
.在这种情况下,而不是生成
YYflexLexer::YYlex()。
,flex生成
S::yylex()
(并生成一个虚拟对象
YYflexLexer::YYlex()。
那个电话
yyFlexLexer::LexerError()
如果调用)。