c - 当我用bison解析一个java写的helloworld文件时,bison只能一行行解析。如何在多行中解析它?
问题描述
其实不用看代码,只需要告诉我如何解析一个方法体或类,bison如何解析多行结构化代码,而不是逐行解析
如何使用野牛来解析这个文件的代码?我目前的技术只能逐行解析。
public class test {
public static void main(String[] args) {
System.out.println("hello world");
}
}
野牛代码
program: /* nothing */
| program statement EOL
{
printf("%g\n>> ", eval($2));
treefree($2);
}
| program declare_pre EOL
{ printf("\n>> "); }
| program declare_class EOL
{
printf("\n>>");
}
| program EOL
{ printf(">> "); }
| program error EOL
{
yyerrok;
printf("\n>> ");
}
;
declare_class: /* nothing */ { $$ = NULL; }
| class_access_modifier CLASS NAME '{' list '}'
{
defcls($3, $5);
printf("%g\n>> ", eval($5));
$$ = $3;
}
;
例如,文件中的内容是:
public class test {}
bison 可以直接解析成功 但是如果换成另一种形式
public class test {
void demo(int i, int j) {}
}
这时bison会报错,因为没有办法处理第一行'{'之后的内容,规则是'{'list'}' 不能匹配一个或多个换行符
解决方案
推荐阅读
- java - 使用 Spring Boot 2.0 的 Swagger 导致 404 错误页面
- c# - 只允许是或否作为答案
- ios - UITableview 在标题部分上方添加空间
- java - 从另一个位置运行 executeBatch()
- android - 使用 SQlite 数据填充实现进度条
- java - servlet 执行引发异常 - NoClassDefFound 错误
- reactjs - 在 react、sinon 或 jest 中测试计时器
- excel - 使用 Excel 公式替换部分字符串
- android - 关于谷歌最新架构指南的 MVVM 模式,如何将数据(通知)从存储库 calss 传递到 ModelView 类
- video - 视频压缩