/**
* Assembles the given code in to an {@link ExecutableCode}.
*
* @param code T code to be assembled.
*
* @return The executable code.
*
* @throws SyntaxError If the code contains syntax error(s).
* @throws LabelError If an undefined label used or duplicate labels exist.
* @see ExecutableCode
*
*/
public ExecutableCode assemble(String code) throws SyntaxError, LabelError {
AssemblerLexer lexer = new AssemblerLexer(CharStreams.fromString(code));
CommonTokenStream tokens = new CommonTokenStream(lexer);
AssemblerParser parser = new AssemblerParser(tokens);
parser.prog();
if(parser.getNumberOfSyntaxErrors() > 0) {
throw new SyntaxError("You have error(s) in your code.");
}
ConstantValidator.validate(code);
ExecutableCode executableCode = linker.link(code);
loader.load(executableCode);
return executableCode;
}
Assembler.java 文件源码
java
阅读 24
收藏 0
点赞 0
评论 0
项目:ETUmulator
作者:
评论列表
文章目录