在 ragel 中扫描 "Quoted String" 的正确方法是什么?
What is the correct way to scan "Quoted String" in ragel?
我正在尝试用 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
quoted string : "xyz.123"
但是如果我有如下所示的 2 个带引号的字符串,它会失败
if abc == "0003" {
if xyz == "5003" {
pp
}
}
它扫描两个引用的字符串
quoted string : "0003" {
if xyz == "5003"
有人可以帮我解决这个问题吗?如果有更好的选择
我使用的是以下版本
# ragel -v
Ragel State Machine Compiler version 6.10 March 2017
Copyright (c) 2001-2009 by Adrian Thurston
成功了
quoted_string = dquote (any - newline)* dquote ;
我正在尝试用 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
quoted string : "xyz.123"
但是如果我有如下所示的 2 个带引号的字符串,它会失败
if abc == "0003" {
if xyz == "5003" {
pp
}
}
它扫描两个引用的字符串
quoted string : "0003" { if xyz == "5003"
有人可以帮我解决这个问题吗?如果有更好的选择
我使用的是以下版本
# ragel -v
Ragel State Machine Compiler version 6.10 March 2017
Copyright (c) 2001-2009 by Adrian Thurston
成功了
quoted_string = dquote (any - newline)* dquote ;