JavaCC正则表达式忽略了特定字符串之前的所有内容

时间:2014-05-13 20:39:39

标签: regex token javacc

所以我在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;
}

谢谢。

1 个答案:

答案 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. 
}