Skip to content

ratmice/nimbleparse_lsp

Repository files navigation

Purpose

Primarily intended for the development of grammars. It seeks to remove any/all extraneous steps between editing a grammar testing it.

It avoids generating source code, compiling the sources, subsequently it will not run actions embedded in the grammar. It will optionally build a generic syntax tree.

Reparsing is performed on the editors buffer, on change. So you do not need to save the changes to reparse. Parser tables are built in memory, so you can both edit the grammar and its input.

Error recovery is optional (enabled by default), but will be slower than disabling it.

Features

  • Parse test input on lex/yacc file change.
  • Parse test input on test input change.
  • Actions to show the state table of a parser.
  • Actions to show the generic ast for an input file.

Editor support

VSCode will automatically discover and register for the test input file extension Other editors require hard coding of the test input file extension.

Editor supported caveats
neovim ✔️
vscode ✔️

Configuration

[[parser]]
l_file = "src/foo.l"
y_file = "src/foo.y"
extension = ".foo"

[[tests]]
dir = "tests/pass"
pass = true

[[tests]]
dir = "tests/fail"
pass = false

VSCode Install

After installing prerequisites

cargo run --bin xtask -- install

for vscode you will need at least vscode, npm, vsce

npm install --global vsce

Neovim Install

Either: cargo run --bin xtask -- install --server or just run cargo install --path server.

Then and look at the configuration in neovim/

Xtask commands

  • Install e.g. cargo run --bin xtask -- install
  • Clean e.g. cargo run --bin xtask -- clean

Xtask options for development.

Install:

  • --console to the install command, to enable tokio-console support.
  • --debug to install with debug symbols.

Projects

Crimson

About

lsp server for grmtools lex & yacc

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published