![](/img/trans.png)
[英]How do I get my flex/bison grammar parser to give a syntax error for unrecognized tokens
[英]How to recognise single new line tokens in a flex/bison based parser and ignore multiple new lines?
我希望我的基於野牛的解析器能夠識別單個新行標記,例如 '\\n' 但忽略多個新行,因此它們在整個語法中沒有作用,除非在我希望在模式后只包含一個新行的情況下,對於示例在定義后保留一個新行,然后忽略其他新行。
到目前為止,在我的詞法分析器中,我只包含了[\\n] { }
類型的規則,它忽略了新行,但想識別單個新行標記,所以我嘗試了[\\n{1}] {return '\\n';}
但是它似乎沒有按預期工作。
任何幫助表示贊賞。
第一個問題是[\\n{1}]
沒有按照你的想法去做。 這意味着:“識別一個可以是換行符、左大括號、1 或右大括號的字符”。
要解決這個問題,最好了解 Flex 中的優先級標准。
請嘗試以下操作:
[\n] {return '\n';}
[\n]+ {}
單個換行符匹配兩者,但使用上述規則(返回令牌)。 多個換行符匹配第二條規則但不匹配第一條規則(它被忽略)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.