Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
94d7be7
[add] FirstSet 構造体(雑)
Yuta1004 Nov 9, 2024
f82dd16
[fix] expand を十分な回数実行するように修正
Yuta1004 Nov 9, 2024
7686af7
[fix] FirstSet の実装を修正
Yuta1004 Nov 9, 2024
10c4211
[add] Follow 構造体
Yuta1004 Nov 9, 2024
0c25926
[add] DirectorSet 構造体
Yuta1004 Nov 9, 2024
19b7896
[clean] parse_lr_common 内での gen_blocks 有効化を無しに
Yuta1004 Nov 9, 2024
a6bebd2
[change] parse_lr_common -> parse_common
Yuta1004 Nov 9, 2024
9afc033
[add] dev フラグ追加
Yuta1004 Nov 9, 2024
dd8f500
[add] parse_lr_common 仮作成
Yuta1004 Nov 9, 2024
0ecf2af
[change] parse_lr1 -> parse_lr_lr1
Yuta1004 Nov 9, 2024
60512f6
[add] LR0DFA など LR(0) に関する構造体を実装
Yuta1004 Nov 9, 2024
5143226
[update] dev フラグに parse_lr_common クレートを含めるようにした
Yuta1004 Nov 9, 2024
0f59598
[fix] LR0Item での Epsilon の扱いを修正
Yuta1004 Nov 10, 2024
494a8f5
[update] LR0 系構造体の公開メソッド等を調整
Yuta1004 Nov 10, 2024
2bd8da3
[fix] LR0ItemSet::expand を十分な回数実行するように修正
Yuta1004 Nov 10, 2024
937bbc2
[add] LRTable 系構造体を実装 (一部仮)
Yuta1004 Nov 10, 2024
c42592a
[add] LRDriver を作成 (一部仮)
Yuta1004 Nov 10, 2024
0734359
[clean] 未使用型パラメータを削除
Yuta1004 Nov 10, 2024
16f3000
[change] LRDriver が LRTable を参照で持つようにした
Yuta1004 Nov 10, 2024
5378a05
[add] parse_lr_lr0
Yuta1004 Nov 10, 2024
9c015c3
[add] lr0 フラグ追加
Yuta1004 Nov 10, 2024
7e352a6
[update] Rule 構造体が RuleTag を持つようにした
Yuta1004 Nov 11, 2024
cd84b18
[change] LR0DFANode::contains -> find_all
Yuta1004 Nov 11, 2024
3a8b870
[fix] ノード被りを考慮して LR0DFA を作成するように修正
Yuta1004 Nov 11, 2024
8547b86
[add] RuleSet::update_top メソッドを追加
Yuta1004 Nov 11, 2024
bc240f1
[update] dfa, item, rule 系構造体に Debug,Display を実装した
Yuta1004 Nov 11, 2024
bbc6bf2
[fix] LR0Item の Debug 表示で最後尾のドットが表示されないバグを修正
Yuta1004 Nov 11, 2024
16f427d
[update] LRTable::set_reduce -> set
Yuta1004 Nov 11, 2024
1508a3b
[fix] LR0DFA の生成ミスを修正
Yuta1004 Nov 11, 2024
45eafab
[add] LRDriver::accepted メソッド追加
Yuta1004 Nov 11, 2024
7a81435
[add] parse_lr_lr0 実装
Yuta1004 Nov 11, 2024
5c504c4
[add] parse_lr_slr1 作成
Yuta1004 Nov 11, 2024
814803a
[fix] parse_lr_lr0 のテストコードを一部修正
Yuta1004 Nov 11, 2024
885f910
[update] FirstSet::get の引数の型を RuleElem に変更
Yuta1004 Nov 12, 2024
035cb49
[add] FirstSet::get_by 追加
Yuta1004 Nov 12, 2024
33a1816
[fix] FirstSet::get_by の挙動を修正
Yuta1004 Nov 12, 2024
c70120d
[add] LR1DFA, LR1Item など作成
Yuta1004 Nov 12, 2024
2df435c
[update] LR1 を新版に置き換え
Yuta1004 Nov 12, 2024
07ce4ba
[add] Token, Rule, RuleElem に Serialize, Deserialize を載せた
Yuta1004 Nov 12, 2024
daa1890
[clean] RuleSet::{first, null} を削除
Yuta1004 Nov 12, 2024
651d6ec
[add] LR0, LR1, SLR1 に Cacheable を載せた
Yuta1004 Nov 12, 2024
64c54df
[update] ir_sexp のテストコードの一部を更新
Yuta1004 Nov 12, 2024
e73bb21
[update] parse_lr_common が公開するモジュール構造を更新
Yuta1004 Nov 12, 2024
4ac742f
[update] parse_lr_common が公開するモジュール構造を更新 2
Yuta1004 Nov 12, 2024
4ac8f54
[add] LRError 作成
Yuta1004 Nov 12, 2024
a4aba2f
[add] Rule に Display,Debug を載せた
Yuta1004 Nov 12, 2024
d342255
[add] 構文解析表構築時のコンフリクトをエラーとして吐き出すようにした
Yuta1004 Nov 12, 2024
768f462
[fix] LRTableBuilder::set の挙動を修正
Yuta1004 Nov 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 73 additions & 22 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 22 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ copager_cfg = { path = "./crates/cfg" }
copager_lex = { path = "./crates/lex", optional = true }
copager_lex_regex = { path = "./crates/lex_regex", optional = true }
copager_parse = { path = "./crates/parse", optional = true }
copager_parse_lr1 = { path = "./crates/parse_lr1", optional = true }
copager_parse_common = { path = "./crates/parse_common", optional = true }
copager_parse_lr_common = { path = "./crates/parse_lr_common", optional = true }
copager_parse_lr_lr0 = { path = "./crates/parse_lr_lr0", optional = true }
copager_parse_lr_lr1 = { path = "./crates/parse_lr_lr1", optional = true }
copager_parse_lr_slr1 = { path = "./crates/parse_lr_slr1", optional = true }
copager_ir = { path = "./crates/ir" }
copager_ir_void = { path = "./crates/ir_void", optional = true }
copager_ir_sexp = { path = "./crates/ir_sexp", optional = true }
Expand All @@ -29,17 +33,27 @@ example_lang_pl0 = { path = "./examples/lang_pl0" }
example_lang_xml = { path = "./examples/lang_xml" }

