使用 Haskell Parsec 自定义空白

2023-12-25

我想使用秒差距makeTokenParser构建我的解析器,但我想使用我自己的定义whiteSpace。执行以下替换whiteSpace按照我的定义,但所有lexeme解析器仍然使用旧的定义(例如P.identifier lexer将使用旧的空白)。

...
lexer :: P.TokenParser ()
lexer      = l { P.whiteSpace = myWhiteSpace }
   where l = P.makeTokenParser myLanguageDef
...

查看代码makeTokenParser http://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/src/Text-Parsec-Token.html#makeTokenParser我想我明白为什么会这样。我想知道是否有任何解决方法可以避免完全重复代码makeTokenParser?


可悲的是,我认为没有办法。中使用的本地定义makeTokenParser递归地引用自己,因此,正如您所指出的,lexeme uses whiteSpace那里定义的,而不是whiteSpace记录您替换的成员lexer object.

该代码是嘲讽的,因为它使用与两个本地函数相同的名称makeTokenParser并作为记录成员TokenParser构造函数。它们实际上是完全不同的实体。

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

使用 Haskell Parsec 自定义空白 的相关文章

  • 在 ANTLR4 中如何检查行的第一个字符是否为“*”?

    我正在尝试为一种相对简单但特殊的语言编写一个解析器 简单地说 规则之一是注释行用星号表示only如果该星号是该行的第一个字符 我如何在 ANTLR4 中正式化这样的规则 我考虑过使用 START LINE COMMENT n n gt sk
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • Haskell 中的前提条件检查有哪些选项

    这是一个简单的问题 我认为答案很复杂 一个非常常见的编程问题是函数返回某些内容 或者前置条件检查失败 在Java中 我会使用一些抛出异常的断言函数IllegalArgumentException在方法的开头 如下所示 method body
  • Haskell 中的实例声明

    我有这两个功能 primes sieve 2 where sieve p xs p sieve x x lt xs x mod p gt 0 isPrime number number 1 null x x lt takeWhile x g
  • 如何手动推断表达式的类型

    给定 Haskell 函数 head filter fst 现在的问题是如何手动 手动 找到类型 如果我让 Haskell 告诉我我得到的类型 head filter fst Bool b gt Bool b 但我想了解仅使用所用函数的签名
  • 无点镜头创建不进行类型检查

    在函数中test 我遍历一个列表 从它的成员生成镜头 然后打印一些数据 当我使用有针对性的呼叫风格时 这会起作用 当我使其成为无点时 它无法进行类型检查 为什么会出现这种情况 我该如何解决这个问题 在我看来 GHC 并没有保留排名较高的信息
  • Haskell 下划线与显式变量

    我已经学习 Haskell 几个星期了 我有一个关于下划线的使用的问题 作为函数参数 我认为用一个具体的例子来问我的问题会更好 假设我想定义一个函数 根据提供的索引提取列表的元素 是的 我意识到 已经是预先定义的 我可以定义该函数的两种方法
  • “单词的正则表达式”(语义替换)-任何示例语法和库吗?

    我正在寻找在给定过程语言的情况下对单词而不是字符进行正则表达式样式转换的常用技术的语法示例 例如 为了追踪复制 人们可能想要创建一份具有相似含义但具有不同单词选择的文档 我希望能够简洁地定义这些可以应用于文本流的可能的转换 例如 快速地no
  • 从字符串名称返回 FontStyle

    我想编写一个函数 它将返回 FontStyle 并以字符串作为参数 FontStyle f function Italic FontStyles Italic 我不想编写 Switch case 或 if else 语句来执行相同的操作 对
  • 将 num 的签名键入 double?

    我才刚刚开始为你学习 Haskell 以获得伟大的好处 并且我在类型类方面遇到了一些麻烦 我想创建一个接受任何数字类型并强制其为双精度的函数 我的第一个想法是定义 numToDouble Num gt Double 但我认为这不起作用 因为
  • Haskell - 用防护罩替换外壳

    我想知道在这部分代码中是否可以用守卫替换 case 语句 firstFunction String gt Maybe MyType secondFunction MyType gt Integer myFunction String gt
  • 如何在 Haskell 中安装库?

    我尝试使用控制 Monad Extra andM https hackage haskell org package extra 1 7 10 docs Control Monad Extra html import Control Mon
  • 使用 FoldLine 解析多个块

    对于这个简化的问题 我试图解析一个如下所示的输入 foo bar baz quux woo hoo xyzzy glulx into foo bar baz quux woo hoo xyzzy glulx 我尝试过的代码如下 import
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • Haskell 中的中缀运算符优先级

    对于以下 Haskell 表达式 返回 a gt gt f 应该读作 返回a gt gt f or 返回 a gt gt f 这里的相关规则是什么 规则始终是函数应用程序的优先级高于任何运算符 因此 return a gt gt f 被解析
  • 在 Yesod 生态系统中,对某些文本进行 urlencode 的最佳方式是什么?

    我想对一些文本进行 url 编码 例如 用 20 替换每个空格等 我找到了 HTTP Network HTTP Base urlEncode 并且可以使用它 但我想知道是否还有其他通常在 Yesod 生态系统中使用的东西 不幸的是 由于 U
  • 用于遇到 [...] 的 Haskell Parsec 解析器

    我正在尝试使用 Parsec 在 Haskell 中编写一个解析器 目前我有一个可以解析的程序 test x 1 2 3 end 执行此操作的代码如下 testParser do reserved test v lt identifier
  • 用于(联合国)结构化文本文档的词法分析器/解析器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有很多脚本解析器和词法分析器 即结构化计算机语言 但我正在寻找一个可以将 几乎 非结构化文本文档分成更
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • 如何在haskell中获取变量名称

    我来到 haskell 时有一些 c 背景知识 想知道是否有类似的 define print a printf s d n a a int a 5 print a 应该打印 a 5 这是 augustss 提到的 TH 解决方案 LANGU

