本文整理汇总了Java中org.antlr.v4.Tool.addListener方法的典型用法代码示例。如果您正苦于以下问题:Java Tool.addListener方法的具体用法?Java Tool.addListener怎么用?Java Tool.addListener使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.antlr.v4.Tool
的用法示例。
在下文中一共展示了Tool.addListener方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: buildFromSnapshot
import org.antlr.v4.Tool; //导入方法依赖的package包/类
public static ParserInterpreterData buildFromSnapshot(DocumentSnapshot snapshot) {
LexerInterpreterData lexerInterpreterData = LexerInterpreterData.buildFromSnapshot(snapshot);
if (lexerInterpreterData == null) {
return null;
}
List<SyntaxError> syntaxErrors = new ArrayList<>();
Tool tool = new CustomTool(snapshot);
tool.errMgr = new CustomErrorManager(tool);
tool.addListener(new ErrorListener(snapshot, tool, syntaxErrors));
tool.libDirectory = new File(snapshot.getVersionedDocument().getFileObject().getPath()).getParent();
ANTLRStringStream stream = new ANTLRStringStream(snapshot.getText());
stream.name = snapshot.getVersionedDocument().getFileObject().getNameExt();
GrammarRootAST ast = tool.parse(stream.name, stream);
Grammar grammar = tool.createGrammar(ast);
if (grammar instanceof LexerGrammar) {
return null;
}
tool.process(grammar, false);
ParserInterpreterData data = new ParserInterpreterData();
// start by filling in the lexer data
data.lexerInterpreterData = lexerInterpreterData;
// then fill in the parser data
data.grammarFileName = grammar.fileName;
data.serializedAtn = ATNSerializer.getSerializedAsString(grammar.atn, Arrays.asList(grammar.getRuleNames()));
data.vocabulary = grammar.getVocabulary();
data.ruleNames = new ArrayList<>(grammar.rules.keySet());
return data;
}
示例2: createANTLRToolForLoadingGrammars
import org.antlr.v4.Tool; //导入方法依赖的package包/类
public static Tool createANTLRToolForLoadingGrammars() {
Tool antlr = new Tool();
antlr.errMgr = new PluginIgnoreMissingTokensFileErrorManager(antlr);
antlr.errMgr.setFormat("antlr");
LoadGrammarsToolListener listener = new LoadGrammarsToolListener(antlr);
antlr.removeListeners();
antlr.addListener(listener);
return antlr;
}
示例3: parseImpl
import org.antlr.v4.Tool; //导入方法依赖的package包/类
@Override
protected CompiledModelV4 parseImpl(ParserTaskManager taskManager, ParseContext context, final DocumentSnapshot snapshot)
throws InterruptedException, ExecutionException {
Parameters.notNull("snapshot", snapshot);
synchronized (lock) {
if (snapshot.equals(lastSnapshot)) {
if (lastException != null) {
throw new ExecutionException("An unexpected error occurred.", lastException);
}
return new CompiledModelV4(snapshot, lastResult);
}
if (LOGGER.isLoggable(Level.FINE)) {
LOGGER.log(Level.FINE, "Reparsing snapshot {0}", new Object[] { snapshot });
}
try {
final List<SyntaxError> syntaxErrors = new ArrayList<>();
final Tool tool = new CustomTool(snapshot);
tool.errMgr = new CustomErrorManager(tool);
tool.addListener(new ErrorListener(snapshot, tool, syntaxErrors));
tool.libDirectory = new File(snapshot.getVersionedDocument().getFileObject().getPath()).getParent();
GrammarRootAST root = tool.parseGrammarFromString(snapshot.getText().toString());
Grammar grammar = null;
CommonToken[] tokens = null;
if (root != null) {
ANTLRStringStream inputStream = (ANTLRStringStream)root.token.getInputStream();
inputStream.name = snapshot.getVersionedDocument().getFileObject().getPath();
grammar = tool.createGrammar(root);
grammar.fileName = snapshot.getVersionedDocument().getFileObject().getNameExt();
tool.process(grammar, false);
CommonTokenStream tokenStream = (CommonTokenStream)root.tokenStream;
List<? extends Token> tokenList = tokenStream.getTokens();
tokens = tokenList.toArray(new CommonToken[0]);
}
CompiledFileModelV4 currentResult = new CompiledFileModelV4(grammar, root, syntaxErrors, snapshot.getVersionedDocument().getFileObject(), tokens);
lastSnapshot = snapshot;
lastResult = currentResult;
lastException = null;
return new CompiledModelV4(snapshot, currentResult);
} catch (Exception ex) {
lastSnapshot = snapshot;
lastResult = null;
lastException = ex;
throw new ExecutionException("An unexpected error occurred.", ex);
}
}
}