YAPP XSLT is a lexical scanner and recursive descent parser generator, implemented in XSLT. No language extensions or non-standard features are used apart from the nodeset() function. Grammars are expressed in XML form and transformed by the generator stylesheet into another XSLT. A lexical scanner may also be generated from the same grammar.
The generated parser stylesheet has named templates for each construct in the grammar. It also incorporates any xslt code that was declared in the grammar, and can thus be used to directly process input files containing unparsed text.
The package also consists of a grammar for BNF that can be compiled into a parser capable of creating YAPP grammars in XML form from BNF notation, and a stylesheet that performs left-recursion elimination.
YAPP XSLT is published under the GNU General Public Licence.
More information about YAPP is available here.