在 JavaTokenParsers 中将空格设置为分隔符

2023-12-01

延伸JavaTokenParsers,我有以下内容:

class Foo extends JavaTokenParsers { 
  lazy val check = id ~ action ~ obj

  lazy val id     = "FOO" | "BAR"
  lazy val action = "GET" | "SET"
  lazy val obj = "BAZ" | "BIZ"
}

我原以为空格将充当分隔符。换句话说,当我check成功解析以下表达式:FOO GETBAZ.

val result = parseAll(check, "FOO GETBAZ")
println(result.get)

Result

((FOO~GET)~BAZ)

我如何使用空格作为delimiter,即上面的内容不会成功解析,因为GETBAZ不匹配任何一个action's GET or SET?


JavaTokenParser添加一些方法RegexParsers,但它不会改变的行为literal,它将匹配它的参数,而不用担心它周围的内容。

The skipWhitespace设置也不会对您有帮助,因为它只指定是否忽略空格,而不指定是否需要空格。

你有几个选择。一种是使用带有单词边界的正则表达式:

class Foo extends JavaTokenParsers {
  def word(s: String): Parser[String] = regex(s"\\b$s\\b".r)

  lazy val check = id ~ action ~ obj    

  val id     = word("FOO") | word("BAR")
  val action = word("GET") | word("SET")
  val obj    = word("BAZ") | word("BIZ")
}

Or ident:

class Foo extends JavaTokenParsers {
  def word(s: String): Parser[String] = ident.filter(_ == s)

  lazy val check = id ~ action ~ obj    

  val id     = word("FOO") | word("BAR")
  val action = word("GET") | word("SET")
  val obj    = word("BAZ") | word("BIZ")
}

或者您可以在每个项目之间手动添加空格解析器。

