如何在 lex 中识别扫描仪的字符串文字?
好吧,我一直在尝试在 lex 中找到一个正则表达式,它可以识别输入字符串中类似 C 的字符串文字。例如。在 printf("stackoverflow")
中,“stackoverflow”应被识别为字符串文字。 我一直在尝试以下方法:
"[.]+"
["][.]+["]
\"[.]+\"
[\"][.]+[\"]
"""[.]+"""
这些都不起作用。每次识别的词位都是“alone”,我该怎么办? 提前致谢...
Ok, I have been trying to find a regular expression in lex that will recognize a C-like string literal in an input string. eg. in printf("stackoverflow")
, "stackoverflow" should be recognized as a string literal.
I have been trying the following:
"[.]+"
["][.]+["]
\"[.]+\"
[\"][.]+[\"]
"""[.]+"""
None of these is working. The lexeme recognized each time is " alone. What should I do?
Thanks in advance...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
很简单,试试这个:
编译和运行时,快速测试显示它正确解析字符串,例如
Simple, try this:
When compiled and run, a quick test shows it correctly parses strings like
您可能会发现这些链接很有帮助
ANSI C 语法,莱克斯
规范
ANSI C Yacc 语法
You may find these links helpful
ANSI C grammar, Lex
specification
ANSI C Yacc grammar