visitTerminalSymbol<E> method

  1. @override
Parser visitTerminalSymbol<E>(
  1. TerminalSymbol<E> node
)
override

Implementation

@override
Parser visitTerminalSymbol<E>(TerminalSymbol<E> node) {
  final expression = node.expression;
  final rule = expression.rule!;
  final name = rule.name;
  TerminalParser<E> getParser() {
    final parser = DummyParser<E>();
    if (options.debug) {
      return TerminalDebugParser<E>(parser, name, source: '$node');
    } else {
      return TerminalParser<E>(parser, name, source: '$node');
    }
  }

  var parser = rules[node] as TerminalParser<E>?;
  if (parser == null) {
    parser = getParser();
    rules[node] = parser;
    parser.parser = visitOrderedChoice(expression) as Parser<E>;
  }

  return parser;
}