我可能会选择\b解决方案,但这很大程度上取决于品味和偏好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaTokenParsers 中将空格设置为分隔符 的相关文章

  • Play框架:读取包含空值的Json

    我正在尝试在 Play Scala 程序中读取 Json 数据 Json 的某些字段可能包含空值 因此我定义 Reads 对象的方式如下 implicit val readObj Reads ApplyRequest JsPath a re
  • 获取两个顶点之间的边属性值时出现 ClassCastException

    我正在尝试获取两个顶点之间的边缘属性值并低于异常 java lang ClassCastException 无法将 java lang String 转换为 scala runtime Nothing 环境 内存中的泰坦 Code val
  • 如何在cassandra中保存spark流数据

    构建 sbt以下是build sbt文件中包含的内容 val sparkVersion 1 6 3 scalaVersion 2 10 5 resolvers Spark Packages Repo at https dl bintray
  • 使用无形类型不等式时如何自定义 Scala 模糊隐式错误

    def typeSafeSum T lt Nat W lt Nat R lt Nat x T y W implicit sum Sum Aux T W R error R 7 x typeSafeSum 3 4 compilation er
  • Scala 条件列表构造

    我正在使用 Scala 2 9 2 并且想根据某些条件构建一个列表 考虑以下情况 其中 cond 是采用谓词 p 和类型 T 的值 在本例中为 t3 的某个函数 t1 t2 cond p t3 t4 我想要的行为如下 如果 p 为真 则应给
  • Scala 模式匹配打印漂亮

    是否有可能以某种方式编组部分函数 假设它总是只包含一种情况 进入某物人类可读的 假设我们有 Any 类型的集合 消息 List Any 以及使用模式匹配块定义的 PartialFuntion Any T 的数量 case object R1
  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • boost::spirit::qi::语法和可变参数模板

    我在使用可变参数模板定义语法时面临一个问题 我首先定义一些包含在某些结构中的简单语法 例如纬度 经度 如下所示 include
  • Scala 中缺少多重集吗?

    我正在尝试 Scala 中的 Facebook Hacker Cup 2013 资格赛问题 对于第三个问题 我觉得需要一个有序的 Multiset 但在 scala 的 2 10 集合中找不到一个 scala 的集合中是否缺少此数据结构 会
  • 带可变参数的 Spark UDF

    如文档中所示 列出最多 22 个参数是唯一的选择吗 https spark apache org docs 1 5 0 api scala index html org apache spark sql UDFRegistration ht
  • 如何初始化子类型中特征的值?

    如果我写 trait T val t 3 val u 1 t Nil class U extends T override val t 2 new U u 它表明了这一点 List 1 0 我应该如何更改上面的代码以使其显示以下内容 Lis
  • Scala 将递归有界类型参数(F 界)转换为类型成员

    我将如何转换 trait Foo A lt Foo A 给类型成员 也就是说 我想要以下内容 trait Foo type A lt Foo type A 但我遇到了困难 因为名称 A 已在类型细化中使用 这个问题是类似的 并衍生自 通过类
  • scala.math.BigDecimal :1.2 和 1.20 相等

    将 Double 或 String 转换为 scala math BigDecimal 时如何保持精度和尾随零 用例 在 JSON 消息中 属性的类型为 String 值为 1 20 但是在 Scala 中读取这个属性并将其转换为 BigD
  • Build.scala中%和%%符号含义

    我是新来玩的 Framework 2 1 java版本 并且没有scala经验 我不明白什么是以及什么是 and 在 Build scala 中表示 我用谷歌搜索了它们但找不到它们的含义 在我的 Build scala 文件中 我有 org
  • SBT 对 Scala 类型感到困惑

    SBT 抛出以下错误 value split is not a member of String String error filter arg gt arg split delimiter length gt 2 对于以下代码块 impl
  • 对 Spark 数据集中的数字字符串进行排序

    假设我有以下内容Dataset productCode amount XX 13 300 XX 1 250 XX 2 410 XX 9 50 XX 10 35 XX 100 870 Where productCode is of Strin
  • Scala:“递归值...需要类型”,但我只使用 Java 类型

    object Rec extends App val outStream new java io ByteArrayOutputStream val out new java io PrintStream new java io Buffe
  • 读取不同文件夹深度的多个 csv 文件

    我想递归地将给定文件夹中的所有 csv 文件读入 Spark SQLDataFrame如果可能的话 使用单一路径 我的文件夹结构如下所示 我想包含具有一个路径的所有文件 resources first csv resources subfo
  • 如何在scala中生成n-gram?

    我正在尝试在 scala 中编写基于 n gram 的分离新闻算法 如何为大文件生成 n gram 例如 对于包含 蜜蜂是蜜蜂中的蜜蜂 的文件 首先它必须选择一个随机的 n 元语法 例如 蜜蜂 然后它必须寻找以 n 1 个单词开头的 n 元
  • 与文件名中的冒号“:”作斗争

    我有以下代码 用于加载大量 csv gz 并将它们转储到其他文件夹中 并将源文件名作为一列 object DailyMerger extends App def allFiles path File List File val parts

