31 lines
1.3 KiB
Java
31 lines
1.3 KiB
Java
package ch.fritteli.gombaila;
|
|
|
|
import ch.fritteli.gombaila.domain.common.NodeProg;
|
|
import ch.fritteli.gombaila.domain.common.Token;
|
|
import ch.fritteli.gombaila.domain.generator.Generator;
|
|
import ch.fritteli.gombaila.domain.lexer.Lexer;
|
|
import ch.fritteli.gombaila.domain.parser.Parser;
|
|
import io.vavr.collection.Stream;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URISyntaxException;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Paths;
|
|
|
|
public class GombailaMain {
|
|
public static void main(@NotNull final String[] args) throws URISyntaxException, IOException {
|
|
final String string = Files.readString(Paths.get(Lexer.class.getClassLoader().getResource("gombaila/simple.gb").toURI()));
|
|
final Lexer lexer = new Lexer(string);
|
|
final Stream<Token> tokens = lexer.lex();
|
|
System.out.println("TOKENS:\n" + tokens.mkString("\n"));
|
|
final Parser parser = new Parser(tokens);
|
|
final NodeProg nodeProg = parser.parse();
|
|
System.out.println("STMTS:\n" + nodeProg.stmts().mkString("\n"));
|
|
final Generator generator = new Generator(nodeProg);
|
|
final String asm = generator.generate();
|
|
Files.writeString(Paths.get("./target/simple.asm"), asm, StandardCharsets.UTF_8);
|
|
}
|
|
}
|