lalr

    2热度

    1回答

    我有SABLECC这个(工作)LALR语法: Package org.univpm.grail.sable; Helpers digit = [ '0' .. '9' ]; letter = [ [ 'a' .. 'z' ] + [ 'A' .. 'Z' ] ]; any_character = [ 0 .. 0xfffff ] ; States n

    1热度

    1回答

    我具有以下野牛语法(如更复杂的语法的一部分): expression: IDENTIFIER | CONST | LAMBDA match_block ; match_block: pattern '=' expression | match_block '|' pattern '=' expression ; pattern:

    0热度

    1回答

    我们使用GPPG(本质上是Bison的bison)来为编程语言生成解析器。除了一个真正讨厌的位,一切都很好。我们解析的语言有一种“隐式比较”规则,其中“表达式表达式”应该被解释为“表达式==表达式”。 例如,这是一个完全有效的语句: If SomeValue False Then EndIf 这显然介绍解析器生成过程中的种种矛盾。我第一次尝试解决这些问题是沿着这些方向发展的(为简洁起见)。我

    3热度

    2回答

    自从现在我一直坚持这一点。我想分析简单的东西如: 喜欢:字词1字词2 .. wordN HATES:字词1字词2 .. wordN 我使用柠檬+ Flex的。目前我的语法看起来像这样: %left LIKES MOODS FROM HATES INFO. %syntax_error { std::cout << "Syntax error!" << std::endl; } f

    1热度

    1回答

    我正尝试使用Bison在C++中生成解析器。语法很好,但是我在操作上遇到了一些麻烦。这里有一个简单的例子: statements : statement | statements statement; 据我所知,这是一个非常正常的事情。我的问题是首先得出的。举例来说,如果我有一个看起来像 statement statement statement statement 不野牛叫我的行动为

    1热度

    1回答

    我知道在Bison代码中,会出现一些预期的移位/减少冲突,而正常的C语法会产生一个针对if/else的冲突。但是,我有一种产生其他转换/减少冲突的语法。这是我的语法严重问题的标志吗?我是否应该花时间追捕每次冲突并尝试解决或验证其正确性?我正在使用常规的LALR解析器。 编辑: 这里是我的语法,我去除了所有的行动和其他的东西。 %token STRING_LITERAL %token INTEGE

    7热度

    1回答

    我写一个解析器的语言,而扫描仪的设计 要么也返回不需要的终端(例如whitespacing)OR 不这样做 基于布尔标志。 现在,在解析器中,我不想让语法与所有终端混在一起,它们应该被我正在构建的解析树以某种方式“自动地”吞下。为了做到这一点“魔术”,我想我会链接终端(简单地连接循环列表),所以我可以迭代它们并在发生缩减时“填空”(我正在使用LALR(1 )解析器生成器)。 这听起来像一个理智的想

    2热度

    1回答

    我想创建一个LALR语法来分析嵌套列表,但我总是遇到一个转换/减少冲突。 我有列表1这是TYPE1项目和List2列表: <list1> ::= <type1> | <type1> <list1> ; <type1> ::= A | B | <list2> ; 而且我有一个列表2这是2型项目的列表: <list2> ::= <type2> | <type2> <list2> ; <type

    3热度

    1回答

    我的野牛语法有问题。我有一对移动/减少,很好,六个减少/减少。问题是我不明白减少/减少冲突是如何发生的,因为解析器应该知道先前从令牌中选择哪一个。 %token STRING_LITERAL %token INTEGER %token FLOAT %token CHARACTER %token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_O

    2热度

    1回答

    我想解析一个上下文无关语言,名为Context Free Art。我使用类似YACC的JS LALR(1)解析器生成器JSCC在Javascript中创建了它的解析器。 以下面的CFA(Context Free Art)代码为例。此代码是有效的CFA。 startshape A rule A { CIRCLE { s 1} } 注意上面的A和s。 s是缩放CIRCLE的命令,但A只是此规则的