bison

    1热度

    1回答

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

    0热度

    1回答

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

    0热度

    1回答

    这是Jison中的解析器,但我猜这同样适用于Bison。 我有一个规则有一个表达式的定义。 expr : NUMBER -> { type: "number", value: $1 } | "(" expr ")" -> $2 | expr "+" expr -> { type: "+", left: $1, right: $3 } | expr "-" e

    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回答

    野牛语法我要读一个野牛语法文件和不理解如下声明: 的语法有一个联合声明 %union { int i; char *s; } 令牌声明如下所示: %token TOK0 TOK1 TOK2 TOK3 TOK4 TOK5 TOK6 TOK7 %token <s> TOK8 %token <i> TOK9 我的期望是

    0热度

    1回答

    我创建了一个野牛/ flex编译器,并且遇到了问题。我加了%glr-parser但问题依然存在。我有: 有一个简单的例子,它代表我的问题 .Y文件: %{ #include <stdio.h> #include <stdlib.h> extern FILE *yyin; extern int yylex(); int line=1; in

    0热度

    1回答

    我想用野牛创建一个简单的语法,但是我得到一个警告说非终结者是无用的(additive_expr)。 我的代码如下所示: %% multiplicative_expr: CONSTANT_INTEGER | multiplicative_expr MULTIPLICATION CONSTANT_INTEGER ; additive_expr: multiplicative_expr |

    0热度

    1回答

    我对野牛和弯曲不是很有经验,我需要一些帮助。 我在我的.y文件中有一些错误。 语法明智的罚款和编译的时候是我“野牛-d”它 但是当我尝试用gcc来编译它给了我一些错误,即时通讯不知道如何解决(这里总小白): https://i.stack.imgur.com/fUeR7.png 的.lex文件: %{ #include "meals.tab.h" #include <string.h> e