gpt4 book ai didi

lexical-analysis - 带 C 的词法分析器,新行标记

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

我有4条规则

rule1: match variable 
rule2: match Float
rule3: match Integer
rule4: [ \t] ; //skipping space, tabs
rule5: \n ;

现在我想要一个匹配错误的规则,任何不是 ID、Float、Integer 的东西,例如:"&^()>~...."

所以这是我创建的规则:

. {   printf("found an error:%s\n",yytext);
err_count++;
}

但是有一点不对劲,每当扫描仪跳到下一行时,它都会捕获一个未知的标记。

我的输入:

12+32+22:18,18
99558^8*6
15.~646(5
My output

Found a number:12
Found a error:+
Found a number:32
Found a error:+
Found a number:22
Found a error::
Found a number:18
Found a error:,
Found a number:18
Found a error:
Found a number:99558
Found a error:^
Found a number:8
Found a error:*
Found a number:6
Found a error:
Found a float:15.
Found a error:~
Found a number:646
Found a error:(
Found a number:5

出于调试目的,我尝试通过用方括号括起来来找出 token

. {
printf("Found a error:[%s]\n",yytext);
err_count++;
}

bash show:
Found a number:12
Found a error:[+]
Found a number:32
Found a error:[+]
Found a number:22
Found a error:[:]
Found a number:18
Found a error:[,]
Found a number:18
]ound a error:[
Found a number:99558
Found a error:[^]
Found a number:8
Found a error:[*]
Found a number:6
]ound a error:[
Found a float:15.
Found a error:[~]
Found a number:646
Found a error:[(]
Found a number:5

redirect output to a txt file
Found a number:12
Found a error:[+]
Found a number:32
Found a error:[+]
Found a number:22
Found a error:[:]
Found a number:18
Found a error:[,]
Found a number:18
Found a error:[
]
Found a number:99558
Found a error:[^]
Found a number:8
Found a error:[*]
Found a number:6
Found a error:[
]
Found a float:15.
Found a error:[~]
Found a number:646
Found a error:[(]
Found a number:5

有人知道是什么导致了这个问题吗?谢谢我可以向你保证 rule5:\n ;工作正常,这是证明

I add print to rule5"\n { printf("newline\n"); 

redirect output to a txt file
Found a number:12
Found a error:[+]
Found a number:32
Found a error:[+]
Found a number:22
Found a error:[:]
Found a number:18
Found a error:[,]
Found a number:18
Found a error:[
]
newline
Found a number:99558
Found a error:[^]
Found a number:8
Found a error:[*]
Found a number:6
Found a error:[
]
newline
Found a float:15.
Found a error:[~]
Found a number:646
Found a error:[(]
Found a number:5
Found a error:[
]
newline
Found a variable:T189_10
Found a error:[@]
Found a float:12.2
Found a error:[
]
newline
Found a number:1
Found a variable:ABB21u
Found a error:[=]
Found a variable:ier_
Found a error:[
]
newline
Found a error:[$]
Found a error:[%]
Found a error:[^]

最佳答案

你要找回车符(\r),windows系统是不是常见的在按下回车键的时候插入两个字符,这两个字符是换行符(\n)和回车符(\r ), 以这种方式添加:

rule4: [ \t\r]

它会正常工作。

关于lexical-analysis - 带 C 的词法分析器,新行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551924/

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