LLK 0.6.1

Release notes

LLK Changes vs 0.6.0

Fixed a few bugs in the csharp formatter, ... etc.



  • FIXED - problem that code generator only generate code for the first child of an ASTtreeRef node in a treeparser grammar.

Support Projects Changes


  • CHANGE - Refactored IReadOnlyLocator.FileInfo interface as LocatorFileInfo class for csharp compatiblity.
  • CHANGE - Deleted LLKException.PREDICT_EXCEPTION which is not used.
  • CHANGE - Added ISourceText interface and ILLKToken and ILLKNode now both extends ISourceText.


  • FIXED - Fixed FormatterBase.emitSimpleStatement() to emit line break after the simple statement.


  • Refactored the index store interfaces to here for use by llk-csharp-model and potentially other grammar projects.
  • There are also lots of other refactorings in this project due to requirements in the llk-csharp-model project.


  • CHANGE - This release require gnu.getopt-1.0.10 from jpackage instead of the previous getopt 1.0.9.jar.


Sample Grammar Changes




  • FIXED - Grammar for CompilationUnitMembers to require ordering as specified in CSharp spec. (ie. extern alias, using directive, global attributes, namespace).
  • FIXED - Grammar for PrimaryExpression() to allow QualifiedAliasMember as prefix.
  • FIXED - Grammar for TypeArgumentsOrParameter() to allow empty <>.
  • FIXED - A number of formatter bug that some <...> and (...) expression are not onelined and indented properly.
  • FIXED - Name for Operator() and ConversionOperator() nodes.
  • CHANGE - There are some major refactoring of the csharp model AST nodes to move all resolved information as decoration (binding) to the nodes, instead of directly in the nodes. There are also some work in progress for the csharp resolver, However, the resovler is not quite working yet.
  • CHANGE - Refactored PrimaryExpression and related rules to minimize node creation.
  • CHANGE - Added LLKCSharpModel.parse() method that takes ICSharpCompilationUnitProcessor[] instead of single visitor to allow for multi-pass processing of the intermediate parse trees.





Requirements to run LLK

This release require gnu.getopt-1.0.10 from jpackage instead of the previous getopt 1.0.9.jar. See v0.6 release notes for details.

Requirement to run generated parsers

Same as requirement to run LLK above.

Requirement to compile LLK

See v0.6 release notes for details.

Running the binary

See v0.6 release notes for details.

Compiling the source

See v0.6 release notes for details.

Status and plans