parser-combinators

    3热度

    1回答

    我有一个棘手的问题(至少在我看来),关于Scalas解析器组合器和递归解析。我目前正在建设一个小解析器应该能够解析PL/1的结构是这样的: dcl 1 data, 3 subData, 5 tmp char(15), 5 tmp1 char(15), 3 subData2, 5 tmp2 char(10), 5 tmp3 char

    1热度

    2回答

    我想在文本中搜索字符串“W foo X bar Y baz Z”。 W,X,Y,Z是不重要的分隔符,我不能搜索它们。 foo,bar和baz是我感兴趣的单词。顺序并不重要。 我想知道如何在文本中出现我所需的单词。 我想下面 (?:\Qfoo\E)?.{0,3}(?:\Qbar\E)?.{0,3}(?:\Qbaz\E)? 我的理由是: 包在一个可选的组每一个字,所以它发生 [(不要求:是非E .

    5热度

    1回答

    考虑例如解析器这样的:我获得以下错误 items: item1, item2, item3, item3, item4 items: item2, item3, item3, item5, item4 items: item4, item5, item6, item10 items: item1, item2, item3 exclude: item1 exclude: item2

    2热度

    1回答

    我试图让下面的工作。所以我有括号内的字符串。字符串可以包含任何字符,因此我想要解析的字符串也可以包含括号。我认为当前正则表达式也匹配最后一个应该与<〜“)”匹配的括号,因此解析失败。我在这里错过了什么? private def parser: Parser[Any] = a ~ b ~ c ^^ { <do stuff here> } private def a: Parser[S

    1热度

    2回答

    我想构建一个解析器,它可以接收地图输入并输出一个Case类。现在我有一些似乎没有利用FP的命令式样代码。我只是看不到如何构建可输出Case类的解析器。 以下是我有: def fromMap(m: Map[String,AttributeValue]): User = { val id = m.get("user-id") map {_.getS} val email = m.g

    0热度

    1回答

    如何有效地解析(没有太多代码混乱)像下面的语句? 关键字/分隔符位于[]中。 经理,德里[供]本公司私人有限公司[从] 2009年1月[来]扬,2012年 的人姓名,公司名称和日期范围是从使用文本解析提取组合子。 (预期输出在底部示出) 下面是上文 case class CompanyWithMonthDateRange(company:String, position:String,

    2热度

    3回答

    我想使用解析器组合器来解析文本文件。我想在一个名为Example的课程中捕获索引和文本。下面是显示在输入文件的形式测试: object Test extends ParsComb with App { val input = """ 0) blah1 blah2 blah3 1) blah4 blah5 END """ println(parseAll(exa

    3热度

    1回答

    我一直试图做一个解析器一个非常简单的语言,它看起来像这样的Scala解析器组合 .*?[^ ]*?\\{ .*?\\} 这将基本上保持吃字符,直到它找到匹配[^ ]*?\\{或\\}的东西:块的开始或结束。我的问题是,如果我想使用Scala的Parser Combinators来做它,我该怎么做?我目前有: def expr: Parser[Any] = (block | text)+

    1热度

    1回答

    前空格我试图解析两个整数的输入,并且一些元件和端部: import scala.util.parsing.combinator.JavaTokenParsers class X extends JavaTokenParsers { lazy val elems = elem("wrong elem", "#WB-" contains _) lazy val lists =

    3热度

    1回答

    我希望有人可能会发布一个使用FParsec的示例,其中数据基于某种传入的直播流。 一些示例可能会基于鼠标手势产生结果,根据特定的股票报价序列生成警报或通知。 如果有人可以发布一个例子,将不胜感激。 谢谢!