有没有flex + bison的工作示例,输入来自字符串,而不是文件?

时间:2011-05-01 01:03:53

标签: bison flex-lexer

是否有来自字符串输入的flex + bison(野牛是必要的)的工作示例,而不是文件?

我曾尝试使用YY_BUFFER_STATE ...函数代替yyin并出现错误“flex scanner push-back overflow”。 Flex将InputString [1]更改为0.对SO的其他几个答案没什么帮助 - 实际代码会更有用。

2 个答案:

答案 0 :(得分:1)

描述了扫描存储区域的方法 in the Flex manual

Flex修改yy_scan_buffer给出的缓冲区。如果您需要避免修改,yy_scan_bytesyy_scan_string 将是合适的。

扫描文件或内存区域是否独立于解析器(野牛)。

如果您的词法分析器失败,我建议检查它是否失败 从文件中读取时。

有关您的信息,以下弹性代码会在我的环境中打印abcd

%%

[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)