This commit is contained in:
T0b1
2023-05-23 13:38:28 +02:00
parent 8e26fa9ec7
commit b365243a05
2 changed files with 53 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ extern {
mod faenc; mod faenc;
mod op_defs; mod op_defs;
mod tokenize;
use faenc::fe_enc64_1; use faenc::fe_enc64_1;
use faenc::FeReg; use faenc::FeReg;

52
src/tokenize.rs Normal file
View File

@@ -0,0 +1,52 @@
pub enum Token<'a> {
String(&'a str),
Mnem(),
Register(),
Number(i64),
// Keywords
Byte,
Word,
Dword,
Qword,
Ptr,
Lock,
Rep,
// Punctuation
DoubleColon,
Comma,
}
pub struct CodePos {
line: u32,
col: u32
}
pub fn parse_stry<'a>(asm: &'a str) -> Vec<(CodePos, Token<'a>)> {
let mut out = Vec::new();
for line in asm.lines() {
let line = line.trim();
// Remove comments
let line = match line.find(|c: char| c == '#' || c == ';') {
None => line,
Some(idx) => &line[..idx]
};
let line = match line.find("//") {
None => line,
Some(idx) => &line[..idx]
};
if line.is_empty() {
continue;
}
let line = line.trim();
}
out
}