Data types for attribute grammars.
The semantics package defines the Analyser class that can be considered the main class of Mork. An Analyser reads a streams into objects which includes scanning, parsing and attribution.
TODO o global attribute optimization o 'global' variable for attribute that occur at most once. o support different threads for scanning, parsing and attribution? Attribution might run when scanning blocks on slow input. o how to get the size of the parsed file o would be useful to add statistics to Java examples o do I need an explicit EOF? o special Variable of the start symbol? o position variable for arbitrary symbols? o optimize computation of scanner attributes o compute position in error situations only o optimizations o "parse into abstract syntax" o compute attributes as early as possible -- and free memory o improved semantic errors support o recovery o compute as may attributes as possible o declare exception o the user should have to declare checked exception thrown by functions o declare a replace object (or replace function) instead of throwing an exception o re-declare unchecked -> checked exception translation, e.g. IllegalArgumentException -> xyz o ordered attribute grammars o sufficiently powerfull o tests cyclic dependencies at compile-time o semantics currently implements a kind of AG buffer that can be modified. An OAG would be a reasonable, efficient and powerfull finalization. o caveats o semantic error recovery: o record failed attributes, i.e. attributes whose computation failed o skip calls, that need failed attribute as arguments o second-level AG functions: use a second OAG o optimization o position computation for semantic errors o remove local copy rules (as generated by the translation section) o warn about unused attributes