toString method

  1. @override
String toString({
  1. List<String>? ruleNames,
  2. Recognizer<ATNSimulator>? recog,
  3. RuleContext? stop,
})
override

A string representation of this object.

Some classes have a default textual representation, often paired with a static parse function (like int.parse). These classes will provide the textual representation as their string representation.

Other classes have no meaningful textual representation that a program will care about. Such classes will typically override toString to provide useful information when inspecting the object, mainly for debugging or logging.

Implementation

@override
String toString({
  List<String>? ruleNames,
  Recognizer? recog,
  RuleContext? stop,
}) {
  ruleNames = ruleNames ?? recog?.ruleNames;
  final buf = StringBuffer();
  RuleContext? p = this;
  buf.write('[');
  while (p != null && p != stop) {
    if (ruleNames == null) {
      if (!p.isEmpty) {
        buf.write(p.invokingState);
      }
    } else {
      final ruleIndex = p.ruleIndex;
      final ruleName = ruleIndex >= 0 && ruleIndex < ruleNames.length
          ? ruleNames[ruleIndex]
          : ruleIndex.toString();
      buf.write(ruleName);
    }

    if (p.parent != null && (ruleNames != null || !p.parent!.isEmpty)) {
      buf.write(' ');
    }

    p = p.parent;
  }

  buf.write(']');
  return buf.toString();
}