I recently started some activities to explore the use of SPARK/Ada to implement model processors. The first initial step is the design and implementation of an ISO/IEC 14977 EBNF parser in SPARK.
The code of this parser is available under the GMGPL licence. It is compatible with SPARK GPL 2010, with annotations to ensure there is no potential run-time errors in both the parser and pretty printer, and intermediate layers of the implementation.