parser-combinators

    2热度

    3回答

    我试图使用nom解析基于文本的协议。该协议可以具有浮点值在它的形式如下: [-]digit+[.digit+] 其实例是: -10.0 10.0 在NOM解析器我已经意识到这是......不美。它也不完全typecheck。我已经走到这一步: named!(float_prs <&[u8], f64>, alt!( take_while!(nom::is_digit)

    0热度

    1回答

    是否有可能使用更多的分析器组合器来扩展Scala Parser Combinator library,也许在包装器的帮助下?我正在尝试添加一个具有自定义行为的新Parser Combinator。我目前的解决方案是采用文件(Parsers.scala,RegexParsers.scala和SubSequence.scala)并直接添加我的自定义解析器组合器。 编辑 随着old Gitter mes

    0热度

    1回答

    我使用scala.util.parsing.combinator写解析器和语法的列表。 我输入":za >= 1 alok && :ft == 9" case class Expression(op1:Operand,operator:Operator,op2:Operand) def word: Parser[String] = """[a-z\\\s]+""".r ^^ { _.toStr

    2热度

    1回答

    我的问题受this one的启发,但对于JavaScript,使用parsimmon解析器 - 组合器库。我想解析缩进敏感的语言,比如python或yaml。 我已经成功地斯卡拉例如转换在回答JavaScript的很轻松了 - 关键是在parsimmon的chain功能,这相当于在Scala的解析器组合的>>运营商 - 他们都需要一个解析器和功能它返回一个解析器,并且第一个解析器的结果被传递给该函

    0热度

    1回答

    我是新来scala语言和它的解析器组合器。我工作的一个任务,并得到了被困在一个要求: 我的要求是得到重复的如Type :我创建解析器逻辑运算符和字(这意味着字符串) def logicalOperator:Parser[Operator] = "(&&|\\|\\|)".r ^^ {case op => Operator(op)} def word: Parser[word] = """[a-

    1热度

    1回答

    我正在尝试编写一个与Milner的CCS非常相似的语言的解析器。基本上,我解析到目前为止有以下几种形式的表现: aba1 A.0 的表达必须以字母开头(不含T),并可能有任意数量的第一个字母后面的字母(用'。'分隔)。表达式必须以数字结尾(为了简单起见,我现在选择0到2之间的数字)。我想使用Parser Combinators for Scala,但这是我第一次与他们合作。这是我到目前为止有: i

    1热度

    2回答

    我工作的一个模板引擎,其中的一些语法可能是这样的: {{ somevar|filter }} 在地方的somevar可以是任意“表达”,这是说,要么是变量名称,如somevar,要么是嵌套的过滤器表达式(如{{ somevar|filter|anotherfilter }})。我试图用Rust的nom分析器组合库来解析这个问题,但是到目前为止还没有得到它的工作。 这里的解析器,我拿出这么远:

    7热度

    1回答

    我正在写使用秒差距为它的解析一种编程语言。对于报告的错误信息,我有我的标有其源位置语法树的每个元素,使用getPosition功能从秒差距的the Pos module。 但是,它只给出我解析每个表达式的开头的位置,我想要的开始和结束,这样我可以在源代码中突出其整个位置。 这种事可能与秒差距?有没有一种标准的方式来获得我正在解析的表达式的终点,以便我可以将它包含在我的AST中?

    0热度

    1回答

    我一直在阅读关于解析器组合器的教程,并且我遇到了一个函数,我希望在尝试理解时有所帮助。 satisfy :: (Char -> Bool) -> Parser Char satisfy p = item `bind` \c -> if p c then unit c else (Parser (\cs -> [])) char :: Char -> Parser

    2热度

    1回答

    某些语言(如SQL)具有不区分大小写的关键字(和/或标识符)。当使用TokenParsers时,我如何处理这种不区分大小写?一种选择是生成所有可能的关键字组合,但是如果关键字很多(在我的情况下,它会导致在whitespace中出现堆栈溢出!),并且在任何情况下都不适用于标识符,这会非常糟糕。 [自应答在希望别人会不会落得在这呆了一天。]