gpt4 book ai didi

Scala 外部 DSL——多行字符串文字

转载 作者:行者123 更新时间:2023-12-02 00:18:36 25 4
gpt4 key购买 nike

我正在尝试使用 Scala 解析器组合器定义外部 DSL。我看到“stringLit”标记解析器不支持使用三重引号的多行字符串。在 Scala 解析器组合器世界中是否有类似于 multiLineStringLit 的东西?

提前致谢,基肖尔

最佳答案

据我所知,但编写自己的代码并不难:

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."""

它与 Scala 的多行字符串文字实现不完全匹配(例如,字符串中不能有未转义的 "),但它可以很容易地进行调整,并且可以照原样为您工作。

关于Scala 外部 DSL——多行字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11889081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com