All notable changes to this project from version 1.2.0 upwards are documented in this file. The format is based on Keep a Changelog.
Node.transformChildren
to run a function on all the children of a NodeNode.replaceWith
to replace a Node with another
- Aligned Token Categories with Kolasu
- Increased code coverage
- StarLasu internal features in nodes imported from Lionweb
- StarLasu marker interfaces in Lionweb and trace nodes
- Differentiate between parser and lexer issues internationalized messages
- Support for I18n in Issue messages
- Updated LionWeb integration to support Point and Position primitive types as used in recent versions of Kolasu
- Align Lionweb with the latest StarLasu language
assertASTsAreEqual
is now properly included in the compiled artifact
- Higher-level APIs for Lionweb import
- Import from Lionweb languages and models not exported from Kolasu (i.e. with nodes not extending StarLasu's ASTNode concept)
assertASTsAreEqual
is now properly exported
- Issue with
LionwebNode
attempting to set a readonly property
- Position instances represented as child nodes when importing Lionweb models
- Allow abstract classes to be marked as
@ASTNode
- JSON generator: use node definition metadata
- Origin override in ParseTreeToASTTransformer
- ParseTreeToASTTransformer: propagate the Source as in Kolasu
- Updated to antlr4ng 3
- Protect
getPathFromRoot
when a child appears multiple times in a collection
- TraceNode.get renamed to getDescendant
- TraceNode.get to access nodes by path
- Renamed "property" to either "feature" or "attribute" according to Kolasu terminology
- Correctly record references in node metadata for ECore nodes
- Information about references in node metadata
- A referenced node's parent in trace nodes
Node.getReference
method as in Kolasu
- Renamed
Node.getAttribute
togetAttributeValue
in accordance with Kolasu
- Proper handling of references in ECore
- The
ParserNode
class, replaced by its superclassTraceNode
that's now a concrete class.
- LionwebNode get method
- ECoreNode definition
- ParserNode instances usable without ECore
- Exported the StarLasu Lionweb language from the correct module
- Made Lionweb an optional dependency
- Support for Lionweb nodes as trace nodes
- Further tests for ECore import
- Treatment of references in ECore nodes
- More homogeneous node APIs
- Decoupled trace nodes from ECore, so they may be used with Lionweb.
- Stricter checking of attributes and children
- Node definition in Playground dynamic nodes
- Deserialization of Lionweb nodes to dynamic nodes
- Support for Node < 18
- Proper export of the Lionweb interop module
- Module documentation for all optional interop modules
- Deprecated AST transformation functions and decorators, that had been superseded by StarLasu AST Transformers.
- Lionweb deserialization into Tylasu nodes
addChild
andsetChild
now correctly check for the feature's multiplicity.
Included all the changes in the 1.4.x branch (versions 1.4.7 and 1.4.8).
- Traversal functions
walkAncestors
andfindAncestorOfType
from Kolasu
- Aligned AST Transformers with Kolasu, and solved several issues in the previous implementation
assignParents
didn't assign the right parent
FirstStageParsingResult
now includes the ANTLRParser
instance used to obtain the parse tree
- Updated antlr4ng
- Stopped using deprecated transformation functions in the test suite
- Module format for browsers
- Don't use antlr4ng's
CharStreams
class because it depends on Node classes and doesn't work in the browser.
tsconfig.base.json
referring to a local directory that doesn't exist in the released package
- Moved from antlr4ts to antlr4ng
- Aligned AST Transformers with Kolasu as much as possible
- Moved to Jest for testing
- Several issues with AST Transformers that made them awkward to use
- When importing from Ecore, don't treat origins and destinations as children, as well as everything that's not a Node.
- Traversal functions
walkAncestors
andfindAncestorOfType
from Kolasu - Support for Ecore models with Kolasu's
SimpleOrigin
instances
- Aligned AST Transformers with Kolasu, and solved several issues in the previous implementation
assignParents
didn't assign the right parent
- Updated several dependencies for security reasons
- Workspace transpilation traces with
ReferenceByName
instances
- In workspace transpilation traces,
SourceNode
s do not always refer to the file they're contained in.
- A
TargetNode
'sparent
is alwaysundefined
.
- Base tsconfig.json for dependent projects
- Properly track target node files (available as
TargetNode.file
)
- Parser and transpilation trace loaders register the needed Ecore packages and data types automatically
- More convenient plain JS API for defining nodes
- Removed ErrorNode class that differed from Kolasu (StarLasu reference implementation)
- Updated TypeScript to 4.0.x line because 3.x doesn't support newer Lodash versions
- Support for node marker interfaces in EMF models
- Updated TypeScript to 4.0.x and updated related dev dependencies
- Missing parser symbols exports
- Support for WorkspaceTranspilationTrace
- Partially separated parsing APIs that don't depend on ANTLR. This is a work in progress.
- Support multiple destinations
- Aligned TylasuParser with Kolasu 1.5.24
- Importing enums from Ecore
assertASTsAreEqual
recursive call
- Exported EcoreEnabledParser.
- Exported Kolasu and StarLasu metamodels.
- Ported ParseTreeToASTTransformer from Kolasu, for easier mapping of ANTLR4 parse trees into Tylasu ASTs.
parseTree
as a convenience property on Node.- A few more bits of documentation, including this changelog.
- Ported
assertASTsAreEqual
from Kolasu. - Ported AST Transformers from Kolasu.
- More tests for Ecore and parse/transpilation traces.
- More documentation.
- Published API documentation to GitHub Pages.
- Aligned Ecore metamodels with Kolasu (StarLasu reference implementation).