summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-02-04 18:17:28 +1300
committerBen Bridle <ben@derelict.engineering>2025-02-04 18:18:40 +1300
commitcf1af202e01cdcbac437ac96f21c4437bf27bb0d (patch)
tree8817d87fe2061c8710a6f3d608bb77218826781b /src
parentc25cfe6829c509297af77fe3a468e81243c3589b (diff)
downloadbedrock-asm-cf1af202e01cdcbac437ac96f21c4437bf27bb0d.zip
Use locator types from assembler crate
Work-in-progress commit while functionality is moved over to the assembler crate. This commit doesn't compile.
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs5
-rw-r--r--src/locators.rs5
-rw-r--r--src/locators/bytecode.rs39
-rw-r--r--src/locators/source.rs75
4 files changed, 3 insertions, 121 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 3470e6e..2108252 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -9,13 +9,14 @@ mod symbol_resolver;
pub use gather_libraries::*;
pub use symbol_resolver::*;
-mod locators;
mod tokens;
mod translators;
-pub use locators::*;
pub use tokens::*;
pub use translators::*;
mod print;
pub use print::*;
+
+
+pub use assembler::*;
diff --git a/src/locators.rs b/src/locators.rs
deleted file mode 100644
index b7db1ee..0000000
--- a/src/locators.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-mod bytecode;
-mod source;
-
-pub use bytecode::*;
-pub use source::*;
diff --git a/src/locators/bytecode.rs b/src/locators/bytecode.rs
deleted file mode 100644
index 500e9f0..0000000
--- a/src/locators/bytecode.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-pub struct BytecodeSpan {
- /// The location of this span in the assembled bytecode.
- pub location: BytecodeLocation,
- /// The bytes which this span represents.
- pub bytes: Vec<u8>,
-}
-
-
-impl Default for BytecodeSpan {
- fn default() -> Self {
- Self {
- location: BytecodeLocation {
- address: 0,
- length: 0,
- },
- bytes: Vec::new(),
- }
- }
-}
-
-
-#[derive(Clone, Copy)]
-pub struct BytecodeLocation {
- // Address of the first byte.
- pub address: usize,
- // Length as a number of bytes.
- pub length: usize,
-}
-
-
-impl std::fmt::Display for BytecodeLocation {
- fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
- write!(f, "0x{:>04x}", self.address)?;
- if self.length > 0 {
- write!(f, "-0x{:>04x}", self.address + self.length)?;
- }
- Ok(())
- }
-}
diff --git a/src/locators/source.rs b/src/locators/source.rs
deleted file mode 100644
index 20542e3..0000000
--- a/src/locators/source.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-use std::path::PathBuf;
-
-
-#[derive(Clone)]
-pub struct SourceSpan {
- /// The source characters which this span represents.
- pub string: String,
- /// The location of this span in the merged source file.
- pub in_merged: SourceLocation,
- /// The location of this span in the original source file.
- pub in_source: Option<SourceLocation>,
-}
-
-impl SourceSpan {
- pub fn location(&self) -> &SourceLocation {
- self.in_source.as_ref().unwrap_or(&self.in_merged)
- }
-}
-
-
-#[derive(Clone)]
-pub struct SourceLocation {
- /// File path the source was loaded from.
- pub path: Option<PathBuf>,
- /// Position of the first character of the string.
- pub start: Position,
- /// Position of the final character of the string.
- pub end: Position,
-}
-
-impl std::fmt::Display for SourceLocation {
- fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
- let y = self.start.line + 1;
- let x = self.start.column + 1;
- match &self.path {
- Some(path) => write!(f, "{}:{y}:{x}", path.as_os_str().to_string_lossy()),
- None => write!(f, "<unknown>:{y}:{x}"),
- }
- }
-}
-
-
-#[derive(Clone, Copy)]
-pub struct Position {
- /// The number of lines that precede this line in the file.
- pub line: usize,
- /// The number of characters that precede this character in the line.
- pub column: usize,
-}
-
-impl Position {
- pub fn to_next_char(&mut self) {
- self.column += 1;
- }
-
- pub fn to_next_line(&mut self) {
- self.line += 1;
- self.column = 0;
- }
-
- pub fn advance(&mut self, c: char) {
- match c {
- '\n' => self.to_next_line(),
- _ => self.to_next_char(),
- }
- }
-}
-
-impl std::fmt::Display for Position {
- fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
- let y = self.line + 1;
- let x = self.column + 1;
- write!(f, "{y}:{x}")
- }
-}