是否有来自字符串输入的flex + bison(野牛是必要的)的工作示例,而不是文件?
我曾尝试使用YY_BUFFER_STATE ...函数代替yyin并出现错误“flex scanner push-back overflow”。 Flex将InputString [1]更改为0.对SO的其他几个答案没什么帮助 - 实际代码会更有用。
答案 0 :(得分:1)
描述了扫描存储区域的方法 in the Flex manual
Flex修改yy_scan_buffer
给出的缓冲区。如果您需要避免修改,yy_scan_bytes
或yy_scan_string
将是合适的。
扫描文件或内存区域是否独立于解析器(野牛)。
如果您的词法分析器失败,我建议检查它是否失败 从文件中读取时。
有关您的信息,以下弹性代码会在我的环境中打印ab
和cd
。
%%
[a-z]+ puts( yytext );
.
\n
%%
int yywrap( void ) { return 1; }
int main() {
yy_scan_string("ab cd");
yylex();
yy_delete_buffer( YY_CURRENT_BUFFER );
}
答案 1 :(得分:0)
您也可以使用yy_scan_buffer(char *,size_t)