getNodeText static method

String getNodeText(
  1. Tree t, {
  2. Parser? recog,
  3. List<String>? ruleNames,
})

Implementation

static String getNodeText(
  Tree t, {
  Parser? recog,
  List<String>? ruleNames,
}) {
  ruleNames ??= recog?.ruleNames;
  if (ruleNames != null) {
    if (t is RuleContext) {
      final ruleIndex = t.ruleContext.ruleIndex;
      final ruleName = ruleNames[ruleIndex];
      final altNumber = t.altNumber;
      if (altNumber != ATN.INVALID_ALT_NUMBER) {
        return ruleName + ':$altNumber';
      }
      return ruleName;
    } else if (t is ErrorNode) {
      return t.toString();
    } else if (t is TerminalNode) {
      final symbol = (t).symbol;
      final s = symbol.text;
      return s ?? '';
    }
  }
  // no recog for rule names
  Object payload = t.payload;
  if (payload is Token) {
    return payload.text ?? '';
  }
  return t.payload.toString();
}