yacc

    0热度

    1回答

    Lexer.l %{ #include "y.tab.h" %} %% "define" return(TK_KEY_DEFINE); "as" return(TK_KEY_AS); "is" return(TK_KEY_IS); "if" return(TK_KEY_IF); "then" return(TK_KEY_THEN); "else" return(TK_KEY_

    0热度

    1回答

    我在修复语法中的移位减少冲突时遇到问题。我尝试添加-v来读取问题的输出,它引导我进入状态0,并提到我的INT和FLOAT被规则9简化为variable_definitions。我看不到冲突,并且无法找到解决方案。 %{ #include <stdio.h> #include <stdlib.h> %} %token INT FLOAT %token ADDOP MULOP INCOP

    1热度

    1回答

    我在野牛中有以下代码,它扩展了指南中提出的mfcalc,使用FLEX从外部实现了一些函数,如yylex()。 为了理解我的问题,关键规则是在文法开始处的非终结令牌line中。具体而言,EVAL CLOSED_STRING '\n'和END(此令牌由FLEX当检测到EOF发送的规则,第一打开一个文件和点输入到该文件。第二关闭该文件,并指出该输入到stdin输入。 我“M试图使规则eval "file

    0热度

    2回答

    这里是简化yaac文件: %token CONTEXT_ // the corresponding string is "context" %token CONTEXTREF_ //"contextref" %token IS_ //"is" %token ID_L //"id_l" %token ID_L1 //"id_l1" %token LIB_ %start desi

    0热度

    1回答

    为什么我必须在以下语法片段中明确使用$<nVal>4? 我以为%type <nVal> expr行会删除需要,所以我可以简单地把$4? 难道不可以使用expr的不同定义,以便我可以吗? %union { int nVal; char *pszVal; } %token <nVal> tkNUMBER %token <pszVal> tkIDENT %type <nV

    0热度

    1回答

    与 %nonassoc ELSE %nonassoc THEN 我得到 $野牛-dv tiger.yy tiger.yy:74.5-28:警告:规则解析器无用由于冲突[-Wother] :IF THEN EXP EXP EXP ELSE ^^^^^^^^^^^^^^^^^^^^^^^^ 但 %nonassoc THEN %nonassoc ELSE 该规则起作用。 这是怎么回事?为什么

    0热度

    1回答

    我的原始.y文件导致一些转换/减少并减少/减少冲突。 所以我改变了一些规则来消除这些冲突。我可以手动验证新版本和旧版本之间的等效性。 但是,我想验证新版本是否自动等同于原始版本?怎么样?

    0热度

    1回答

    test.y %% TOP : OPTIONS ; OPTIONS : OPTION | OPTIONS OPTION ; OPTION : /*no option is possible*/ | 'C' ; %% YACC -v test.y y.output包含以下 0 $accept : TOP

    0热度

    1回答

    时,我必须分析运动控制程序(数控机床,GCODE) 这是GCODE加上特定的硬件外形相似的代码。 有很多命令是由单个字母和数字的,例如: C100Z0.5C100Z-0.5 C80Z0.5C80Z-0.5 所以我(简写为)法(RACC &霸王龙实际上)的部分看起来像: A {[:A,text]} B {[:B,text]} ... Z {[:Z,text]} 因此,我找到一个命令,

    0热度

    1回答

    好吧,所以我正在尝试构建我的迷你语言(显然)的解析器,并且设置变量似乎正常工作。但只要Yacc遇到一个函数定义,它只是给了我一个语法错误,还有一些EOF错误(我知道这是从Yacc没有剩余规则设置的时候开始的),没有其他事情发生......我在哪里出错? 这里是语法我解析的例子: $name = "John Doe" $age = 72 $waterInOceans = 95.4 !test