随机推荐

  • 在vba中将多个消息框值添加到单个消息框

    我有这段代码 我可以在每个外循环结束时显示消息 我想在假设数组或某种列表之类的结构中捕获所有这些消息 然后最后想将这些消息中的每一条显示到一个消息框中 如果有人能帮助我 我将不胜感激 谢谢 For Each objNavFolder In
  • “多个方法名为......”的问题

    我有一个问题 我想在我的项目中实现 UAModalpanelview 起初它工作得很好 我实现了这些文件 无论如何 但现在我想运行该应用程序 但每次都会出现此错误 正是因为 中心 它向我显示 发现多个名为中心的方法 其结果 参数类型或属性不
  • ArgumentOutOfRangeException:索引超出范围

    每当我使用时 我都会收到这个奇怪的 ArgumentOutOfRangeException PersitenceSpecification 类用于验证具有 对值对象的引用 public class CatalogItem DomainEnt
  • UIWebView 捕获帖子

    我正在寻找一个需要在 iPad 上显示 UIWebView 的项目的起点 问题是 HTML 将由 pad 生成并显示在 UIWebView 中 并且将包含许多输入控件 需要的是一种在用户完成输入后获取这些控件的内容的方法 类似于我在服务器上
  • Apptimize \ Optimizely 如何在 iOS 上工作?

    我试图弄清楚一些关于 幕后 实现的一些事情 用于直接从 Apptimize 或 Optimizely 上的 Web 控制台动态操作 UI 元素 更具体地说 我想了解以下内容 1 客户端代码 iOS 如何将视图层次结构发送到 Web 服务器
  • 使用 Firebase 时使用未解析的标识符“FIRDatabase”

    Xcode 告诉我FIRDatabase不是标识符 我的代码 import UIKit import Firebase UIApplicationMain class AppDelegate UIResponder UIApplicatio
  • 为什么tintColor 在 iOS7 上的导航栏或工具栏上不起作用

    在iPad的iOS7上 首先 我设置了一个模态视图控制器 大小为320 460 然后 在这个模态视图控制器中 我呈现了另一个导航视图控制器 在此之后 导航栏和工具栏的色调颜色呈现的导航控制器变成灰色 我尝试设置导航栏和工具栏的色调颜色 但它
  • 什么是 C++ 上下文中的单态化?

    戴夫 赫尔曼最近的演讲 http www infoq com presentations RustRust 说他们从 C 借用了这个属性 我找不到与该主题相关的任何内容 有人可以解释一下单态化是什么意思吗 单态化意味着生成通用函数的专门版本
  • 在Android中设置ListView的“空白”区域的颜色

    当我的列表视图未完全充满列表视图项目时 例如 我的列表视图足够高 可容纳 8 个项目 但我只有 2 个 空白区域在我的 Droid X 上显示为灰色 在模拟器中 空白区域显示变成黑色 如何将 空白 区域设置为透明 我尝试过设置背景颜色 缓存
  • Python 中的替代构造函数

    我正在处理图表并编写了一个 mixin 模块来创建图表 我想在其中有一些替代的构造函数 这就是我所拥有的 class Graph GraphDegree GraphDegreePlot GraphGeneration object def
  • 按照设计,属性 getter 是否应该在 python 中抛出异常?

    对于问题的某些上下文 我使用延迟加载来推迟类中某些属性的完全初始化 直到需要它们时 如果有的话 因为它们的计算成本可能很高 我的问题是 在 python 中 如果在计算属性值时发生错误 或者无法计算该值 那么引发异常是可以接受的还是客观上是
  • 选择单选按钮时如何清除文本字段内的文本

    目前我有这个单选按钮 电子学 电脑 Others 我想做的是 如果单选按钮Others被选中后 我想显示一个输入文本字段并让用户输入 我想做的是 当我选择Others并在输入字段中输入一些内容 然后当我选择返回时Eletronics or
  • 如何设置和运行适用于 PHP 的 Tesseract OCR(开源)?

    我已经根据GitHUb上提供的文档通过MacPorts安装了Tesseract OCR 并且安装成功 并且 但是 我正在尝试使用 Tesseract OCR for PHP https github com thiagoalessio te
  • python 解码 fernet 密钥

    我生成了一些 fernet 密钥并以 str 格式存储以供参考 现在 我需要将这些 str 格式的 fernet 密钥编码为 32 个 url 安全的 base64 编码字节来解密我的数据 from cryptography fernet
  • 在数据框的整个列中应用正则表达式

    我有一个包含 3 列的数据框 id name team 101 kevin marketing 102 scott admin n 103 peter finance n 我正在尝试应用正则表达式函数 以便删除不必要的空格 我已经得到了删除
  • glReadPixels 只保存 1/4 屏幕尺寸的快照

    我正在为客户开发增强现实应用程序 OpenGL 和 EAGL 部分已在 Unity 3D 中完成 并在我的应用程序中实现为视图 我现在需要的是一个按钮 用于捕捉 OpenGL 内容的屏幕截图 这是最后面的视图 我尝试自己编写它 但是当我单击
  • 接收事件,如果文件已下载/添加到下载文件夹

    每当文件添加到特定文件夹时 我希望收到一个事件 例如下载文件夹 为了达到这个目的 我尝试了 3 种不同的方法 但没有成功 目标设备为 Android 15 您对这 3 种方法有任何经验吗 可以帮助制作工作示例吗 方法 1 FileObser
  • HID:“速率控制”连接“应用程序”对受保护服务的访问被拒绝

    在某些情况下 我们的应用程序会收到以下错误消息 看起来我们无法执行任何网络请求 应用程序成功启动到登录屏幕 但当它尝试联系我们的服务器进行登录时 我们收到此消息 HID The Rate Controlled connection appn
  • NumPy 切片:除一个数组条目外的所有切片

    从操作中排除确切的一个 NumPy 数组条目的最佳方法是什么 我有一个数组x含有n值并想要排除i当我打电话时的第 个条目numpy prod x 我知道关于MaskedArray 但是还有另一种 更好的方法吗 我认为最简单的是 np pro
  • 使用 Haskell Parsec 自定义空白

    我想使用秒差距makeTokenParser构建我的解析器 但我想使用我自己的定义whiteSpace 执行以下替换whiteSpace按照我的定义 但所有lexeme解析器仍然使用旧的定义 例如P identifier lexer将使用旧