所以我在javacc上有一个函数:
void parseDSL() throws SemanticException #void :
{}
{
<ALL> "/*@mat" dslStatements() "*/" <ALL> <EOF>
}
我的目标是在“/ * @ mat”匹配之前忽略所有内容,并且在解析之后忽略所有内容直到EOF。 我真的很难找到一个适用于此的正则表达式。 应传递的文件的一个示例是:
public class blabla {
int i=1;/*@mat
in float B[100];
in float C[100];
in int A[9];
in int Z[9];
out float D[];
D=A*(B+C-Z)+A*Z;
*/boolean a;
}
谢谢。
答案 0 :(得分:0)
这就是词汇状态的用途。有关更多信息,请参阅文档和FAQ。大概你想要的是
<DEFAULT> SKIP: { < ~[] > } // Skip everything up to "/*@mat"
<DEFAULT> TOKEN: { < STARTMAT: "/*@mat" > : GO }
<GO> TOKEN: { <IN : "in" >
| <OUT : "out" >
| .... other rules go here ....
| <ENDMAT : "*/" > : DEFAULT // On a "*/" go back to skipping.
}