app function

void app(
  1. List<String> arguments,
  2. String versionString,
  3. String preAmble,
  4. String quitStatement,
  5. Map<String, dynamic> tokenMap,
  6. Map<String, dynamic> grammar,
  7. List<String> cosmeticTokens,
  8. Map<String, dynamic> functionMap,
)

This method contains the entire app/interpreter. This is the only method you need to call!

Implementation

void app(
    List<String> arguments,
    String versionString,
    String preAmble,
    String quitStatement,
    Map<String, dynamic> tokenMap,
    Map<String, dynamic> grammar,
    List<String> cosmeticTokens,
    Map<String, dynamic> functionMap) {
  if (arguments.length == 1) {
    if (arguments[0] == '--version') {
      print(versionString);
    } else if (arguments[0] == '--shell') {
      shell(preAmble, quitStatement, tokenMap, grammar, cosmeticTokens,
          functionMap);
    } else {
      readFile(arguments[0], tokenMap, grammar, cosmeticTokens, functionMap);
    }
  } else if (arguments[0] == '--diagnostics') {
    String text = File(arguments[1]).readAsStringSync();
    List<dynamic> parsedTokens = parseText(tokenMap, text);
    List<dynamic> parseTree =
        constructParseTree(grammar, cosmeticTokens, parsedTokens);
    visualParseTree(parseTree);
  } else {
    print('Invalid options supplied!');
    exit(0);
  }
}