readLuaAST function

AST? readLuaAST(
  1. BaseResults results,
  2. Uint8List content
)

Implementation

AST? readLuaAST(BaseResults results, Uint8List content) {
  final buffer = String.fromCharCodes(content);
  final Lexer t;

  try {
    t = Lexer.tokenize(buffer)
      ..dropComments()
      ..dropSemicolons();
  } catch (e) {
    results.addError(e.toString());
    return null;
  }

  // final int len = t.tokens.length;
  // for(int i = 0; i < len; i++) {
  //   final token = t.tokens[i];
  //   print('[$i]: $token');
  // }

  results.addAllErrors(t.errors);

  final Parser checker = Parser(t.tokens);
  final AST ast = checker.analyze();

  if (checker.errors.isNotEmpty) {
    results.addAllErrors(checker.errors);

    // Do not try to recover from errors.
    return null;
  }

  if (checker.warns.isNotEmpty) {
    results.addAllWarnings(checker.warns);
  }

  /*
  final Pretty printer = Pretty();
  final String content = printer.visitAST(ast);
  final String output = colorize(content);
  print(output);
  */

  return ast;
}