/**
* Orchestrates the lexing and parsing of the {@code programText} with respect
* to the specified configuration (parameters). The data extracted from
* the process is returned afterwards. The returned object also includes
* the perceived input errors.
*
* @param registerNameSet A set containing the usable register names.
* @param portNameSet A set containing the usable existing port names.
* @param programText The source code to be processed.
*
* @return the instructions, labels, rules and exceptions extracted from
* the {@code programText} bundled up
*/
public static CodeElementSet createCodeElementSet(Set<String> registerNameSet,
Set<String> portNameSet,
String programText) {
String sanitized = sanitizeText(programText);
AsmLexer asmLexer = new AsmLexer(new ANTLRInputStream(sanitized));
AsmParser asmParser = new AsmParser(new CommonTokenStream(asmLexer));
AsmListenerImpl asmListener =
new AsmListenerImpl(registerNameSet, portNameSet);
AsmErrorListener asmErrorListener =
new AsmErrorListener();
/*
* Remove the default error listener which prints messages to STDERR.
*/
asmLexer.removeErrorListener(ConsoleErrorListener.INSTANCE);
asmParser.removeErrorListener(ConsoleErrorListener.INSTANCE);
asmLexer.addErrorListener(asmErrorListener);
asmParser.addErrorListener(asmErrorListener);
asmParser.addParseListener(asmListener);
logger.debug("Creating code element set...");
asmParser.program();
return CodeElementSet.fromListeners(asmListener, asmErrorListener);
}
CodeFactory.java 文件源码
java
阅读 17
收藏 0
点赞 0
评论 0
项目:cd2t-100
作者:
评论列表
文章目录