reportLexicalError method

  1. @override
void reportLexicalError(
  1. int left_loc,
  2. int right_loc, [
  3. int? errorCode,
  4. int? error_left_loc_arg,
  5. int? error_right_loc_arg,
  6. List<String>? errorInfo_arg,
])
override

Implementation

@override
void reportLexicalError(int left_loc, int right_loc,
    [int? errorCode,
    int? error_left_loc_arg,
    int? error_right_loc_arg,
    List<String>? errorInfo_arg]) {
  // TODO: implement reportLexicalError
  var error_left_loc = 0;
  if (error_left_loc_arg != null) {
    error_left_loc = error_left_loc_arg;
  }
  var error_right_loc = 0;
  if (error_right_loc_arg != null) {
    error_right_loc = error_right_loc_arg;
  }
  var errorInfo = <String>[];
  if (errorInfo_arg != null) {
    errorInfo = errorInfo_arg;
  }
  if (null == errorCode) {
    errorCode = (right_loc >= streamLength
        ? EOF_CODE
        : left_loc == right_loc
            ? LEX_ERROR_CODE
            : INVALID_TOKEN_CODE);
    var tokenText = (errorCode == EOF_CODE
        ? 'End-of-file '
        : errorCode == INVALID_TOKEN_CODE
            ? '\"' + inputChars.substring(left_loc, right_loc + 1) + '\" '
            : '\"' + getCharValue(left_loc) + '\" ');
    error_left_loc = 0;
    error_right_loc = 0;
    errorInfo = [tokenText];
  }

  if (null == errMsg) {
    var locationInfo = getFileName() +
        ':' +
        getLineNumberOfCharAt(left_loc).toString() +
        ':' +
        getColumnOfCharAt(left_loc).toString() +
        ':' +
        getLineNumberOfCharAt(right_loc).toString() +
        ':' +
        getColumnOfCharAt(right_loc).toString() +
        ':' +
        error_left_loc.toString() +
        ':' +
        error_right_loc.toString() +
        ':' +
        errorCode.toString() +
        ': ';
    stdout.write('****Error: ' + locationInfo);

    for (var i = 0; i < errorInfo.length; i++) {
      stdout.write(errorInfo[i] + ' ');
    }

    stdout.writeln(errorMsgText[errorCode]);
  } else {
    errMsg!.handleMessage(
        errorCode,
        getLocation(left_loc, right_loc),
        getLocation(error_left_loc, error_right_loc),
        getFileName(),
        errorInfo);
  }
}