gpt4 book ai didi

c - flex,定义 char

转载 作者:行者123 更新时间:2023-11-30 14:31:16 24 4
gpt4 key购买 nike

我想定义 char(即 'a AND 'a'),但在检查错误时遇到问题。这是我如何编写规则并检查的:

char         " ' " {letter}

代码

{char}    {
int x =input() ;
//printf("%d",'a');

if(x == 10)
{
return(tCharunterm);
}
else if(x == '\'')
{
return(tChar);
}
else
{
yyerror("char overflow");
}

最后检查一下:

'a
token = tCharunterm, value = "(null)"
'a'
token = tChar, value = "(null)"
'as
char overflow
'asddd
char overflow
token = tIdentifier, value = "ddd"
^Z

最佳答案

一般来说,你永远不想在你的flex代码中直接调用“input”——这是flex用来获取更多输入的例程,所以如果你调用它,你就会从输入的中间提取随机字符并使 Flex 误以为它们不存在。最好的方法是定义多个规则并依靠最长的匹配来获得正确的规则。

"'"{letter}"'"  { return(tChar); }
"'"{letter}"\n" { return(tCharunterm); }
"'"{letter} { yyerror("char overflow"); return(rCharunterm); }

您可能还希望这些规则中的 yylval.ch = yytext[1]; 返回您匹配的实际字符值。

关于c - flex,定义 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728469/

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