Skip to main content

probe/
probe.rs

1//! Scratch probe: parse argv sentences and print FOL or the error.
2
3fn main() {
4    for arg in std::env::args().skip(1) {
5        if let Some(rest) = arg.strip_prefix("tokens:") {
6            let mut interner = logicaffeine_language::Interner::new();
7            let mut lexer = logicaffeine_language::Lexer::new(rest, &mut interner);
8            let toks = lexer.tokenize();
9            for t in &toks {
10                println!("  {:?}", t.kind);
11            }
12            continue;
13        }
14        if let Some(rest) = arg.strip_prefix("session:") {
15            let mut session = logicaffeine_language::Session::new();
16            for turn in rest.split('|') {
17                match session.eval(turn) {
18                    Ok(fol) => println!("SOK  {turn}\n  => {fol}"),
19                    Err(e) => println!("SERR {turn}\n  => {e:?}"),
20                }
21            }
22            continue;
23        }
24        match logicaffeine_language::compile::compile(&arg) {
25            Ok(fol) => println!("OK   {arg}\n  => {fol}"),
26            Err(e) => println!("ERR  {arg}\n  => {e:?}"),
27        }
28        let forest = logicaffeine_language::compile::compile_forest(&arg);
29        println!("FOREST({}) {:?}", forest.len(), forest);
30    }
31}