2015-02-09 70 views
0

我似乎无法得到这个法正则表达式的工作:莱克斯匹配的角度支架字面上

%{ 
#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"> 

但我总是得到语法错误,因为法认为不能解析,从而抛出了<和分析script作为ID

+1

实在是没有必要在这样的情况下使用的定义。只需将'“<”'放入你的规则中即可。阅读起来更轻松,工作也更少。 – rici 2015-02-09 16:19:20

回答

1

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

angle_bracket_start "<" 

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

没有大括号,它正在寻找在输入文字串angle_bracket_start ...

+0

恩..非常感谢。这显然是一个大脑屁,但我不知道多久,我会卡住没有你的答案.. – fleetC0m 2015-02-09 05:14:38