Skip to content

Commit c9c3ebf

Browse files
committed
add samples, fix derivation path
1 parent 0a4174d commit c9c3ebf

6 files changed

+120
-3
lines changed

sample/pda/0k1n-0_lt_k_le_n.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
start_state: 0
2+
bottom_character: Z
3+
accept_by_empty_stack: false
4+
accept_states: [0]
5+
rulebook:
6+
rules:
7+
- state: 0
8+
character: '0'
9+
pop_character: Z
10+
next_state: 2
11+
push_characters: ['0', Z]
12+
- state: 2
13+
character: '0'
14+
pop_character: '0'
15+
next_state: 2
16+
push_characters: ['0', '0']
17+
- state: 2
18+
character: '1'
19+
pop_character: '0'
20+
next_state: 1
21+
push_characters: []
22+
- state: 1
23+
character: '1'
24+
pop_character: '0'
25+
next_state: 1
26+
push_characters: []
27+
- state: 1
28+
character: '1'
29+
pop_character: Z
30+
next_state: 1
31+
push_characters: [Z]
32+
- state: 1
33+
character: ~
34+
pop_character: Z
35+
next_state: 0
36+
push_characters: []

sample/pda/0k1n-k_ge_n_gt_0.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
start_state: 0
2+
bottom_character: Z
3+
accept_by_empty_stack: false
4+
accept_states: [0]
5+
rulebook:
6+
rules:
7+
- state: 0
8+
character: '0'
9+
pop_character: Z
10+
next_state: 2
11+
push_characters: ['0', Z]
12+
- state: 2
13+
character: '0'
14+
pop_character: '0'
15+
next_state: 2
16+
push_characters: ['0', '0']
17+
- state: 2
18+
character: '1'
19+
pop_character: '0'
20+
next_state: 1
21+
push_characters: []
22+
- state: 1
23+
character: '1'
24+
pop_character: '0'
25+
next_state: 1
26+
push_characters: []
27+
- state: 1
28+
character: ~
29+
pop_character: '0'
30+
next_state: 1
31+
push_characters: []
32+
- state: 1
33+
character: ~
34+
pop_character: Z
35+
next_state: 0
36+
push_characters: []

sample/pda/0n1n0k1k.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
start_state: 0
2+
bottom_character: $
3+
accept_by_empty_stack: false
4+
accept_states: [0]
5+
rulebook:
6+
rules:
7+
- {state: 0, character: '0', pop_character: $, next_state: 1, push_characters: [a, $]}
8+
- {state: 1, character: '0', pop_character: a, next_state: 1, push_characters: [a, a]}
9+
- {state: 1, character: '1', pop_character: a, next_state: 2, push_characters: []}
10+
- {state: 2, character: '1', pop_character: a, next_state: 2, push_characters: []}
11+
- {state: 2, character: '0', pop_character: $, next_state: 3, push_characters: [a, $]}
12+
- {state: 3, character: '0', pop_character: a, next_state: 3, push_characters: [a, a]}
13+
- {state: 3, character: '1', pop_character: a, next_state: 3, push_characters: []}
14+
- {state: 3, character: ~, pop_character: $, next_state: 0, push_characters: []}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
start_state: 0
2+
bottom_character: $
3+
accept_by_empty_stack: false
4+
accept_states: [0]
5+
rulebook:
6+
rules:
7+
- {state: 0, character: a, pop_character: $, next_state: 1, push_characters: [$]}
8+
- {state: 0, character: b, pop_character: $, next_state: 2, push_characters: [$]}
9+
- {state: 1, character: a, pop_character: $, next_state: 0, push_characters: [$]}
10+
- {state: 1, character: b, pop_character: $, next_state: 3, push_characters: [$]}
11+
- {state: 2, character: b, pop_character: $, next_state: 0, push_characters: [$]}
12+
- {state: 2, character: a, pop_character: $, next_state: 3, push_characters: [$]}
13+
- {state: 3, character: b, pop_character: $, next_state: 1, push_characters: [$]}
14+
- {state: 3, character: a, pop_character: $, next_state: 2, push_characters: [$]}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
start_state: 0
2+
bottom_character: $
3+
accept_by_empty_stack: false
4+
accept_states: [0]
5+
rulebook:
6+
rules:
7+
- {state: 0, character: a, pop_character: $, next_state: 1, push_characters: [a, $]}
8+
- {state: 0, character: b, pop_character: $, next_state: 2, push_characters: [b, $]}
9+
- {state: 1, character: a, pop_character: a, next_state: 1, push_characters: [a, a]}
10+
- {state: 1, character: b, pop_character: a, next_state: 1, push_characters: []}
11+
- {state: 1, character: b, pop_character: $, next_state: 2, push_characters: [b, $]}
12+
- {state: 1, character: ~, pop_character: $, next_state: 0, push_characters: [$]}
13+
- {state: 2, character: b, pop_character: b, next_state: 2, push_characters: [b, b]}
14+
- {state: 2, character: a, pop_character: b, next_state: 2, push_characters: []}
15+
- {state: 2, character: a, pop_character: $, next_state: 1, push_characters: [a, $]}
16+
- {state: 2, character: ~, pop_character: $, next_state: 0, push_characters: [$]}

src/main.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ extern crate itertools;
44

55
#[macro_use]
66
extern crate serde_derive;
7-
extern crate serde_yaml;
87
extern crate serde;
8+
extern crate serde_yaml;
99

1010
mod args;
1111
mod cfg;
@@ -135,7 +135,7 @@ fn main() {
135135
let result = dpda_design.accepts(text.clone());
136136
if let Some(path) = result.path {
137137
println!(
138-
"{}",
138+
"{} -> [{}]",
139139
join(
140140
path.iter()
141141
.cloned()
@@ -146,7 +146,8 @@ fn main() {
146146
})
147147
.collect::<Vec<String>>(),
148148
" -> "
149-
)
149+
),
150+
result.cfg.state,
150151
);
151152
}
152153
if result.ok {

0 commit comments

Comments
 (0)