是否有混合(部分结构,部分未修改的文本)解析和重写的任何Haskell技术?

问题描述:

示例问题:我想编写一个Haskell脚本,它将突出显示(例如,使用\fbox)文档中第一次出现的数学符号。希望这会帮助我确保我已经介绍了一切。是否有混合(部分结构,部分未修改的文本)解析和重写的任何Haskell技术?

  • 正则表达式的是不合适的,因为他们不知道什么是在数学模式等,并没有算对事物的逻辑,或者知道,从下一个\section一个变量实际上是一个新的变量。

  • 我也不想为所有的LaTeX编写解析器。看来错误的概率很高,我真的只想写一个脚本,而不是一个商业程序。

我写了一个混合解析器 - 一个得到了一些结构,并保持其余的文字,在这里一个问题的答复。 [How do you use parsec in a greedy fashion?]。但是,我的方法很麻烦。有更好更正式的方法吗?

+1

不要太急于打折正则表达式 - 记住正则表达式几乎总是嵌入在一个完整的编程语言(如Haskell在这种情况下),可以计数,执行选择等。正如我在另一个问题中提到的,你是什么寻找是“孤岛解析”,但Haskell没有这方面的工具,如果你尝试用常规的“解析”而不是正则表达式匹配来做到这一点,那么你立即会遇到识别开始和结束符号以进入和离开解析岛的问题。 –

您可能需要查看Pandoc library on Hackage来解析Latex。它可以让你解析,修改和漂亮的打印乳胶以及其他一些格式。