在ragel中扫描“带引号的字符串”的正确方法是什么?

时间:2019-12-04 14:04:39

标签: 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

  

带引号的字符串:“ 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

1 个答案:

答案 0 :(得分:0)

这成功了

quoted_string = dquote (any - newline)* dquote ;