gpt4 book ai didi

lex - Flex 工具错误

转载 作者:行者123 更新时间:2023-12-05 01:33:05 25 4
gpt4 key购买 nike

/*Regular Definitions*/
delim[\t\n]
WS{delim}+
letter[A-Za-z]
digit[0-9]
id{letter}({letter|digit})*
number{digit}+(\.{digit}+?(E[+-]?{digit}+)?

%%
{WS}{/*do nothing*/}
if{printf("\nIF found");return 0;}
then{printf("\nTHEN found");return 0;}
else{printf("\nELSE found");return 0;}
{id}{printf("\nID found");return 0;}
{number}{printf("\nNUMBER found");return 0;}
"<"{printf("\nLess than symbol found.");return 0;}
"<="{printf("\nLess than or Equals to symbol found.");return 0;}
"="{printf("\nEquals to symbol found.");return 0;}
"<>"{printf("\nNot equals to symbol found.");return 0;}
">"{printf("\nGreater than symbol found.");return 0;}
">="{printf("\nGreater than or equal to symbol found.");return 0;}
%%

在使用flex编译时

G:\>flex Lex.l

我收到以下错误:

"Lex.l", line 14: unrecognized rule

"Lex.l", line 14: unrecognized rule

"Lex.l", line 14: unrecognized rule

"Lex.l", line 14: unrecognized rule

"Lex.l", line 14: unrecognized rule

"Lex.l", line 27: EOF encountered inside an action

有人可以帮我吗?

谢谢。

最佳答案

1.- 用方括号括起交替的每个表达式。

{letter}|{digit}

2.- number 定义中缺少右括号。我在第一个 ? 之前添加了它,但不确定。

number{digit}+(\.{digit}+)?(E[+-]?{digit}+)?

3.- 在规则部分,用空格分隔模式和 C 代码。

{WS}        {/*do nothing*/}

这应该可以工作,或者至少可以编译:

/*Regular Definitions*/
delim[\t\n]
WS{delim}+
letter[A-Za-z]
digit[0-9]
id{letter}({letter}|{digit})*
number{digit}+(\.{digit}+?(E[+-]?{digit}+)?)

%%
{WS} {/*do nothing*/}
if {printf("\nIF found");return 0;}
then {printf("\nTHEN found");return 0;}
else {printf("\nELSE found");return 0;}
{id} {printf("\nID found");return 0;}
{number} {printf("\nNUMBER found");return 0;}
"<" {printf("\nLess than symbol found.");return 0;}
"<=" {printf("\nLess than or Equals to symbol found.");return 0;}
"=" {printf("\nEquals to symbol found.");return 0;}
"<>" {printf("\nNot equals to symbol found.");return 0;}
">" {printf("\nGreater than symbol found.");return 0;}
">=" {printf("\nGreater than or equal to symbol found.");return 0;}
%%

关于lex - Flex 工具错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com