簡體   English   中英

在 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

帶引號的字符串:“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

這成功了

quoted_string = dquote (any - newline)* dquote ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM