#incremental #parser #applesoft

tree-sitter-applesoft

applesoft grammar for the tree-sitter parsing library

13 stable releases (3 major)

new 3.2.1 May 12, 2024
3.1.1 May 28, 2023
3.0.0 Feb 26, 2023
2.0.4 Feb 12, 2023
0.0.1 Nov 28, 2021

#82 in Text editors

Download history 18/week @ 2024-02-25 5/week @ 2024-03-03 19/week @ 2024-03-10 9/week @ 2024-03-17 1/week @ 2024-03-24 20/week @ 2024-03-31 1/week @ 2024-04-07 109/week @ 2024-04-14 140/week @ 2024-04-21 9/week @ 2024-04-28

261 downloads per month
Used in 2 crates (via a2kit)

MIT license

515KB
21K SLoC

C 20K SLoC // 0.0% comments JavaScript 423 SLoC // 0.1% comments Scheme 121 SLoC Rust 33 SLoC // 0.1% comments

Parser for Applesoft BASIC

This is the rust binding for tree-sitter-applesoft. To use the parser, include the following in your package's Cargo.toml:

[dependencies]
tree-sitter = "0.22.4"
tree-sitter-applesoft = "3.2.1"

Here is a trivial main.rs example:

use tree_sitter;
use tree_sitter_applesoft;

fn main() {
    let code = "10 GOTO 10\n";
    let mut parser = tree_sitter::Parser::new();
    parser.set_language(&tree_sitter_applesoft::language())
      .expect("Error loading Applesoft grammar");
    let tree = parser.parse(code,None).unwrap();

    println!("{}",tree.root_node().to_sexp());
}

This should print the syntax tree

(source_file (line (linenum) (statement (tok_goto) (linenum))))

For more on parsing with rust, see the general guidance here.

For specific guidance on this parser, see the wiki.

For an example of a project that uses this library, see a2kit.

Dependencies

~2.7–4MB
~71K SLoC