diff options
Diffstat (limited to 'src/semantic/temp.rs')
-rw-r--r-- | src/semantic/temp.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/semantic/temp.rs b/src/semantic/temp.rs new file mode 100644 index 0000000..abd7e86 --- /dev/null +++ b/src/semantic/temp.rs @@ -0,0 +1,26 @@ +pub struct Temp { + counter: usize, +} + +#[derive(Copy,Clone,Debug,Eq,PartialEq)] +pub struct TempName(usize); +#[derive(Copy,Clone,Debug,Eq,PartialEq)] +pub struct TempLabel(usize); + +impl Temp { + pub fn new() -> Temp { + Temp { counter: 0 } + } + + pub fn next_name(&mut self) -> TempName { + let idx = self.counter; + self.counter += 1; + TempName(idx) + } + + pub fn next_label(&mut self) -> TempLabel { + let idx = self.counter; + self.counter += 1; + TempLabel(idx) + } +} |