我正在尝试使用添加的语法对自定义 .c 文件进行简单的解析。
例如: test.c 。
// I don’t need this in output
int func1(int a, int b);
//I need this.
@parseme int func2(int a, int b);
//and this …
@parseme
void func3()
{
Int a;
//put here where ever
…
{
//inside block
}
return;
}
.
我想在词法分析器阶段使用模糊解析方法,然后在解析器规则上,使用 TokenRewriteStream 和模板重写令牌。
好吧,这是一个词法分析器……
lexer grammar Lexi;
options {filter = true;}
// Pick everything between @parseme and ';' or '{ }'
METHOD
: HEADER .* (';' | BODY )
;
fragment
HEADER
: '@' ('parseme' | 'PARSEME') ;
fragment
BODY: '{' .* '}' ;
.
......对于专家来说,问题很简单:1- Lexer 在找到 ';' 时停止解析 在到达“@parseme void func3() ... 上的最后一个 '}' 之前。“ 2- 在块右卷曲中找到时,Lexer 停止解析。3-当然还有更多的案例尚未测试。
问题真的很明显。也解决了吗??我希望如此 !!</p>
谢谢。