Skip to content

Commit 6cd15a8

Browse files
Chore: Refactor of code and docstrings formating.
1 parent f9e72ce commit 6cd15a8

14 files changed

Lines changed: 46 additions & 53 deletions

File tree

compiler/src/modules/lexer/mod.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
pub mod tables;
44
mod scan;
55

6-
use scan::Scanner;
6+
use scan::{Scanner};
77

88
const MAX_SOURCE_SIZE: usize = 10 * 1024 * 1024;
99

@@ -17,7 +17,7 @@ pub struct Token {
1717
pub kind: TokenType,
1818
pub line: usize,
1919
pub start: usize,
20-
pub end: usize,
20+
pub end: usize
2121
}
2222

2323
/*
@@ -92,8 +92,7 @@ pub fn lexer(source: &str) -> impl Iterator<Item = Token> + '_ {
9292
let next_demotes = matches!(
9393
stream.peek(),
9494
Some((
95-
TokenType::Lpar | TokenType::Colon | TokenType::Equal | TokenType::Comma
96-
| TokenType::Rpar | TokenType::Rsqb | TokenType::Newline,
95+
TokenType::Lpar | TokenType::Colon | TokenType::Equal | TokenType::Comma | TokenType::Rpar | TokenType::Rsqb | TokenType::Newline,
9796
_, _, _
9897
)) | Option::None
9998
);

compiler/src/modules/lexer/scan.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
// lexer/scan.rs
22

33
use super::TokenType;
4-
use super::tables::*;
54
use alloc::vec::Vec;
65
use core::cmp::Ordering;
76

7+
use super::tables::*;
8+
89
const MAX_INDENT_DEPTH: usize = 100;
910
const MAX_FSTRING_DEPTH: usize = 200;
1011

compiler/src/modules/lexer/tables.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ pub fn keyword(s: &[u8]) -> Option<TokenType> {
128128
(8, b'c') => if s == b"continue" { Some(TokenType::Continue) } else { None },
129129
(8, b'n') => if s == b"nonlocal" { Some(TokenType::Nonlocal) } else { None },
130130

131-
_ => None,
131+
_ => None
132132
}
133133
}
134134

@@ -145,7 +145,7 @@ pub fn is_fstring_prefix(s: &[u8]) -> bool {
145145
(s[0], s[1]),
146146
(b'f' | b'F', b'r' | b'R') | (b'r' | b'R', b'f' | b'F')
147147
),
148-
_ => false,
148+
_ => false
149149
}
150150
}
151151

@@ -157,7 +157,7 @@ pub fn is_string_prefix(s: &[u8]) -> bool {
157157
(s[0], s[1]),
158158
(b'b' | b'B', b'r' | b'R') | (b'r' | b'R', b'b' | b'B')
159159
),
160-
_ => false,
160+
_ => false
161161
}
162162
}
163163

@@ -172,6 +172,6 @@ pub fn utf8_char_len(first: u8) -> usize {
172172
0x00..=0x7F => 1,
173173
0xC0..=0xDF => 2,
174174
0xE0..=0xEF => 3,
175-
_ => 4,
175+
_ => 4
176176
}
177177
}

compiler/src/modules/parser/control.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use super::Parser;
44
use super::types::OpCode;
5+
56
use crate::modules::lexer::{Token, TokenType};
67
use alloc::{string::{String, ToString}, vec, vec::Vec, format};
78

@@ -300,11 +301,11 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
300301
pub(super) fn import_stmt(&mut self) {
301302
self.advance();
302303
loop {
303-
let module = self.dotted_name();
304+
let module = self.dotted_name();
304305
let mod_idx = self.chunk.push_name(&module);
305306
self.chunk.emit(OpCode::Import, mod_idx);
306307
if self.eat_if(TokenType::As) {
307-
let t = self.advance();
308+
let t = self.advance();
308309
let alias = self.lexeme(&t).to_string();
309310
self.store_name(alias);
310311
} else {
@@ -319,7 +320,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
319320

320321
pub(super) fn from_stmt(&mut self) {
321322
self.advance();
322-
let module = self.dotted_name();
323+
let module = self.dotted_name();
323324
let mod_idx = self.chunk.push_name(&module);
324325
self.chunk.emit(OpCode::Import, mod_idx);
325326
self.eat(TokenType::Import);
@@ -328,12 +329,12 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
328329
self.chunk.emit(OpCode::ImportFrom, star);
329330
} else {
330331
loop {
331-
let t = self.advance();
332-
let name = self.lexeme(&t).to_string();
332+
let t = self.advance();
333+
let name = self.lexeme(&t).to_string();
333334
let name_idx = self.chunk.push_name(&name);
334335
self.chunk.emit(OpCode::ImportFrom, name_idx);
335336
if self.eat_if(TokenType::As) {
336-
let t = self.advance();
337+
let t = self.advance();
337338
let alias = self.lexeme(&t).to_string();
338339
self.store_name(alias);
339340
} else {
@@ -348,7 +349,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
348349
}
349350

350351
pub(super) fn dotted_name(&mut self) -> String {
351-
let t = self.advance();
352+
let t = self.advance();
352353
let mut name = self.lexeme(&t).to_string();
353354
while self.eat_if(TokenType::Dot) {
354355
let t = self.advance();

compiler/src/modules/parser/expr.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
2727
self.advance();
2828
self.expr_bp(0);
2929
self.chunk.emit(OpCode::JumpIfFalse, 0);
30-
let jf = self.chunk.instructions.len() - 1;
30+
let jf = self.chunk.instructions.len() - 1;
3131
self.chunk.emit(OpCode::Jump, 0);
3232
let jmp = self.chunk.instructions.len() - 1;
3333
self.patch(jf);
@@ -119,8 +119,8 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
119119
TokenType::Slash => Some((19, 20, OpCode::Div)),
120120
TokenType::Percent => Some((19, 20, OpCode::Mod)),
121121
TokenType::DoubleSlash => Some((19, 20, OpCode::FloorDiv)),
122-
TokenType::DoubleStar => Some((22, 21, OpCode::Pow)), // l_bp > r_bp -> right-assoc: 2**3**2 == 2**(3**2)
123-
_ => None,
122+
TokenType::DoubleStar => Some((22, 21, OpCode::Pow)),
123+
_ => None
124124
}
125125
}
126126

@@ -169,7 +169,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
169169
}
170170
TokenType::Complex => {
171171
let raw = self.lexeme(&t).replace('_', "");
172-
let s = raw.trim_end_matches(|c: char| c == 'j' || c == 'J');
172+
let s = raw.trim_end_matches(|c: char| c == 'j' || c == 'J');
173173
self.emit_const(Value::Float(s.parse().unwrap_or(0.0)));
174174
}
175175
TokenType::Int | TokenType::Float => {
@@ -229,7 +229,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
229229
let mut buf = [0u8; 128];
230230
let i = self.chunk.push_name(Self::ssa_name(&name, ver, &mut buf));
231231
self.chunk.emit(OpCode::StoreName, i);
232-
self.chunk.emit(OpCode::LoadName, i);
232+
self.chunk.emit(OpCode::LoadName, i);
233233
}
234234
Some(TokenType::Lpar) => {
235235
let _ = self.call(name);
@@ -379,8 +379,8 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
379379
self.expr();
380380
self.chunk.emit(OpCode::ReturnValue, 0);
381381

382-
let body = core::mem::take(&mut self.chunk);
383-
self.chunk = saved_chunk;
382+
let body = core::mem::take(&mut self.chunk);
383+
self.chunk = saved_chunk;
384384
self.ssa_versions = saved_ver;
385385

386386
let fi = self.chunk.functions.len() as u16;

compiler/src/modules/parser/literals.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
// parser/literals.rs
22

33
use super::Parser;
4-
use super::types::{OpCode, Value, SSAChunk};
54
use super::types::builtin;
5+
6+
use super::types::{OpCode, Value, SSAChunk};
67
use crate::modules::lexer::{Token, TokenType};
78
use alloc::{string::{String, ToString}, vec::Vec, format};
89

@@ -204,7 +205,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
204205
self.advance();
205206
break;
206207
}
207-
_ => break,
208+
_ => break
208209
}
209210
}
210211
if parts > 0 {
@@ -317,14 +318,14 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
317318
self.eat(TokenType::Colon);
318319

319320
let saved_chunk = core::mem::take(&mut self.chunk);
320-
let saved_ver = core::mem::take(&mut self.ssa_versions);
321+
let saved_ver = core::mem::take(&mut self.ssa_versions);
321322
self.ssa_versions = saved_ver.clone();
322323

323324
self.compile_block();
324325

325326
let body = core::mem::take(&mut self.chunk);
326327
self.chunk = saved_chunk;
327-
self.ssa_versions = saved_ver;
328+
self.ssa_versions = saved_ver;
328329

329330
let ci = self.chunk.classes.len() as u16;
330331
self.chunk.classes.push(body);
@@ -423,7 +424,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
423424

424425
pub(super) fn compile_body(&mut self, params: &[String]) -> SSAChunk {
425426
let saved_chunk = core::mem::take(&mut self.chunk);
426-
let saved_ver = core::mem::take(&mut self.ssa_versions);
427+
let saved_ver = core::mem::take(&mut self.ssa_versions);
427428

428429
self.ssa_versions = saved_ver.clone();
429430
for p in params {

compiler/src/modules/parser/mod.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub use types::*;
1111

1212
use crate::modules::lexer::{Token, TokenType};
1313
use alloc::{string::{String, ToString}, vec::Vec, format};
14+
1415
use hashbrown::HashMap;
1516
use core::iter::Peekable;
1617

@@ -117,7 +118,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
117118

118119
let (a, b) = match j.then {
119120
Some(t) => (t, post),
120-
None => (post, j.backup.clone()),
121+
None => (post, j.backup.clone()),
121122
};
122123

123124
let mut divergent: Vec<&String> = a
@@ -136,7 +137,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
136137
let mut bx = [0u8; 128];
137138
let ia = self.chunk.push_name(Self::ssa_name(name, va, &mut ba));
138139
let ib = self.chunk.push_name(Self::ssa_name(name, vb, &mut bb));
139-
let v = self.increment_version(name);
140+
let v = self.increment_version(name);
140141
let ix = self.chunk.push_name(Self::ssa_name(name, v, &mut bx));
141142
self.chunk.phi_sources.push((ia, ib));
142143
self.chunk.emit(OpCode::Phi, ix);
@@ -195,8 +196,8 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
195196
self.tokens.next();
196197
}
197198
Some(TokenType::Nl | TokenType::Comment) => { self.tokens.next(); }
198-
Some(k) => return Some(k),
199-
None => return None,
199+
Some(k) => return Some(k),
200+
None => return None,
200201
}
201202
}
202203
}
@@ -256,7 +257,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
256257
let line = self.errors.last().map(|e| e.line).unwrap_or(0);
257258
self.errors.push(Diagnostic {
258259
line, col: 0, end: 0,
259-
msg: "program too large: exceeded maximum instruction limit".into(),
260+
msg: "program too large: exceeded maximum instruction limit".into()
260261
});
261262
}
262263

compiler/src/modules/parser/stmt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ impl<'src, I: Iterator<Item = Token>> Parser<'src, I> {
397397
}
398398
if let Some(sp) = star_pos {
399399
let before = sp as u16;
400-
let after = (targets.len() - sp - 1) as u16;
400+
let after = (targets.len() - sp - 1) as u16;
401401
self.chunk.emit(OpCode::UnpackEx, (before << 8) | after);
402402
} else {
403403
self.chunk.emit(OpCode::UnpackSequence, targets.len() as u16);

compiler/src/modules/vm/builtins.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
// vm/builtins.rs
22

33
use super::VM;
4+
use core::cell::RefCell;
5+
46
use super::types::*;
7+
58
use alloc::{string::{String, ToString}, vec::Vec, vec, rc::Rc, format};
6-
use core::cell::RefCell;
79

810
impl<'a> VM<'a> {
911

compiler/src/modules/vm/mod.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,11 +278,10 @@ impl<'a> VM<'a> {
278278
Fetches instructions by IP, routes each opcode to its handler arm.
279279
*/
280280

281-
pub(crate) fn exec(&mut self, chunk: &SSAChunk, slots: &mut Vec<Option<Val>>) -> Result<Val, VmErr> {
281+
pub(crate) fn exec(&mut self, chunk: &SSAChunk, slots: &mut Vec<Option<Val>>) -> Result<Val, VmErr> {
282282
let slots_base = self.live_slots.len();
283283
let n = chunk.instructions.len();
284284

285-
// Box per-frame cache to reduce stack frame size in debug builds
286285
let mut cache = Box::new(OpcodeCache::new(n));
287286

288287
let mut ip = 0usize;
@@ -298,12 +297,11 @@ pub(crate) fn exec(&mut self, chunk: &SSAChunk, slots: &mut Vec<Option<Val>>) ->
298297
}
299298
}
300299

301-
let prev_slots = &chunk.prev_slots; // SSA alias table
300+
let prev_slots = &chunk.prev_slots;
302301

303302
loop {
304303
if ip >= n { return Ok(Val::none()); }
305304

306-
// Fast path: hot adaptive overlay first, then inline cache promotion
307305
if let Some(fast) = cache.get_fast(ip) {
308306
ip += 1;
309307
if self.exec_fast(fast)? { continue; }

0 commit comments

Comments
 (0)