2015-05-18 17:07:40 +03:00
|
|
|
package com.annimon.ownlang;
|
|
|
|
|
|
|
|
import com.annimon.ownlang.parser.Lexer;
|
|
|
|
import com.annimon.ownlang.parser.Parser;
|
|
|
|
import com.annimon.ownlang.parser.Token;
|
2015-05-20 14:59:16 +03:00
|
|
|
import com.annimon.ownlang.parser.ast.Statement;
|
2015-06-29 20:50:59 +03:00
|
|
|
import com.annimon.ownlang.parser.visitors.AssignValidator;
|
|
|
|
import com.annimon.ownlang.parser.visitors.FunctionAdder;
|
|
|
|
import com.annimon.ownlang.parser.visitors.VariablePrinter;
|
2015-05-25 23:20:10 +03:00
|
|
|
import java.io.IOException;
|
|
|
|
import java.nio.file.Files;
|
|
|
|
import java.nio.file.Paths;
|
2015-05-18 17:07:40 +03:00
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author aNNiMON
|
|
|
|
*/
|
|
|
|
public final class Main {
|
|
|
|
|
2015-05-25 23:20:10 +03:00
|
|
|
public static void main(String[] args) throws IOException {
|
2015-07-11 21:20:56 +03:00
|
|
|
final String file = "examples/game/agar.own";
|
|
|
|
final String input = new String( Files.readAllBytes(Paths.get(file)), "UTF-8");
|
2015-05-25 23:20:10 +03:00
|
|
|
final List<Token> tokens = new Lexer(input).tokenize();
|
2015-07-11 21:20:56 +03:00
|
|
|
for (int i = 0; i < tokens.size(); i++) {
|
|
|
|
System.out.println(i + " " + tokens.get(i));
|
2015-05-18 17:07:40 +03:00
|
|
|
}
|
2015-07-11 21:20:56 +03:00
|
|
|
// for (Token token : tokens) {
|
|
|
|
// System.out.println(token);
|
|
|
|
// }
|
2015-05-18 17:07:40 +03:00
|
|
|
|
2015-06-07 16:35:04 +03:00
|
|
|
final Statement program = new Parser(tokens).parse();
|
|
|
|
System.out.println(program.toString());
|
2015-06-29 20:50:59 +03:00
|
|
|
program.accept(new FunctionAdder());
|
|
|
|
program.accept(new VariablePrinter());
|
|
|
|
program.accept(new AssignValidator());
|
2015-06-07 16:35:04 +03:00
|
|
|
program.execute();
|
2015-05-18 17:07:40 +03:00
|
|
|
}
|
|
|
|
}
|