随机推荐

  • DOT 可以生成更结构化的图表吗?

    我不太确定如何描述我的客户想要什么 所以我会让一张图片来说明大部分内容 我正在使用 DOT 生成或多或少的物料清单问题的图表 显示所有级别的传入批次和所有传出批次 这些批次是根据传入批次中的材料创建的 我已经获得了创建包含适当结构化数据的图
  • 访问生产中的 Google App Engine Python 应用程序代码

    背景 我是 Google App Engine 的新手 熟悉其他云提供商的服务 我正在寻找类似于对生产节点的 shell 访问的访问 视图 使用基于 Python Django 的 Google App Engine 应用程序 我想查看生产
  • WPF Tab 键顺序工作错误

    我在 WPF 中有一个观点 我一直在努力使 Tab 键顺序正确 我有三个文本框 我们称它们为 Text1 Text2 和 Text3 和两个自定义控件 每个控件上都有几个其他文本框和各种控件 我们称它们为 Custom1 和 Custom2
  • Objective-c 在我的控制器中添加子视图

    我有一个与代表 控制器和其他一些东西相关的应用程序 问题是我用 init 初始化了控制器中的所有内容 此 init 创建 3 个 UIVIew openGL imagepickerview 和 MKMapView 我希望将这些视图添加到窗口
  • 获取 QF_UFNRA 中实数的小数部分

    使用 smtlib 我想使用 QF UFNRA 进行类似模数的操作 这使我无法使用 mod to int to real 之类的东西 最后我想在以下代码中获取 z 的小数部分 set logic QF UFNRA declare fun z
  • Rails 上的 Angular JS - 参数“RaffleCtrl”不是函数,未定义

    我正在关注 RoR 项目上的整数 Angular JS 教程 在我的控制器 js 文件中 我有以下内容 抽奖咖啡 Place all the behaviors and hooks related to the matching contr
  • 发布 Gmail 插件时出现问题

    我计划推出一个简单的 Gmail 插件 我已遵循发布指南中的每一步并填写了提交表格 然而现在已经过去两周了 我还没有收到任何回复 谁能告诉我我提交的内容需要多长时间才能得到审核 或者发布公共 Gmail 插件的步骤是什么 指南中的那些似乎不
  • 使用python解码tcp数据包

    我正在尝试解码通过 TCP 连接收到的数据 数据包很小 不超过100字节 然而 当它们很多时 我会收到一些连接在一起的数据包 有没有办法防止这种情况 我正在使用Python 我尝试分离数据包 我的来源如下 数据包以STX字节开始 以ETX字
  • 为什么这个 PDO 异常没有被捕获? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我有一个包含在 try catch 中的 INSERT
  • 在 java 中使用带有重写方法的 throws 子句时出现错误? [复制]

    这个问题在这里已经有答案了 当我在方法中使用 throw 子句时出现错误demo 我想知道在继承中使用 throws 有什么限制 错误是 异常ClassNotFoundException与 throws 子句不兼容Test demo Cla
  • 在域中设置命名管道安全性

    我有一个通过命名管道设置的服务器 它对于域管理员来说工作得很好 但是当我在普通用户上测试客户端时 它给出了异常 访问路径被拒绝 因此 这就是我尝试设置的权限 以授予域中所有经过身份验证的用户访问权限 我在这里做错了什么 Server Nam
  • 如何在 Rust 中分割字符串?

    来自文档 尚不清楚 在Java中你可以使用split像这样的方法 some string 123 ffd split 123 Use split let parts some string 123 content split 123 这给出
  • KVO 中的更改字典对于选择索引始终包含 NULL

    我正在使用 KVO 来获取 NSArrayController 的选择索引更改的通知 contoller addObserver self forKeyPath selectionIndex options NSKeyValueObserv
  • 连续文本组件中的空文本空间反应本机

    我有这个问题 我需要将 dummy 一词放在第一行中 直到该行完成 您可以在此处查看示例 https snack expo io B1KcRgGWX 代码 import React Component from react import T
  • 如何在bash中通过opencv访问网络摄像头?

    通过python opencv访问网络摄像头时 isOpened 返回False并且没有读取任何数据 它必须与 wsl 做一些事情吗 根据这个 github 问题 WSL 中尚不支持硬件访问 Ben Hillis 硬件访问是我们将来要研究的
  • 基准测试(Python 与使用 BLAS 的 C++)和 (numpy)

    我想编写一个广泛使用 BLAS 和 LAPACK 线性代数功能的程序 由于性能是一个问题 我做了一些基准测试 想知道我采取的方法是否合法 可以这么说 我有三个参赛者 想通过简单的矩阵乘法来测试他们的表现 参赛者是 Numpy 仅使用dot
  • 处理屏幕方向变化的片段?

    我正在使用这种代码来处理主要活动中的三个片段 FragmentA is Fixed it One Frame I change FragmentB and FragmentC on Button Click on FragmentA his
  • Jupyter 笔记本中的 Imagegrid

    我正在遵循 matplotlib 文档中的示例图像网格 我正在尝试从 Jupyter 笔记本中复制它 matplotlib inline import matplotlib pyplot as plt from mpl toolkits a
  • Google是如何实现首页淡入淡出的效果的?

    如果您访问 google com 您会发现将鼠标悬停在页面上后 顶部的菜单会慢慢出现 我想知道谷歌用什么来控制褪色效果 编辑 因为我不使用 jQuery 所以我不想仅仅为了使用此功能而包含它 有两种方法 JavaScript 适用于大多数浏
  • 在 JavaTokenParsers 中将空格设置为分隔符

    延伸JavaTokenParsers 我有以下内容 class Foo extends JavaTokenParsers lazy val check id action obj lazy val id FOO BAR lazy val a