1
當小數點和千位分隔符(十進制分組字符)依賴於語言環境調用系統時,如何編寫正確解析浮點數的Antlr(v4)語法?如何爲本地化數字格式編寫解析器規則?
目前,我嘗試在傳遞給解析器之前交換輸入字符串中的字符,並且在工作時感覺像是一個黑客。有沒有辦法做一個「parametrized」解析器,其中一些東西可以作爲參數傳遞,如這些標記的char值?
當小數點和千位分隔符(十進制分組字符)依賴於語言環境調用系統時,如何編寫正確解析浮點數的Antlr(v4)語法?如何爲本地化數字格式編寫解析器規則?
目前,我嘗試在傳遞給解析器之前交換輸入字符串中的字符,並且在工作時感覺像是一個黑客。有沒有辦法做一個「parametrized」解析器,其中一些東西可以作爲參數傳遞,如這些標記的char值?
解析器和詞法分析器構造算法通常假定字母表是固定的而不是變量。在構建運行時決策時,這是一個非常有用的假設,並且非常清楚語言定義是明確的。
請注意,當嵌入更復雜的上下文時,本地化數字可能會導致含糊不清。例如。在德語中,使用逗號而不是小數點,但是像這樣寫的數字很難用逗號分隔的列表分組。
爲了分解單個數值,可以爲每個本地化變體使用單獨的詞法分析器/分析器,或者可以在單個語言定義中支持多個替代方法。
您可以編寫識別數字的代碼來捕獲這兩種情況,然後在稍後提出「錯誤類型的當前語言環境的數字」錯誤嗎?另一種可能性是使用[語法導入](http://www.antlr.org/wiki/display/ANTLR4/Grammar+Structure#GrammarStructure-GrammarImports),以便您可以擁有「英語」語法和「歐元」語法微妙地調整它,並選擇正確的一個在運行時調用。 – Darien