mirror of
https://github.com/ParkerTenBroeck/automata.git
synced 2026-06-06 21:24:06 -04:00
Merge remote-tracking branch 'refs/remotes/origin/main'
This commit is contained in:
commit
48f0c6eed8
2 changed files with 38 additions and 2 deletions
|
|
@ -14,8 +14,7 @@ d(q0, epsilon, B) = { (q0, [A B]), (q0, [B B]) }
|
|||
// transition to q1
|
||||
d(q0, epsilon, z0) = { (q1, z0) }
|
||||
d(q0, epsilon, A) = { (q1, A) }
|
||||
|
||||
//d(q0, epsilon, B) = { (q1, B) }
|
||||
d(q0, epsilon, B) = { (q1, B) }
|
||||
|
||||
// consume stack until empty
|
||||
d(q1, a, A) = { (q1, epsilon) }
|
||||
|
|
|
|||
37
src/main.rs
Normal file
37
src/main.rs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
use automata::automata::npda;
|
||||
|
||||
fn main() {
|
||||
let input = include_str!("../example.npda");
|
||||
|
||||
let table = match npda::TransitionTable::load_table(input) {
|
||||
Ok((ok, logs)) => {
|
||||
for log in logs.displayable() {
|
||||
println!("{log}")
|
||||
}
|
||||
ok
|
||||
}
|
||||
Err(logs) => {
|
||||
for log in logs.displayable() {
|
||||
println!("{log}")
|
||||
}
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
let input = "aababdsaab";
|
||||
println!("running on: '{input}'");
|
||||
let mut simulator = npda::Simulator::begin(input, table);
|
||||
loop {
|
||||
match simulator.step(){
|
||||
npda::SimulatorResult::Pending => {},
|
||||
npda::SimulatorResult::Reject => {
|
||||
println!("REJECTED");
|
||||
break;
|
||||
},
|
||||
npda::SimulatorResult::Accept(npda) => {
|
||||
println!("ACCEPT: {npda:?}");
|
||||
break;
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue