gombaila/src/main/java/ch/fritteli/gombaila/GombailaMain.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);
}
}