2016-06-28 80 views
2

某些語言(如SQL)具有不區分大小寫的關鍵字(和/或標識符)。當使用TokenParsers時,我如何處理這種不區分大小寫?一種選擇是生成所有可能的關鍵字組合,但是如果關鍵字很多(在我的情況下,它會導致在whitespace中出現堆棧溢出!),並且在任何情況下都不適用於標識符,這會非常糟糕。如何使用Scala分析器組合器處理不區分大小寫的關鍵字

[自應答在希望別人會不會落得在這呆了一天。]

回答

2

這可以通過覆蓋processIdent(假定關鍵字設定在上情況下,正常的SQL)來實現:

override protected def processIdent(name: String) = { 
    val upperCased = name.toUpperCase 
    if (reserved contains upperCased) Keyword(upperCased) else Identifier(upperCased) 
} 
相關問題