TRLC is a domain-specific language developed at BMW for writing (and linking) requirements with meta-data.
The repository contains:
-
The language reference manual for TRLC. Previous versions are also available.
-
A pure Python reference implementation of TRLC.
The implementation is not very fast, but designed to be pedantically correct in following the language definition. The tools also include a powerful static analysis tool to find issues with types and user-defined check rules.
The Python implementation can be used for several purposes:
-
It can be used to validate other TRLC implementations.
-
It can be used to validate a body of requirements (e.g. a CI check that all requirements are well formed)
-
The API can be used to write other tools based on TRLC (for example a tool to render the requirements in HTML, a tool to diff requirements or perform an impact analysis, or a tool to perform software traceability, etc.)
- Tutorial (read this as a first introduction)
- Bazel integration (how to use TRLC inside a Bazel build)
- User manual: TRLC linter (the user manual for the TRLC static analysis and linter)
- Release Notes (read this to find out whats new)
- License
- Language Reference Manual (for language lawyers)
- Python API Documentation (API reference for end-users)
- AST Hierarchy (overview over all classes in the AST)
- Set up development environment
- Lexer/Parser Hierarchy (overview over all classes releated to the lexing and parsing of TRLC)
- Tool Architecture Overview
- TRLC Static Checker Slides (Kinda incomplete, designed to go along with a code walkthrough)
- Requirements Coverage Report
- Code Coverage Report
- TRLC_RST Convert TRLC Requirements for Sphinx Build
Optional dependency (not installed automatically):
- Binary CVC5
(An alternative to PyPI CVC5, make sure to rename the binary to
cvc5and put it on your PATH).
Special thanks to Florian Schanda for his many valuable contributions to this repository.