@algosail/parser
v0.1.3
Published
Parser for Sail language.
Downloads
225
Readme
@algosail/parser
Parser for the Sail language. Builds a symbol table from Sail and JavaScript (FFI) sources.
API
createParser()
Returns a parser instance (async).
import { createParser } from '@algosail/parser'
const parser = await createParser()parser.parseSail(uri, text)
Parses Sail source. Returns symbol table: { modules, groups, tags, words, errors, imports }.
parser.parseJs(uri, text)
Parses JavaScript FFI module (extracts Sail metadata from JSDoc @sail blocks). Returns { modules: {}, groups, tags, words }.
parser.getAST(uri) / setAST / removeAST
Cache for parsed results (used by LSP).
Structure
| File | Role |
|------|------|
| lib/symbolTable.js | buildSymbolTable — main entry |
| lib/word.js | getWordNodes — words from AST |
| lib/group.js | getTagNodes — groups and tags |
| lib/jsDoc.js | parseJsDoc — FFI from JSDoc |
| lib/imports.js | getImportNodes |
| lib/load.js | resolveModulePath, resolveFilePath |
| lib/types.js | sigType, sigItemType — signature parsing |
| lib/tokens.js | token extraction helpers |
| lib/sailTokenizer.js | tree-sitter Sail |
| lib/jsTokenizer.js | tree-sitter JavaScript |
Dependencies
@algosail/tree-sitter— Sail grammar WASMtree-sitter-javascript— JS grammar (for FFI)web-tree-sitter
Tests
npm testUses brittle. See lang/docs/TESTING.md.
