org.antlr.v4.runtime.Parser.addParseListener()方法的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(5.9k)|赞(0)|评价(0)|浏览(173)

本文整理了Java中org.antlr.v4.runtime.Parser.addParseListener()方法的一些代码示例,展示了Parser.addParseListener()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Parser.addParseListener()方法的具体详情如下:
包路径:org.antlr.v4.runtime.Parser
类名称:Parser
方法名:addParseListener

Parser.addParseListener介绍

[英]Registers listener to receive events during the parsing process.

To support output-preserving grammar transformations (including but not limited to left-recursion removal, automated left-factoring, and optimized code generation), calls to listener methods during the parse may differ substantially from calls made by ParseTreeWalker#DEFAULT used after the parse is complete. In particular, rule entry and exit events may occur in a different order during the parse than after the parser. In addition, calls to certain rule entry methods may be omitted.

With the following specific exceptions, calls to listener events are deterministic, i.e. for identical input the calls to listener methods will be the same.

  • Alterations to the grammar used to generate code may change the behavior of the listener calls.
  • Alterations to the command line options passed to ANTLR 4 when generating the parser may change the behavior of the listener calls.
  • Changing the version of the ANTLR Tool used to generate the parser may change the behavior of the listener calls.
    [中]注册侦听器以在解析过程中接收事件。
    为了支持保留输出的语法转换(包括但不限于左递归移除、自动左因子分解和优化的代码生成),解析过程中对侦听器方法的调用可能与解析完成后使用的ParseTreeWalker#DEFAULT调用有很大不同。特别是,规则进入和退出事件在解析过程中的发生顺序可能与在解析器之后不同。此外,可以省略对某些规则输入方法的调用。
    除了以下特定的例外,对侦听器事件的调用是确定性的,即对于相同的输入,对侦听器方法的调用将是相同的。
    *更改用于生成代码的语法可能会改变侦听器调用的行为。
    *在生成解析器时,对传递给ANTLR 4的命令行选项的更改可能会改变侦听器调用的行为。
    *更改用于生成解析器的ANTLR工具的版本可能会更改侦听器调用的行为。

代码示例

代码示例来源:origin: org.antlr/antlr4-runtime

/**
 * Trim the internal lists of the parse tree during parsing to conserve memory.
 * This property is set to {@code false} by default for a newly constructed parser.
 *
 * @param trimParseTrees {@code true} to trim the capacity of the {@link ParserRuleContext#children}
 * list to its size after a rule is parsed.
 */
public void setTrimParseTree(boolean trimParseTrees) {
  if (trimParseTrees) {
    if (getTrimParseTree()) return;
    addParseListener(TrimToSizeListener.INSTANCE);
  }
  else {
    removeParseListener(TrimToSizeListener.INSTANCE);
  }
}

代码示例来源:origin: org.antlr/antlr4-runtime

/** During a parse is sometimes useful to listen in on the rule entry and exit
 *  events as well as token matches. This is for quick and dirty debugging.
 */
public void setTrace(boolean trace) {
  if ( !trace ) {
    removeParseListener(_tracer);
    _tracer = null;
  }
  else {
    if ( _tracer!=null ) removeParseListener(_tracer);
    else _tracer = new TraceListener();
    addParseListener(_tracer);
  }
}

代码示例来源:origin: com.impetus.fabric/fabric-jdbc-driver-shaded

/**
 * Trim the internal lists of the parse tree during parsing to conserve memory.
 * This property is set to {@code false} by default for a newly constructed parser.
 *
 * @param trimParseTrees {@code true} to trim the capacity of the {@link ParserRuleContext#children}
 * list to its size after a rule is parsed.
 */
public void setTrimParseTree(boolean trimParseTrees) {
  if (trimParseTrees) {
    if (getTrimParseTree()) return;
    addParseListener(TrimToSizeListener.INSTANCE);
  }
  else {
    removeParseListener(TrimToSizeListener.INSTANCE);
  }
}

代码示例来源:origin: io.virtdata/virtdata-lib-realer

