5

言語を作成しようとしていますが、大文字と小文字を区別したくない部分がいくつかあります。これは簡単なことだと思いますが、見つけることができませんでした。

編集:読み直すと、この質問を恥ずかしく思います。これが私が何を意味するかを説明する失敗したテストです。

4

1 に答える 1

15

リテラルの代わりに正規表現を使用してください。

lazy val caseSensitiveKeyword: Parser[String] = "casesensitive"
lazy val caseInsensitiveKeyWord: Parser[String] = """(?i)\Qcaseinsensitive\E""".r

(使用される正規表現構文の詳細については、java.util.Patternのドキュメントを参照してください。)

これを頻繁に行う場合は、Stringをポン引きして構文を単純化できます。

class MyRichString(str: String) {
  def ignoreCase: Parser[String] = ("""(?i)\Q""" + str + """\E""").r
}

implicit def pimpString(str: String): MyRichString = new MyRichString(str)

lazy val caseInsensitiveKeyword = "caseinsensitive".ignoreCase
于 2011-05-21T13:12:46.183 に答える