如何获取antlr4中每个令牌的行数和列数?
我是新的antlr4 ...我搜索了很多,以获得每个令牌的行数和列数antlr4 ...我有一个良好knewoleadge flex和野牛,我做了一个完整的编译器为PHP与flex和野牛......在flex和野牛我是通过简单的代码获得的行和列的数量:在bison.y如何获取antlr4中每个令牌的行数和列数?
我定义的结构:
struct R{
int i;
float f;
char c;
char* str;
int myLineNo;
int myColno;
}r;
namespace_name_parts: // rule
T_STRING {
$<Expre>$=new var_dec($<r.str>1,$<r.myLineNo>1,$<r.myColno>1);
};
和flex.l我写:
int lineNo = 1;
int colNo = 1;
"while" {
yylval.r.myLineNo= lineNo;
yylval.r.myColno = colNo;
colNo += strlen(yytext);
return T_WHILE ;
}
这样我可以得到数字和公司的行lumn Flex和野牛... 注:我需要的数量和列的打印我自己的类型检查错误的行
这样可以帮助我得到antlr4
使用error listener可获得有关语法错误的通知。原则很简单。创建您自己的后代并覆盖reportError()
函数。为了把你的听众班放在电话parser.addErrorListener()
。
谢谢@Mike Lischke – Micle
如果我的答案帮助你,然后点击左边的复选标记接受它。如果你觉得这是值得你也可以upvote。不要张贴“谢谢” - 仅限评论。 –
['Token'接口](http://www.antlr.org/api/Java/org/antlr/v4/runtime/Token.html)有你需要的所有方法:'getLine()'和'getCharPositionInLine()'。 –
好的...可以给我示例如何使用这个接口吗?@Lucas Trzesniewski – Micle
不,我不会教你ANTLR的基础知识,本网站*不是*为此。 [阅读文档](https://github.com/antlr/antlr4/blob/master/doc/index.md),这个用法应该是*很明显。 –