- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用 flex 和 bison 来解析一些代码。
YYSTYPE 的默认类型是 int
,尽管我从来没有那样声明过。这是野牛的默认设置吗?
将字符串传回对我有很大帮助。我读到这个: How to solve Bison warning "... has no declared type"这看起来是一个很好的方法。 (我还不需要联合的全部功能,只需要 char* 部分,但我不妨使用联合,因为它以后可能会有所帮助。)
它对我不起作用。我收到这些错误:
y:111.37-38: $1 of `ConstExpression' has no declared type
y:113.34-35: $1 of `ConstFactor' has no declared type
y:114.35-36: $1 of `ConstFactor' has no declared type
y:119.34-35: $1 of `Type' has no declared type
y:109.23-48: warning: type clash on default action: <str> != <>
y:115.23-27: warning: type clash on default action: <str> != <>
[...more of the same snipped...]
y
语法文件:
%union {
char *str;
}
%type<str> ConstExpression ConstFactor Type
.l
中的一行文件:
[a-zA-Z]+[a-zA-Z0-9]* { yylval.str = strdup(yytext); return yident;}
最佳答案
实际上,我很确定我不看语法就知道出了什么问题。
还必须声明终结符的类型,因为它们可以并且经常返回语义值。想想诸如 ID
之类的事情和 NUMBER
, 其中有 yyval
数据。但是yacc 没有办法知道它是否只是一个'x'
或者更多,规则中的默认操作是:$$ = $1
例如,下面的语法通过 yacc 就好了,但是尝试从 %type
中再删除一个符号。以下:
%union {
char *s;
}
%type <s> r1 r2 'x'
%%
r1: r2;
r2: 'x' { printf("%s\n", $1); };
关于 Bison YYSTYPE : Trying to use char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1778099/
在我的 YACC 文件中,我有这个: %union { Node *node; FuncParamList *fParam; CallParamList *cParam;
我已经尝试了一段时间,通过使用 bison 和 lex 来实现语法分析器。 我对 yylval 的类型重新声明有疑问,我自己解释。 我有 4 个文件:lexico.l、parser.y、funcion
我需要使用 flex 和 bison 来解析一些代码。 YYSTYPE 的默认类型是 int ,尽管我从来没有那样声明过。这是野牛的默认设置吗? 将字符串传回对我有很大帮助。我读到这个: How to
我正在尝试运行这个: 斯塔克.lex %{ #include #include "y.tab.h" #ifndef YYSTYPE #define YYSTYPE char* #endif #def
当我突然开始遇到 SEGFAULT 时,我正在为一个非常简单的解析器构建一个解析器。我已将我的代码精简到最低限度的错误位置: 这是我的 test.flex 文件: %{ #include "test.
在我的 .l 文件中,我有以下内容: #include "SymbolInfo.h" #include "y.tab.h" using namespace std; int line_count =
我已将 YYSTYPE union 声明为 %union { char* stringValue; union int_double_string* ids; } in
我正在使用 char*如 YYSTYPE在用 flex 和 bison 构建的编译器中。线 #define YYSTYPE char* 位于我的语法文件的顶部。我的词法分析器中的一些标记需要传递它们与
我正在尝试使用 mingw 构建包含在 GNU binutils 中的 gold 链接器。我采取的步骤- 使用安装程序安装 mingw 和所有包。 使用 Windows 安装程序将 Windows 版
我正在使用 flex 和 bison 实现计算器,但是 double 值被解释为整数,然后我在互联网上寻找答案,我意识到错误可能是 bison 将数字解释为整数,所以如果我输入“1.2 "在 *yyl
我正在尝试将位置信息添加到flex和bison中。但是我的野牛仍然使用int yylex(void),但是找不到int yylex(YYSTYPE *yylval_param, YYLTYPE *yy
我正在尝试在flex和bison中创建一个编译器,但是当我尝试编译我的代码时,出现了这种类型的错误 我该如何解决这个问题? flex.l:17:8: error: invalid type argum
我是一名优秀的程序员,十分优秀!