grako

    0热度

    1回答

    这里有一个简单的语法: START = DECL DECL $ ; DECL = TYPE NAME '=' VAL ; TYPE = 'int' | 'float' ; NAME = 'a' | 'b' ; VAL = '4' ; 我解析此输入流与Grako: int a = 4 float b = 4 ,我检索该抽象语法树(JSON): [ "int",

    0热度

    1回答

    在grako中,可以使用以下name:e将名称的结果添加到AST中作为关键字。例如, var_def = var+:ID {',' var+:ID}* 这将是一个很好的翻译到Xtext? 我试图 var_def: var=ID (',' var=ID)*; 这并不是失败,而是提高以下警告 Multiple markers at this line - The

    2热度

    1回答

    请参阅标题。对于我正在编写的一个小工具,我想介绍一个简单的布尔过滤器语言,并决定做到“正确”并使用解析器生成器。在用grako玩了一下后,我发现我很喜欢它,并且过滤语言做得相当快(这也很好:)) 现在的问题是,如果我想在其他计算机上使用该工具或给对于其他人我首先必须以某种方式使grako在那里可用,这有点麻烦,因为其他一切都是标准的python3东西。 我想通过联合包装必要的grako-class

    0热度

    1回答

    我想描述一个可嵌套的条件。以下是我的工作: expr = (/[_a-zA-Z][a-zA-Z0-9_-]*/) ; condop = ("AND" | "OR") ; condition = expr { condop condition } ; start = condition ; 我可以生成与行的AST喜欢: foo AND bar 这里的AST: [ "foo

    2热度

    1回答

    我正在使用grako(一种用于python的PEG解析器生成器库)来解析文档可以包含一个或多个协议的简单声明性语言。 我本来写成文档根规则: document = {protocol}+ ; 这适当返回协议的列表,但只给出了有益的错误,如果语法错误是在第一个协议。否则,它默默地放弃无效协议及其后的所有内容。 我也试了一些变化: document = protocol document | $ ;

    1热度

    1回答

    我正在尝试编写grako风格的ebnf语法。我发现生成的解析器在尝试解析正则表达式时似乎没有超过空格或注释。 文档说关于该主题 不像其他的表情下面,这一个不超过空白或意见前进。为此,将正则表达式作为自己规则中的唯一术语。 然后我创建了一个只有一个正则表达式规则的简单语法。正则表达式也是该规则中的唯一术语。 @@eol_comments :: ?/(#[^\r\n]*)|(\/\/[^\r\n]*)

    1热度

    1回答

    我的语法文件test.ebnf样子, start = identifier ; identifier = /[a-z]*/ rest; rest = /[0-9]*/ ; 当我运行这个语法在输入“test1234”,我希望它产生“test1234”作为一个单一的语义,而是将AST的样子, AST: ['test', '1234'] 我试着与nameguard功能设置为f

    0热度

    1回答

    如果您查看下面的语法,您可以看到一条主要规则表达式,它将被解析为更具体的表达式类型。 expression::Expression = or_ex:and_expr {'||' or_ex:and_expr}+ | andex:and_expr ; and_expr::AndExpression = and_ex:sub_expr {'&&' and_ex:sub_

    1热度

    1回答

    我试图从PyPI安装包裹grako,它显然是用Cython编译的东西。 我不知道这个过程是什么意思,它打破了一个未解决的符号。 也许有人可以给我一个提示什么检查,使这项工作? 这是在Windows,巨蟒,巨蟒3.4输出: Compiling grako\ast.py because it changed. Compiling grako\bootstrap.py because it chang

    0热度

    1回答

    我试图找出改善显示给Grako生成的解析器的用户的错误的最佳方法。看起来像Grako生成的解析器在输入文件中遇到一些解析问题时显示的默认解析错误没有帮助。错误通常似乎意味着当真正的错误在某处不同时,问题出现在输入文件的一部分中。 我一直在寻找Grako语义类来放入一些检查,如果检查失败会显示更好的错误消息,但它似乎也可能有大量的边缘案例,必须指定能够捕捉解析规则可能失败的所有可能方式。 有没有人有