parser-combinators

    1热度

    1回答

    评估scala中的外部DSL需要什么步骤,以及这些库有哪些可用的库? 经过深入研究,我可以使用解析器组合器创建一个AST案例类。该过程中的下一步是什么?我看着kiama(https://code.google.com/p/kiama/),但从文档中看来还不清楚(可能是由于我的语言处理知识有限)如何维护符号表,如何将动作绑定到dsl语句等。

    3热度

    1回答

    我正在使用Scala中的本地解析器组合器库,我想解析我的输入的一些部分,但不是其他解释器。具体来说,我想放弃我关心的输入之间的所有任意文本。例如,该输入: begin Text I care about Text I care about DONT CARE Text I don't care about begin More text I care about ...

    2热度

    4回答

    我在scala中使用本地解析器组合器库,我想用它来解析一些大文件。我有我的combinators设置,但我试图解析的文件太大,一次不能读入内存。我希望能够通过解析器从输入文件进行流式处理,并将其读回到磁盘,以便我不需要立即将其全部存储在内存中。我的当前系统看起来像这样: val f = Source.fromFile("myfile") parser.parse(parser.document.

    4热度

    1回答

    我知道def和val和lazy val之间的区别,但我不确定它们对于Parser Combinators的影响。我见过的所有示例包含这样的代码: def statement: Parser[Statement] = ifStatement | whileStatement | expressionStatement | ... 从几个实验我已经做了,似乎val和l

    5热度

    3回答

    让我们来看看代码片段: pSegmentBegin p i = pIndentExact i *> ((:) <$> p i <*> ((pEOL *> pSegment p i) <|> pure [])) ,如果我在我的解析器更改此代码: pSegmentBegin p i = do pIndentExact i ((:) <$> p i <*> ((pEOL *> p

    0热度

    1回答

    我正在使用Scala的模式组合器编写罗马化工具。 在其中一个解析器中,我希望能够匹配某些字符串值集并将它们转换为相应的值。 即,我使用Map [字符串,字符串]在这些值之间进行转换,但我没有找到匹配地图键而不使用单独的正则表达式的方法。 object Transliteration extends RegexParsers { private[text] val diphthongsMa

    2热度

    3回答

    此问题与Parsec和uu-parsinglib都有关。当我们编写解析器组合器时,它们处理来自编译器的字符流。是否有可能解析一个字符并将其放回(或返回另一个字符)到输入流? 我想例如解析输入“测试+ 5”,解析t,e,s,t和识别test图案,把例如v字符回到字符流之后,因此而continuating解析过程我们与v + 5 匹配我现在不想在任何特定情况下使用此功能 - 我想深入了解可能性。

    2热度

    1回答

    我有结构化的这样的数据文件: OTU1 PIA0 1120 OTU2 PIA1 2 OTU2 PIA3 6 OTU2 PIA4 10 OTU2 PIA5 1078 OTU2 PIN1 24 OTU2 PIN2 45 OTU2 PIN3 261 OTU2 PIN4 102 OTU3 PIA0 16 OTU3 PIA1 59 OTU3 PIA2 27 OTU3 PIA3 180

    0热度

    1回答

    使用斯卡拉分析器组合器库是否可以通过行解析,而不是字符?我想我的自定义解析器有特色 (in: Reader[String]) => ParserResult[T] 使字符串in.first是一行文字和in.rest - 其余行。 我想我需要继承解析器和定义ELEM类型字符串。然后执行Reader [String]将输入拆分为行。我想知道这是否正确?还有其他解决方案吗?

    13热度

    1回答

    问题 是它在某种程度上可以创造无形的HList的提取,看起来像下面这样。 val a ~ _ ~ b = 4 :: "so" :: 4.5 :: HNil => a == 4 && b == 4.5 通过~更换::,这应该不是问题。 摆脱终止HNil。有没有可能出现的问题? 动机 多少汗水和泪水我设法在点,在下面的代码工作后到达: for( x1 :: _ :: x2 :: HNil