CodeFactory.java 文件源码

java
阅读 17 收藏 0 点赞 0 评论 0

项目:cd2t-100 作者:
/**
 * 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);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号