Lex 从字面上匹配尖括号

Lex match an angle bracket literally

我似乎无法使这个 lex 正则表达式工作:

%{
#include"y.tab.h"
%}

%option yylineno

/* regular definitions */
angle_bracket_start "<"

%%
angle_bracket_start /*swallow it, do nothing!*/{}
%%

但是当我用

测试它时
lex lex.l
gcc lex.yy.c -lfl

我得到了:

$ ./a.out
<
<    <--- If it prints out the "<", it means lex can't parse it, right?
^C

我问这个是因为我需要一个逐字匹配的正则表达式

<script type="text/JavaScript">

但我总是遇到语法错误,因为 lex 决定它无法解析,因此抛出 < 并将 script 解析为 id

要引用定义,请在名称周围使用大括号 ({}):

angle_bracket_start "<"

%%
{angle_bracket_start}    /*swallow it, do nothing!*/

没有花括号,它正在寻找输入中的文字字符串 angle_bracket_start...