summaryrefslogblamecommitdiff
path: root/src/lib.rs
blob: a657354674553049cddcb020d2687be7e7568467 (plain) (tree)
1
2
3
4
5



                    












                                                                                             
 
mod addressing;
mod syntactic_token;
mod semantic_token;
mod tokenizer;
mod error;
mod assembler;

pub use addressing::{CharAddress, SourceLocation, BytecodeLocation};
pub use syntactic_token::{SyntacticToken, SyntacticTokenType};
pub use semantic_token::{SemanticToken, SemanticTokenType, LabelDefinition, MacroDefinition};
pub use error::Error;
pub use tokenizer::TokenIterator;
pub use assembler::Assembler;

pub fn assemble(source_code: &str) -> (Vec<u8>, Vec<SemanticToken>) {
    let mut assembler = Assembler::new();
    assembler.tokenise_source(source_code);
    assembler.resolve_references();
    assembler.generate_bytecode()
}