我正在尝试用go学习ragel,但是我找不到扫描引号字符串的正确方法
这就是我所定义的
dquote = '"';
quoted_string = dquote (any*?) dquote ;
main := |*
quoted_string =>
{
current_token = QUOTED_STRING;
yylval.stringValue = string(lex.m_unScannedData[lex.m_ts:lex.m_te]);
fmt.Println("quoted string : ", yylval.stringValue)
fbreak;
};
以下使用单引号引起来的表达式很好用
if abc == "xyz.123" {
pp
}
如果我扫描以上条件,则得到此printf
带引号的字符串:“ xyz.123”
但是如果我有2个带引号的字符串,如下所示,它将失败
if abc == "0003" {
if xyz == "5003" {
pp
}
}
它同时扫描两个加引号的字符串
带引号的字符串:“ 0003” { 如果xyz ==“ 5003”
有人可以帮我吗?如果有更好的选择
我正在使用以下版本
# ragel -v
Ragel State Machine Compiler version 6.10 March 2017
Copyright (c) 2001-2009 by Adrian Thurston
答案 0 :(得分:0)
这成功了
quoted_string = dquote (any - newline)* dquote ;