2015-05-18 17:07:40 +03:00
|
|
|
package com.annimon.ownlang;
|
|
|
|
|
2015-05-20 14:59:16 +03:00
|
|
|
import com.annimon.ownlang.lib.Variables;
|
2015-05-18 17:07:40 +03:00
|
|
|
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-05-18 17:07:40 +03:00
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author aNNiMON
|
|
|
|
*/
|
|
|
|
public final class Main {
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
2015-05-20 14:59:16 +03:00
|
|
|
final String input1 = "word = 2 + 2\nword2 = PI + word";
|
2015-05-20 10:58:38 +03:00
|
|
|
// final String input2 = "(GOLDEN_RATIO + 2) * #f";
|
|
|
|
final String input2 = "GOLDEN_RATIO";
|
2015-05-20 14:59:16 +03:00
|
|
|
final List<Token> tokens = new Lexer(input1).tokenize();
|
2015-05-18 17:07:40 +03:00
|
|
|
for (Token token : tokens) {
|
|
|
|
System.out.println(token);
|
|
|
|
}
|
|
|
|
|
2015-05-20 14:59:16 +03:00
|
|
|
final List<Statement> statements = new Parser(tokens).parse();
|
|
|
|
for (Statement statement : statements) {
|
|
|
|
System.out.println(statement);
|
2015-05-18 17:07:40 +03:00
|
|
|
}
|
2015-05-20 14:59:16 +03:00
|
|
|
for (Statement statement : statements) {
|
|
|
|
statement.execute();
|
|
|
|
}
|
|
|
|
System.out.printf("%s = %f\n", "word", Variables.get("word"));
|
|
|
|
System.out.printf("%s = %f\n", "word2", Variables.get("word2"));
|
2015-05-18 17:07:40 +03:00
|
|
|
}
|
|
|
|
}
|