Merge remote-tracking branch 'refs/remotes/origin/main'

This commit is contained in:
ParkerTenBroeck 2025-12-22 15:58:41 -05:00
commit 48f0c6eed8
2 changed files with 38 additions and 2 deletions

View file

@ -14,8 +14,7 @@ d(q0, epsilon, B) = { (q0, [A B]), (q0, [B B]) }
// transition to q1 // transition to q1
d(q0, epsilon, z0) = { (q1, z0) } d(q0, epsilon, z0) = { (q1, z0) }
d(q0, epsilon, A) = { (q1, A) } d(q0, epsilon, A) = { (q1, A) }
d(q0, epsilon, B) = { (q1, B) }
//d(q0, epsilon, B) = { (q1, B) }
// consume stack until empty // consume stack until empty
d(q1, a, A) = { (q1, epsilon) } d(q1, a, A) = { (q1, epsilon) }

37
src/main.rs Normal file
View 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;
},
}
}
}