oak-wolfram 0.0.8

Wolfram Language parser with support for Mathematica syntax and symbolic computation.
Documentation
use oak_core::{Lexer, Parser, source::SourceText};
use oak_wolfram::{WolframLanguage, WolframLexer, WolframParser};

#[test]
fn test_parser_basic() {
    let input = "f[x, {1, 2, 3}]";
    let source = SourceText::new(input.to_string());
    let language = WolframLanguage::default();
    let lexer = WolframLexer::new(&language);

    let mut cache = oak_core::ParseSession::<WolframLanguage>::default();
    let _lex_output = lexer.lex(&source, &[], &mut cache);

    let parser = WolframParser::new(&language);
    let diagnostics = parser.parse(&source, &[], &mut cache);

    assert!(diagnostics.result.is_ok())
}

#[test]
fn test_parser_binary_expr() {
    let input = "a + b * c";
    let source = SourceText::new(input.to_string());
    let language = WolframLanguage::default();
    let mut cache = oak_core::ParseSession::<WolframLanguage>::default();
    let parser = WolframParser::new(&language);
    let output = parser.parse(&source, &[], &mut cache);
    assert!(output.result.is_ok());
}

#[test]
fn test_parser_complex() {
    let input = "f[x] + g[y, {1, 2}] * (a + b)!";
    let source = SourceText::new(input.to_string());
    let language = WolframLanguage::default();
    let mut cache = oak_core::ParseSession::<WolframLanguage>::default();
    let parser = WolframParser::new(&language);
    let output = parser.parse(&source, &[], &mut cache);
    assert!(output.result.is_ok());
}