6 releases
0.4.0 | Nov 29, 2023 |
---|---|
0.3.0 | Nov 28, 2023 |
0.1.3 | Dec 10, 2021 |
0.1.2 | Nov 30, 2021 |
#2871 in Parser implementations
28 downloads per month
Used in foam-highlighter
375KB
12K
SLoC
OpenFOAM grammar for Tree-Sitter
This project is in early phases of development; expect things to change considerably
DISCLAIMER: This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks.
This is a generic fail-tolerant parser for OpenFOAM case dictionaries. The goal is to reach a state that is "good enough" for syntax highlighting and feasible symbols extraction.
Features
- Semantic understanding of OpenFOAM IO entries (Dictionaries, key-value pairs, ... etc)
- Syntax highlighting (Targeting nvim-treesitter mainly)
- Highlighting of C++ code blocks and regular expressions, so if your client does not install those parsers automatically, you might have to install them manually
- Scope-awareness is there (Per-dictionary) although not used yet
- Text-objects for dictionaries and key-value pairs to use with TreeSitter textobjects plugin for NeoVim
- Text-subjects to use with TreeSitter textsubjects plugin for NeoVim
- Expression-based folding
Running tests
- Unit tests for both parsing and highlighting (Highlighting is not consistent between
tree-sitter highlight
andnvim-treesitter
) are executed withtree-sitter test
(Check thetest
folder) testOFFiles.sh $FOAM_TUTORIALS
parses all OpenFOAM dictionaries in the tutorials directory- Currently, the parser works on almost all OpenFOAM 8 and Foam-Extend 4 tutorial files (Well, some files are faulty from source!)
Contributing
- Pull requests are welcome!
- And, no I'm not going to support specific keyword highlighting
(eg.
scalarField
will never be treated in a special way) unless I find an "unattended" way to do that.
Dependencies
~2.8–4MB
~74K SLoC