Skip to content

Commit 62d6f7f

Browse files
committed
feat: update lexer type definitions in examples for consistency
1 parent b4a64d9 commit 62d6f7f

File tree

4 files changed

+18
-40
lines changed

4 files changed

+18
-40
lines changed

parse-it-codegen/src/parser/frontend.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,11 @@ impl ParserMod {
4242
parsers.push(parser);
4343
}
4444

45-
let mut items = self.items;
46-
if !items.iter().any(|item| match item {
47-
syn::Item::Type(ty) => ty.ident == "Lexer",
48-
_ => false,
49-
}) {
50-
items.push(syn::parse_quote! {
51-
type Lexer = #crate_name::CharLexer;
52-
});
53-
}
54-
5545
let middle = Middle {
5646
attrs: self.attrs,
5747
crate_name,
5848
mod_name: self.mod_name,
59-
items,
49+
items: self.items,
6050
parsers,
6151
debug: self.config.debug,
6252
};

parse-it/examples/brainfuck.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ parse_it::parse_it! {
1818
mod parse {
1919
use super::Instr;
2020

21+
type Lexer = parse_it::CharLexer;
22+
2123
pub Brainfuck -> Vec<Instr> {
2224
Primitive* => self,
2325
}

parse-it/examples/calc.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ use parse_it::ParseIt;
33
parse_it::parse_it! {
44
#[parser]
55
mod parse {
6+
type Lexer = parse_it::CharLexer;
7+
68
Digit -> char {
79
@['0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'] => self
810
}

parse-it/examples/json.rs

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ parse_it::parse_it! {
2020
Number(f64),
2121
String(String),
2222
Keyword,
23+
Punct,
2324
}
2425

2526
pub Initial -> Token {
@@ -33,12 +34,12 @@ parse_it::parse_it! {
3334
"true" => Token::Keyword,
3435
"false" => Token::Keyword,
3536
"null" => Token::Keyword,
36-
r"\[" => Token::Keyword,
37-
r"\]" => Token::Keyword,
38-
r"\{" => Token::Keyword,
39-
r"\}" => Token::Keyword,
40-
r"," => Token::Keyword,
41-
r":" => Token::Keyword,
37+
r"\[" => Token::Punct,
38+
r"\]" => Token::Punct,
39+
r"\{" => Token::Punct,
40+
r"\}" => Token::Punct,
41+
r"," => Token::Punct,
42+
r":" => Token::Punct,
4243
}
4344

4445
Number -> f64 {
@@ -65,7 +66,7 @@ parse_it::parse_it! {
6566
use super::JsonValue;
6667
use super::lex::Token;
6768

68-
type Lexer = super::Debug;
69+
type Lexer = super::lex::Initial;
6970

7071
Object -> JsonValue {
7172
'{' '}' => JsonValue::Object(HashMap::new()),
@@ -84,38 +85,21 @@ parse_it::parse_it! {
8485
}
8586

8687
Key -> String {
87-
Token::String(buf) => buf.clone()
88+
Token::String(buf) => buf
8889
}
8990

9091
pub Value -> JsonValue {
9192
Token::Number(i) => JsonValue::Number(i),
92-
Token::String(buf) => JsonValue::String(buf.clone()),
93-
"true" => JsonValue::Boolean(true),
94-
"false" => JsonValue::Boolean(false),
95-
"null" => JsonValue::Null,
93+
Token::String(buf) => JsonValue::String(buf),
94+
&Token::Keyword "true" => JsonValue::Boolean(true),
95+
&Token::Keyword "false" => JsonValue::Boolean(false),
96+
&Token::Keyword "null" => JsonValue::Null,
9697
Object => self,
9798
Array => self,
9899
}
99100
}
100101
}
101102

102-
#[derive(Clone)]
103-
pub struct Debug;
104-
105-
impl parse_it::LexIt for Debug {
106-
type Token<'a> = lex::Token;
107-
108-
fn new() -> Self {
109-
Self
110-
}
111-
112-
fn next<'a>(&self, lexbuf: &mut parse_it::LexerState<'a>) -> Option<Self::Token<'a>> {
113-
let result = lex::Initial.next(lexbuf);
114-
eprintln!("Lexing: {:?} at {:?}", result, lexbuf.span());
115-
result
116-
}
117-
}
118-
119103
fn main() {
120104
let input = r#"{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"], "address": null}"#;
121105

0 commit comments

Comments
 (0)