/**
 * Trim the internal lists of the parse tree during parsing to conserve memory.
 * This property is set to {@code false} by default for a newly constructed parser.
 *
 * @param trimParseTrees {@code true} to trim the capacity of the {@link ParserRuleContext#children}
 * list to its size after a rule is parsed.
 */
public void setTrimParseTree(boolean trimParseTrees) {
  if (trimParseTrees) {
    if (getTrimParseTree()) return;
    addParseListener(TrimToSizeListener.INSTANCE);
  }
  else {
    removeParseListener(TrimToSizeListener.INSTANCE);
  }
}

代码示例来源:origin: uk.co.nichesolutions/antlr4-runtime

/**
 * Trim the internal lists of the parse tree during parsing to conserve memory.
 * This property is set to {@code false} by default for a newly constructed parser.
 *
 * @param trimParseTrees {@code true} to trim the capacity of the {@link ParserRuleContext#children}
 * list to its size after a rule is parsed.
 */
public void setTrimParseTree(boolean trimParseTrees) {
  if (trimParseTrees) {
    if (getTrimParseTree()) return;
    addParseListener(TrimToSizeListener.INSTANCE);
  }
  else {
    removeParseListener(TrimToSizeListener.INSTANCE);
  }
}

代码示例来源:origin: com.tunnelvisionlabs/antlr4-runtime

/**
 * Trim the internal lists of the parse tree during parsing to conserve memory.
 * This property is set to {@code false} by default for a newly constructed parser.
 *
 * @param trimParseTrees {@code true} to trim the capacity of the {@link ParserRuleContext#children}
 * list to its size after a rule is parsed.
 */
public void setTrimParseTree(boolean trimParseTrees) {
  if (trimParseTrees) {
    if (getTrimParseTree()) {
      return;
    }
    addParseListener(TrimToSizeListener.INSTANCE);
  }
  else {
    removeParseListener(TrimToSizeListener.INSTANCE);
  }
}

代码示例来源:origin: uk.co.nichesolutions/antlr4-runtime

/** During a parse is sometimes useful to listen in on the rule entry and exit
 *  events as well as token matches. This is for quick and dirty debugging.
 */
public void setTrace(boolean trace) {
  if ( !trace ) {
    removeParseListener(_tracer);
    _tracer = null;
  }
  else {
    if ( _tracer!=null ) removeParseListener(_tracer);
    else _tracer = new TraceListener();
    addParseListener(_tracer);
  }
}

代码示例来源:origin: io.virtdata/virtdata-lib-realer

/** During a parse is sometimes useful to listen in on the rule entry and exit
 *  events as well as token matches. This is for quick and dirty debugging.
 */
public void setTrace(boolean trace) {
  if ( !trace ) {
    removeParseListener(_tracer);
    _tracer = null;
  }
  else {
    if ( _tracer!=null ) removeParseListener(_tracer);
    else _tracer = new TraceListener();
    addParseListener(_tracer);
  }
}

代码示例来源:origin: com.tunnelvisionlabs/antlr4-runtime

/** During a parse is sometimes useful to listen in on the rule entry and exit
 *  events as well as token matches. This is for quick and dirty debugging.
 */
public void setTrace(boolean trace) {
  if ( !trace ) {
    removeParseListener(_tracer);
    _tracer = null;
  }
  else {
    if ( _tracer!=null ) removeParseListener(_tracer);
    else _tracer = new TraceListener();
    addParseListener(_tracer);
  }
}

代码示例来源:origin: com.impetus.fabric/fabric-jdbc-driver-shaded

/** During a parse is sometimes useful to listen in on the rule entry and exit
 *  events as well as token matches. This is for quick and dirty debugging.
 */
public void setTrace(boolean trace) {
  if ( !trace ) {
    removeParseListener(_tracer);
    _tracer = null;
  }
  else {
    if ( _tracer!=null ) removeParseListener(_tracer);
    else _tracer = new TraceListener();
    addParseListener(_tracer);
  }
}

相关文章