@@ -0,0 +1,1684 @@
+package net.zero918nobita.acinonyx;%0A%0Aimport java.util.ArrayList;%0A%0Aclass Lexer %7B%0A  static ArrayList%3CArrayList%3CToken%3E%3E lex(String src) %7B%0A    if (src.charAt(src.length() - 1) == '%5Cn')%0A      src = src.substring(0, src.length() - 1);%0A%0A    ArrayList%3CArrayList%3CToken%3E%3E tokens = new ArrayList%3C%3E();%0A    tokens.add(new ArrayList%3C%3E());%0A%0A    StringBuilder stock = new StringBuilder();%0A%0A    int line = 1;%0A    int letter = 1;%0A%0A    for (int i = 0; i %3C src.length(); i++) %7B%0A      char c = src.charAt(i);%0A%0A      if (c == '%5Cn') %7B%0A        line++;%0A        letter = 1;%0A      %7D else %7B%0A        letter++;%0A      %7D%0A%0A      if ((c == ' ' %7C%7C c == '%5Cn') && stock.length() != 0) %7B%0A        tokens.get(tokens.size() - 1).add(new Token(stock.toString(), line, letter - (1 + stock.length())));%0A        stock.delete(0, stock.length());%0A        continue;%0A      %7D%0A%0A      if ((c == ' ' %7C%7C c == '%5Cn') && stock.length() == 0) continue;%0A%0A      if (c == '(' %7C%7C c == ')' %7C%7C c == '.') %7B%0A        tokens.get(tokens.size() - 1).add(new Token(stock.toString(), line, letter - (1 + stock.length())));%0A        stock.delete(0, stock.length());%0A%0A        tokens.get(tokens.size() - 1).add(new Token(String.valueOf(c), line, letter - 1));%0A        continue;%0A      %7D%0A%0A      if (c == ';') %7B%0A        if (stock.length() != 0) %7B%0A          tokens.get(tokens.size() - 1).add(new Token(stock.toString(), line, letter - (1 + stock.length())));%0A          stock.delete(0, stock.length());%0A        %7D%0A        tokens.add(new ArrayList%3C%3E());%0A        continue;%0A      %7D%0A%0A      stock.append(c);%0A    %7D%0A%0A    if (stock.length() != 0)%0A      tokens.get(tokens.size() - 1).add(new Token(stock.toString(), line, letter - stock.length()));%0A%0A    return tokens;%0A  %7D%0A%7D%0A

Add Lexer class