mirror of
https://github.com/joshuadavidthomas/django-template-ast.git
synced 2025-09-26 18:19:09 +00:00
rename scan state for lexer to LexerState
(#12)
This commit is contained in:
parent
ab09e6058b
commit
a34ac87242
2 changed files with 18 additions and 6 deletions
17
src/lexer.rs
17
src/lexer.rs
|
@ -1,11 +1,11 @@
|
||||||
use crate::error::LexerError;
|
use crate::error::LexerError;
|
||||||
use crate::scanner::{Scanner, ScannerState};
|
use crate::scanner::{LexerState, Scanner};
|
||||||
use crate::token::{Token, TokenType, Tokenizer};
|
use crate::token::{Token, TokenType, Tokenizer};
|
||||||
|
|
||||||
pub struct Lexer<'a> {
|
pub struct Lexer<'a> {
|
||||||
source: &'a str,
|
source: &'a str,
|
||||||
tokens: Vec<Token>,
|
tokens: Vec<Token>,
|
||||||
state: ScannerState,
|
state: LexerState,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Lexer<'a> {
|
impl<'a> Lexer<'a> {
|
||||||
|
@ -13,7 +13,7 @@ impl<'a> Lexer<'a> {
|
||||||
Lexer {
|
Lexer {
|
||||||
source,
|
source,
|
||||||
tokens: Vec::new(),
|
tokens: Vec::new(),
|
||||||
state: ScannerState::new(),
|
state: LexerState::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,6 +262,17 @@ impl<'a> Scanner for Lexer<'a> {
|
||||||
.unwrap_or('\0')
|
.unwrap_or('\0')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn previous(&self) -> Self::Item {
|
||||||
|
if self.state.current > 0 {
|
||||||
|
self.source[..self.state.current]
|
||||||
|
.chars()
|
||||||
|
.last()
|
||||||
|
.unwrap_or('\0')
|
||||||
|
} else {
|
||||||
|
'\0'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn is_at_end(&self) -> bool {
|
fn is_at_end(&self) -> bool {
|
||||||
self.state.current >= self.source.len()
|
self.state.current >= self.source.len()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
pub struct ScannerState {
|
pub struct LexerState {
|
||||||
pub start: usize,
|
pub start: usize,
|
||||||
pub current: usize,
|
pub current: usize,
|
||||||
pub line: usize,
|
pub line: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ScannerState {
|
impl LexerState {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
ScannerState {
|
LexerState {
|
||||||
start: 0,
|
start: 0,
|
||||||
current: 0,
|
current: 0,
|
||||||
line: 1,
|
line: 1,
|
||||||
|
@ -22,5 +22,6 @@ pub trait Scanner {
|
||||||
fn advance(&mut self) -> Self::Item;
|
fn advance(&mut self) -> Self::Item;
|
||||||
fn peek(&self) -> Self::Item;
|
fn peek(&self) -> Self::Item;
|
||||||
fn peek_next(&self) -> Self::Item;
|
fn peek_next(&self) -> Self::Item;
|
||||||
|
fn previous(&self) -> Self::Item;
|
||||||
fn is_at_end(&self) -> bool;
|
fn is_at_end(&self) -> bool;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue