자신 :
import scala.util.parsing.combinator._
object myParser extends JavaTokenParsers {
def mlStringLiteral: Parser[String] = (
"\"\"\"" +
"""(\n|[^"\p{Cntrl}\\]|\\[\\/bfnrt]|\\u[a-fA-F0-9]{4})*""" +
"\"\"\""
).r
}
이 그냥 stringLiteral
사소한 편집의 부부와 함께입니다 : 구분 기호를 "
에서 """
으로 변경하고 문자 일치에 \n
을 추가했습니다.
scala> val s = "\"\"\"This is a multi-\nline string literal.\"\"\""
s: java.lang.String =
"""This is a multi-
line string literal."""
scala> myParser.parseAll(myParser.mlStringLiteral, s)
res0: myParser.ParseResult[String] =
[2.24] parsed: """This is a multi-
line string literal."""
그것은 여러 줄 문자열 리터럴의 스칼라의 구현 (당신은 예를 들어, 문자열 이스케이프 "
를 가질 수 없습니다) 정확히 일치 아니지만, 쉽게 불통 될 수 있으며, 당신을 위해 작동 할 수있다 그 것처럼.
답변 해 주셔서 감사합니다. JavaTokenParsers 대신 StandardTokenParsers를 사용하는 경우 동일한 방법을 사용할 수 있습니까? –
StandardTokenParser와 JavaTokenParser의 차이점에 대해 조금 읽은 후에, 필자는 후자와 함께 결론을 냈습니다. 나는 'StringLiteral'tokenizer를 사용하여 여분의 따옴표를 제거하기 위해 코드를 약간 수정해야했습니다. –