使flex工具自动转义换行符

问题描述 投票:0回答:1

我在flex中寻找一个处理转义换行符的规则,并给我一个忽略该换行符的令牌。

例如:

我的lex规范中有一个规则,如:

\"(\.|[^\"])*\"

捕获所有字符串文字。这确实从代码中捕获字符串,如:

Printf("This is literal")

但如果代码如下,它不会给我正确的令牌:

printf("This is \
   literal.")

我可以对我的lex规范进行哪些修改来处理这种情况?

lex lexer lexical-analysis
1个回答
2
投票

(F)lex仅识别令牌。解释他们的内容取决于你。

如果您只是识别字符串文字,则可以使用正则表达式

["]([^"\n]|\\.)*["]

但是如果你想要正确解释字符串文字 - 根据你的语言 - 你需要一个具有适当行动的开始条件。

通常的方法是在看到开头的"时初始化一个类似StringBuffer的对象,然后更改为字符串开始条件。非特殊字符只是附加到StringBuffer;像\n这样的转义序列会在StringBuffer中附加一个合适的字符,而\\\n什么都不做。当关闭引用为iseen时,tje标记实际上与累积的文本一起发送。

© www.soinside.com 2019 - 2024. All rights reserved.