lalr

    -2热度

    1回答

    我写在野牛解析器对于具有以下构造,以及其他语言: 自调度:identifierarguments] 调度:expression。 identifierarguments] 字符串切片:expression [expression,expression] - 与Python类似。 arguments是逗号分隔的表达式列表,它也可以是空的。以上所有内容都是表达自己的。 我的问题是,我不知道如何解析[m

    1热度

    1回答

    我试图用jison(http://zaa.ch/jison/docs/)编写简单的解析器,停留在描述文本中。 %lex %% [\s\n\t]+ return 'TK_SPACE'; [0-9]+("."[0-9]+)?\b return 'TK_NUMBER'; [a-zA-Z]+([a-zA-Z0-9]+)?\b return 'TK_WORD'; <<EOF>>

    0热度

    1回答

    我目前正在编写一个类似Visual Basic的LALR(1)语法,并面对这个特殊的转换/减少冲突,我不知道如何正确解决它。 语法的问题的部分是(请参见EDIT 1和EDIT 2澄清): Expression : IndexExpression | /* other expressions */ IndexExpression : MemberExpression

    0热度

    1回答

    我试图用flex和野牛,使一个小的编译器,但我没有得到如何给行动为每个规则 我的语法是这样的: %union{ std::string *s; }; %start program %type <s> expr %token <s> KEYWORD %token <s> VARIABLE %% program : KEYWORD {std::cout <

    0热度

    1回答

    我目前正在实施Decaf(编程语言)语法的一部分。这里是野牛代码中的相关片段: type: INT | ID | type LS RS ; local_var_decl: type ID SEMICOLON ; name: THIS | ID | name DOT ID | name LS

    0热度

    1回答

    当我试图用词法分析器和解析器生成器弄湿我的时候,我意识到互联网上的大多数资源(教程,论坛,StackOverflow)只谈论语言。是因为像Flex和Bison这样的工具只适用于语言,还是因为可以解析的任何东西都被认为是一种语言? 更具体地讲,我有以下形式的文件: File : Bananarama.xyz Date : 22.12.2017 TableStart BlockStart P

    0热度

    1回答

    我目前正在尝试解析逗号分隔列表,至少有两个元素使用野牛。 我知道如何解析使用这个列表: list : list "," element | element ,但我怎么能确保该名单至少有两个元素?

    0热度

    2回答

    作为一个宠物项目,我试图用Jison(一个Bison的JavaScript克隆)制作groff解析器,但是我努力想弄明白groff的语法是否为LALR(1),我正在努力研究。 有没有人对此有所了解? 在此先感谢。 更新1 针对布莱恩担心,这里是我的问题的详细信息: Groff还用C++编写,并且不使用野牛,我得出的语法我。 我已经上传了我的一切进步here

    0热度

    1回答

    当你有像这样的语法: B: 'a' A 'a' | 'b' A 'b' A: 'a' 'a' | 'a' 的右%“A”的声明引起aa.a不是因为被接受在'。', 和%left'a'之间发生移位而不是减少aa.aa和ba.ab,因为解析总是在点处减少。 这是不是很清楚,我如何找出根本的关联声明具有在令牌(“A”)没有被直接地用作运营商这样的情况下什么样的影响。

    0热度

    1回答

    我目前使用happy来解析语言,但我不认为解析器是相关的,只是说它是一个LALR解析器。这里是从语法的一小部分摘录: ArithExpr -> ArithExpr + ArithExpr ArithExpr -> (ArithExpr) ArithExpr -> ... BoolExpr -> ArithExpr == ArithExpr BoolExpr -> (BoolExpr)