Skip to content

Commit d16de5a

Browse files
committed
Added a V2 Parser:
- Generating LALRPOP grammar rules - Changes in the language definition - Added some tests and comparison against V1 Some more small fixes
1 parent 516671f commit d16de5a

File tree

250 files changed

+17913
-101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

250 files changed

+17913
-101
lines changed

Cargo.lock

Lines changed: 111 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ indicatif = { version = "0.17.12", features = ["in_memory"] }
136136
indoc = { version = "2.0.6" }
137137
Inflector = { version = "0.11.4" }
138138
itertools = { version = "0.13.0" }
139+
lalrpop = { version = "0.22.2" }
140+
lalrpop-util = { version = "0.22.2", features = ["lexer", "unicode"] }
139141
libc = { version = "0.2.0" }
140142
log = { version = "0.4.27" }
141143
logos = { version = "0.16.0" }

crates/codegen-v2/parser/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ publish = false
99
[dependencies]
1010
language_v2_definition = { workspace = true }
1111
serde = { workspace = true }
12+
semver = { workspace = true }
1213

1314
[lints]
1415
workspace = true

crates/codegen-v2/parser/src/lexer/builder.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ impl LexerModelBuilder {
125125
fn convert_keyword<'a>(&'a self, item: &'a KeywordItem) -> impl Iterator<Item = Lexeme> + 'a {
126126
item.definitions.iter().map(|def| Lexeme::Keyword {
127127
kind: item.name.to_string(),
128+
identifier: item.identifier.to_string(),
128129
regex: self.convert_keyword_value(&def.value),
129130
reserved: def.reserved.clone(),
130131
})

crates/codegen-v2/parser/src/lexer/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ pub enum Lexeme {
3838
},
3939
Keyword {
4040
kind: String,
41+
identifier: String,
4142
regex: String,
4243
reserved: Option<VersionSpecifier>,
4344
},
Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,2 @@
11
pub mod lexer;
2-
3-
use language_v2_definition::model::Language;
4-
use serde::Serialize;
5-
6-
use crate::lexer::LexerModel;
7-
8-
#[derive(Clone, Debug, Serialize)]
9-
pub struct ParserModel {
10-
pub lexer: LexerModel,
11-
}
12-
13-
impl ParserModel {
14-
pub fn from_language(language: &Language) -> Self {
15-
Self {
16-
lexer: LexerModel::from_language(language),
17-
}
18-
}
19-
}
2+
pub mod parser;

0 commit comments

Comments
 (0)