我目前正在使用 ANTLR4 访问者方法编写一个 TSQL (Sybase/Microsoft SQL) 到 MySQL 的翻译器。
我可以将评论和空格推送到不同的频道,以便以后可以使用这些信息。
不太清楚的是:
- 我如何取回数据?
- 更重要的是,我如何将注释和空格插入到我翻译的 MySQL 代码中?
回复:#1,这似乎可以获取所有标记的列表,包括注释/空格:
public static List<Token> getHiddenTokensFromString(String sqlIn, int hiddenChannel) {
CharStream charStream = CharStreams.fromString(sqlIn);
CaseChangingCharStream upper = new CaseChangingCharStream(charStream, true);
TSqlLexer lexer = new TSqlLexer(upper);
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer, hiddenChannel);
commonTokenStream.fill();
List<Token> hiddenTokens = commonTokenStream.getTokens();
return hiddenTokens;
}
关于#2,特别具有挑战性的是,作为翻译的一部分,必须移动 SQL 行,删除一些行并添加一些行。
任何帮助将不胜感激。
谢谢。