[features]
# all
all = [
"prebuild", "derive", "dev", # common
"regexlex", # lex
"lr0", "lr1", "slr1", # parse
"void", "sexp" # ir
]

# common
default = ["dep:copager_lex", "dep:copager_parse"]
all = ["prebuild", "derive", "regexlex", "lr1", "void", "sexp"]
prebuild = ["dep:serde_json"]
derive = ["copager_lex/derive", "copager_parse/derive"]
dev = ["dep:copager_parse_common", "dep:copager_parse_lr_common"]

# lex
regexlex = ["dep:copager_lex_regex"]

# parse
lr1 = ["dep:copager_parse_lr1"]
lr0 = ["dep:copager_parse_lr_lr0"]
lr1 = ["dep:copager_parse_lr_lr1"]
slr1 = ["dep:copager_parse_lr_slr1"]

# ir
void = ["dep:copager_ir_void"]
Expand All @@ -56,8 +70,12 @@ members = [
"./crates/lex_derive",
"./crates/lex_regex",
"./crates/parse",
"./crates/parse_common",
"./crates/parse_derive",
"./crates/parse_lr1",
"./crates/parse_lr_common",
"./crates/parse_lr_lr0",
"./crates/parse_lr_lr1",
"./crates/parse_lr_slr1",
"./crates/ir",
"./crates/ir_void",
"./crates/ir_sexp",
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@ Rust製パーサジェネレータ
- `all`
- `derive`
- `prebuild`
- `dev`

### Lex

- `regexlex` : [crates/lex_regex](crates/lex_regex)

### Parse

- `lr0` : [crates/parse_lr0](crates/parse_lr0)
- `lr1` : [crates/parse_lr1](crates/parse_lr1)

### IR
Expand Down
1 change: 1 addition & 0 deletions crates/cfg/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ edition = "2021"
[dependencies]
anyhow = { workspace = true }
thiserror = { workspace = true }
serde = { workspace = true, features = ["derive"] }
Loading