Files
crafting-interpreters/jlox/tlox/src/main/java/xyz/ctsk/lox/LoxLanguage.java

29 lines
1006 B
Java
Raw Normal View History

2024-09-02 16:14:27 +02:00
package xyz.ctsk.lox;
import com.oracle.truffle.api.CallTarget;
import com.oracle.truffle.api.TruffleLanguage;
2024-09-02 16:55:13 +02:00
import com.oracle.truffle.api.strings.TruffleString;
2024-09-02 16:14:27 +02:00
import xyz.ctsk.lox.nodes.LoxExpressionNode;
import xyz.ctsk.lox.nodes.LoxNode;
import xyz.ctsk.lox.nodes.LoxRootNode;
import xyz.ctsk.lox.parser.LoxParser;
@TruffleLanguage.Registration(id = LoxLanguage.ID, name = LoxLanguage.NAME)
public class LoxLanguage extends TruffleLanguage<Void> {
public static final String ID = "lox";
public static final String NAME = "Lox";
2024-09-02 16:55:13 +02:00
public static final TruffleString.Encoding STRING_ENCODING = TruffleString.Encoding.UTF_16;
2024-09-02 16:14:27 +02:00
@Override
protected CallTarget parse(ParsingRequest request) throws Exception {
LoxNode node = LoxParser.parseLox(request.getSource().getReader());
var rootNode = new LoxRootNode((LoxExpressionNode) node);
return rootNode.getCallTarget();
}
@Override
protected Void createContext(Env env) {
return null;
}
}