Lex字面上匹配一个角括号

时间:2015-02-09 05:03:40

标签: regex lex

我似乎无法使这个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

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

<script type="text/JavaScript">

但是我总是得到语法错误,因为lex决定它无法解析,从而抛出<并解析script作为id

1 个答案:

答案 0 :(得分:1)

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

angle_bracket_start "<"

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

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