An unofficial tree-sitter parser for Arm's Architecture Specification Language (ASL).
ASL itself has multiple versions and there are multiple syntax implementations, which all served as sources of the parser. The specifications and implementations are as follows, ordered from latest to earliest:
- [Implementation] The official ASL Reference Interpreter.
- [Specification] The official ASL Reference (DDI0626).
- [Specification] Architecture Specification Language - Language Reference Manual (DDI0612, deprecated).
- [Implementation] The original interpreter (deprecated).
The grammar is mainly based on 3, but also incorporates syntax variants from 1 and 4. The relaxation is because the goal is to perform quick and robust semantic syntax highlighting, rather than to completely parse a specific language version. In terms of 2's versioning, the grammar is closest to ASLv1.
This project is still a work-in-progress. Some planned improvements are:
- Refactor the grammar to use TypeScript to inline production rules which matches the empty string, rather than copy-paste definitions.
- Overtime, migrate to the official interpreter's syntax (1 from the above list).
- Release supporting software, including a neovim plugin for
nvim-treesitter
and a binary for HTML syntax highlighting.
This a personal project, with no official affiliations with Arm. Opinions expressed in this project are personal and not a reflection of those of my employer. For more information, see the license.