mirror of
https://github.com/voltrevo/ValueScript.git
synced 2026-01-12 15:08:07 -05:00
Assemble classes
This commit is contained in:
@@ -167,6 +167,8 @@ impl<'a> Assembler<'a> {
|
||||
|
||||
if c == 'f' {
|
||||
self.assemble_function();
|
||||
} else if c == 'c' {
|
||||
self.assemble_class();
|
||||
} else {
|
||||
self.assemble_value();
|
||||
}
|
||||
@@ -445,6 +447,23 @@ impl<'a> Assembler<'a> {
|
||||
self.fn_data.labels_map.resolve(&mut self.output);
|
||||
}
|
||||
|
||||
fn assemble_class(&mut self) {
|
||||
self.parse_exact("class(");
|
||||
self.output.push(ValueType::Class as u8);
|
||||
self.parse_optional_whitespace();
|
||||
|
||||
self.assemble_value();
|
||||
self.parse_optional_whitespace();
|
||||
|
||||
self.parse_exact(",");
|
||||
self.parse_optional_whitespace();
|
||||
|
||||
self.assemble_value();
|
||||
self.parse_optional_whitespace();
|
||||
|
||||
self.parse_exact(")");
|
||||
}
|
||||
|
||||
fn assemble_instruction(&mut self) {
|
||||
let instr = self.parse_instruction_word();
|
||||
|
||||
@@ -897,6 +916,7 @@ enum ValueType {
|
||||
Register = 0x0e,
|
||||
External = 0x0f,
|
||||
Builtin = 0x10,
|
||||
Class = 0x11,
|
||||
}
|
||||
|
||||
fn advance_chars(iter: &mut std::iter::Peekable<std::str::Chars>, len: usize) {
|
||||
|
||||
Reference in New Issue
Block a user