diff --git a/src/main/jastadd/GeneratedNavigation.jrag b/src/main/jastadd/GeneratedNavigation.jrag new file mode 100644 index 0000000000000000000000000000000000000000..1034e7b2994bf35d3db51e8ecd725c643e7895c2 --- /dev/null +++ b/src/main/jastadd/GeneratedNavigation.jrag @@ -0,0 +1,315 @@ +aspect Navigation { + + /** Tests if Comment is a WhitespaceComment. + * @return 'true' if this is a WhitespaceComment, otherwise 'false' + */ + syn boolean Comment.isWhitespaceComment() = false; + eq WhitespaceComment.isWhitespaceComment() = true; + + /** Tests if Comment is a SingleLineComment. + * @return 'true' if this is a SingleLineComment, otherwise 'false' + */ + syn boolean Comment.isSingleLineComment() = false; + eq SingleLineComment.isSingleLineComment() = true; + + /** Tests if Comment is a MultiLineComment. + * @return 'true' if this is a MultiLineComment, otherwise 'false' + */ + syn boolean Comment.isMultiLineComment() = false; + eq MultiLineComment.isMultiLineComment() = true; + + /** Tests if Comment is a DocComment. + * @return 'true' if this is a DocComment, otherwise 'false' + */ + syn boolean Comment.isDocComment() = false; + eq DocComment.isDocComment() = true; + + /** Tests if DirectedRelation is a LeftDirectedRelation. + * @return 'true' if this is a LeftDirectedRelation, otherwise 'false' + */ + syn boolean DirectedRelation.isLeftDirectedRelation() = false; + eq LeftDirectedRelation.isLeftDirectedRelation() = true; + + /** Tests if DirectedRelation is a RightDirectedRelation. + * @return 'true' if this is a RightDirectedRelation, otherwise 'false' + */ + syn boolean DirectedRelation.isRightDirectedRelation() = false; + eq RightDirectedRelation.isRightDirectedRelation() = true; + + /** Tests if TypeComponent is a NormalComponent. + * @return 'true' if this is a NormalComponent, otherwise 'false' + */ + syn boolean TypeComponent.isNormalComponent() = false; + eq NormalComponent.isNormalComponent() = true; + + /** Tests if TypeComponent is a ListComponent. + * @return 'true' if this is a ListComponent, otherwise 'false' + */ + syn boolean TypeComponent.isListComponent() = false; + eq ListComponent.isListComponent() = true; + + /** Tests if TypeComponent is a OptComponent. + * @return 'true' if this is a OptComponent, otherwise 'false' + */ + syn boolean TypeComponent.isOptComponent() = false; + eq OptComponent.isOptComponent() = true; + + /** Tests if Grammar is a GrammarFile. + * @return 'true' if this is a GrammarFile, otherwise 'false' + */ + syn boolean Grammar.isGrammarFile() = false; + eq GrammarFile.isGrammarFile() = true; + + /** Tests if NavigableRole is a NormalRole. + * @return 'true' if this is a NormalRole, otherwise 'false' + */ + syn boolean NavigableRole.isNormalRole() = false; + eq NormalRole.isNormalRole() = true; + + /** Tests if NavigableRole is a ListRole. + * @return 'true' if this is a ListRole, otherwise 'false' + */ + syn boolean NavigableRole.isListRole() = false; + eq ListRole.isListRole() = true; + + /** Tests if NavigableRole is a OptRole. + * @return 'true' if this is a OptRole, otherwise 'false' + */ + syn boolean NavigableRole.isOptRole() = false; + eq OptRole.isOptRole() = true; + + /** Tests if Component is a TypeComponent. + * @return 'true' if this is a TypeComponent, otherwise 'false' + */ + syn boolean Component.isTypeComponent() = false; + eq TypeComponent.isTypeComponent() = true; + + /** Tests if Component is a TokenComponent. + * @return 'true' if this is a TokenComponent, otherwise 'false' + */ + syn boolean Component.isTokenComponent() = false; + eq TokenComponent.isTokenComponent() = true; + + /** Tests if JavaTypeUse is a SimpleJavaTypeUse. + * @return 'true' if this is a SimpleJavaTypeUse, otherwise 'false' + */ + syn boolean JavaTypeUse.isSimpleJavaTypeUse() = false; + eq SimpleJavaTypeUse.isSimpleJavaTypeUse() = true; + + /** Tests if JavaTypeUse is a ParameterizedJavaTypeUse. + * @return 'true' if this is a ParameterizedJavaTypeUse, otherwise 'false' + */ + syn boolean JavaTypeUse.isParameterizedJavaTypeUse() = false; + eq ParameterizedJavaTypeUse.isParameterizedJavaTypeUse() = true; + + /** Tests if Relation is a DirectedRelation. + * @return 'true' if this is a DirectedRelation, otherwise 'false' + */ + syn boolean Relation.isDirectedRelation() = false; + eq DirectedRelation.isDirectedRelation() = true; + + /** Tests if Relation is a BidirectionalRelation. + * @return 'true' if this is a BidirectionalRelation, otherwise 'false' + */ + syn boolean Relation.isBidirectionalRelation() = false; + eq BidirectionalRelation.isBidirectionalRelation() = true; + + /** Tests if Role is a NavigableRole. + * @return 'true' if this is a NavigableRole, otherwise 'false' + */ + syn boolean Role.isNavigableRole() = false; + eq NavigableRole.isNavigableRole() = true; + + /** Tests if Role is a UnnamedRole. + * @return 'true' if this is a UnnamedRole, otherwise 'false' + */ + syn boolean Role.isUnnamedRole() = false; + eq UnnamedRole.isUnnamedRole() = true; + + /** Tests if Declaration is a EmptyDeclaration. + * @return 'true' if this is a EmptyDeclaration, otherwise 'false' + */ + syn boolean Declaration.isEmptyDeclaration() = false; + eq EmptyDeclaration.isEmptyDeclaration() = true; + + /** Tests if Declaration is a TypeDecl. + * @return 'true' if this is a TypeDecl, otherwise 'false' + */ + syn boolean Declaration.isTypeDecl() = false; + eq TypeDecl.isTypeDecl() = true; + + /** Tests if Declaration is a Relation. + * @return 'true' if this is a Relation, otherwise 'false' + */ + syn boolean Declaration.isRelation() = false; + eq Relation.isRelation() = true; + + /** casts a Comment into a WhitespaceComment if possible. + * @return 'this' cast to a WhitespaceComment or 'null' + */ + syn WhitespaceComment Comment.asWhitespaceComment(); + eq Comment.asWhitespaceComment() = null; + eq WhitespaceComment.asWhitespaceComment() = this; + + /** casts a Comment into a SingleLineComment if possible. + * @return 'this' cast to a SingleLineComment or 'null' + */ + syn SingleLineComment Comment.asSingleLineComment(); + eq Comment.asSingleLineComment() = null; + eq SingleLineComment.asSingleLineComment() = this; + + /** casts a Comment into a MultiLineComment if possible. + * @return 'this' cast to a MultiLineComment or 'null' + */ + syn MultiLineComment Comment.asMultiLineComment(); + eq Comment.asMultiLineComment() = null; + eq MultiLineComment.asMultiLineComment() = this; + + /** casts a Comment into a DocComment if possible. + * @return 'this' cast to a DocComment or 'null' + */ + syn DocComment Comment.asDocComment(); + eq Comment.asDocComment() = null; + eq DocComment.asDocComment() = this; + + /** casts a DirectedRelation into a LeftDirectedRelation if possible. + * @return 'this' cast to a LeftDirectedRelation or 'null' + */ + syn LeftDirectedRelation DirectedRelation.asLeftDirectedRelation(); + eq DirectedRelation.asLeftDirectedRelation() = null; + eq LeftDirectedRelation.asLeftDirectedRelation() = this; + + /** casts a DirectedRelation into a RightDirectedRelation if possible. + * @return 'this' cast to a RightDirectedRelation or 'null' + */ + syn RightDirectedRelation DirectedRelation.asRightDirectedRelation(); + eq DirectedRelation.asRightDirectedRelation() = null; + eq RightDirectedRelation.asRightDirectedRelation() = this; + + /** casts a TypeComponent into a NormalComponent if possible. + * @return 'this' cast to a NormalComponent or 'null' + */ + syn NormalComponent TypeComponent.asNormalComponent(); + eq TypeComponent.asNormalComponent() = null; + eq NormalComponent.asNormalComponent() = this; + + /** casts a TypeComponent into a ListComponent if possible. + * @return 'this' cast to a ListComponent or 'null' + */ + syn ListComponent TypeComponent.asListComponent(); + eq TypeComponent.asListComponent() = null; + eq ListComponent.asListComponent() = this; + + /** casts a TypeComponent into a OptComponent if possible. + * @return 'this' cast to a OptComponent or 'null' + */ + syn OptComponent TypeComponent.asOptComponent(); + eq TypeComponent.asOptComponent() = null; + eq OptComponent.asOptComponent() = this; + + /** casts a Grammar into a GrammarFile if possible. + * @return 'this' cast to a GrammarFile or 'null' + */ + syn GrammarFile Grammar.asGrammarFile(); + eq Grammar.asGrammarFile() = null; + eq GrammarFile.asGrammarFile() = this; + + /** casts a NavigableRole into a NormalRole if possible. + * @return 'this' cast to a NormalRole or 'null' + */ + syn NormalRole NavigableRole.asNormalRole(); + eq NavigableRole.asNormalRole() = null; + eq NormalRole.asNormalRole() = this; + + /** casts a NavigableRole into a ListRole if possible. + * @return 'this' cast to a ListRole or 'null' + */ + syn ListRole NavigableRole.asListRole(); + eq NavigableRole.asListRole() = null; + eq ListRole.asListRole() = this; + + /** casts a NavigableRole into a OptRole if possible. + * @return 'this' cast to a OptRole or 'null' + */ + syn OptRole NavigableRole.asOptRole(); + eq NavigableRole.asOptRole() = null; + eq OptRole.asOptRole() = this; + + /** casts a Component into a TypeComponent if possible. + * @return 'this' cast to a TypeComponent or 'null' + */ + syn TypeComponent Component.asTypeComponent(); + eq Component.asTypeComponent() = null; + eq TypeComponent.asTypeComponent() = this; + + /** casts a Component into a TokenComponent if possible. + * @return 'this' cast to a TokenComponent or 'null' + */ + syn TokenComponent Component.asTokenComponent(); + eq Component.asTokenComponent() = null; + eq TokenComponent.asTokenComponent() = this; + + /** casts a JavaTypeUse into a SimpleJavaTypeUse if possible. + * @return 'this' cast to a SimpleJavaTypeUse or 'null' + */ + syn SimpleJavaTypeUse JavaTypeUse.asSimpleJavaTypeUse(); + eq JavaTypeUse.asSimpleJavaTypeUse() = null; + eq SimpleJavaTypeUse.asSimpleJavaTypeUse() = this; + + /** casts a JavaTypeUse into a ParameterizedJavaTypeUse if possible. + * @return 'this' cast to a ParameterizedJavaTypeUse or 'null' + */ + syn ParameterizedJavaTypeUse JavaTypeUse.asParameterizedJavaTypeUse(); + eq JavaTypeUse.asParameterizedJavaTypeUse() = null; + eq ParameterizedJavaTypeUse.asParameterizedJavaTypeUse() = this; + + /** casts a Relation into a DirectedRelation if possible. + * @return 'this' cast to a DirectedRelation or 'null' + */ + syn DirectedRelation Relation.asDirectedRelation(); + eq Relation.asDirectedRelation() = null; + eq DirectedRelation.asDirectedRelation() = this; + + /** casts a Relation into a BidirectionalRelation if possible. + * @return 'this' cast to a BidirectionalRelation or 'null' + */ + syn BidirectionalRelation Relation.asBidirectionalRelation(); + eq Relation.asBidirectionalRelation() = null; + eq BidirectionalRelation.asBidirectionalRelation() = this; + + /** casts a Role into a NavigableRole if possible. + * @return 'this' cast to a NavigableRole or 'null' + */ + syn NavigableRole Role.asNavigableRole(); + eq Role.asNavigableRole() = null; + eq NavigableRole.asNavigableRole() = this; + + /** casts a Role into a UnnamedRole if possible. + * @return 'this' cast to a UnnamedRole or 'null' + */ + syn UnnamedRole Role.asUnnamedRole(); + eq Role.asUnnamedRole() = null; + eq UnnamedRole.asUnnamedRole() = this; + + /** casts a Declaration into a EmptyDeclaration if possible. + * @return 'this' cast to a EmptyDeclaration or 'null' + */ + syn EmptyDeclaration Declaration.asEmptyDeclaration(); + eq Declaration.asEmptyDeclaration() = null; + eq EmptyDeclaration.asEmptyDeclaration() = this; + + /** casts a Declaration into a TypeDecl if possible. + * @return 'this' cast to a TypeDecl or 'null' + */ + syn TypeDecl Declaration.asTypeDecl(); + eq Declaration.asTypeDecl() = null; + eq TypeDecl.asTypeDecl() = this; + + /** casts a Declaration into a Relation if possible. + * @return 'this' cast to a Relation or 'null' + */ + syn Relation Declaration.asRelation(); + eq Declaration.asRelation() = null; + eq Relation.asRelation() = this; + +} diff --git a/src/main/jastadd/Navigation.jrag b/src/main/jastadd/Navigation.jrag index 5a9e43ffeb17a301c61a53fbbc1f30622a61193a..7834c25eced07c31cc2c3331f05965ead638fb45 100644 --- a/src/main/jastadd/Navigation.jrag +++ b/src/main/jastadd/Navigation.jrag @@ -2,6 +2,8 @@ aspect Navigation { // --- program --- inh Program ASTNode.program(); + eq Grammar.getChild().program() = null; + eq GrammarFile.getChild().program() = program(); eq Program.getChild().program() = this; // --- typeDecls --- @@ -28,66 +30,10 @@ aspect Navigation { // --- containedFile --- inh GrammarFile ASTNode.containedFile(); + eq Grammar.getChild().containedFile() = null; eq Program.getChild().containedFile() = null; eq GrammarFile.getChild().containedFile() = this; // --- containedFileName --- - inh String ASTNode.containedFileName(); - eq GrammarFile.getChild().containedFileName() = getFileName(); - - // --- isTokenComponent --- - syn boolean Component.isTokenComponent() = false; - eq TokenComponent.isTokenComponent() = true; - - // --- asTokenComponent --- - syn TokenComponent Component.asTokenComponent() = null; - eq TokenComponent.asTokenComponent() = this; - - // --- isTypeDecl (should be in preprocessor) --- - syn boolean Declaration.isTypeDecl() = false; - eq TypeDecl.isTypeDecl() = true; - - // --- asTypeDecl (should be in preprocessor) --- - syn TypeDecl Declaration.asTypeDecl() = null; - eq TypeDecl.asTypeDecl() = this; - - // --- isTypeComponent (should be in preprocessor) --- - syn boolean Component.isTypeComponent() = false; - eq TypeComponent.isTypeComponent() = true; - - // --- asTypeComponent (should be in preprocessor) --- - syn TypeComponent Component.asTypeComponent() = null; - eq TypeComponent.asTypeComponent() = this; - - // --- isNormalComponent (should be in preprocessor) --- - syn boolean Component.isNormalComponent() = false; - eq NormalComponent.isNormalComponent() = true; - - // --- asNormalComponent (should be in preprocessor) --- - syn NormalComponent Component.asNormalComponent() = null; - eq NormalComponent.asNormalComponent() = this; - - // --- isListComponent (should be in preprocessor) --- - syn boolean Component.isListComponent() = false; - eq ListComponent.isListComponent() = true; - - // --- asListComponent (should be in preprocessor) --- - syn ListComponent Component.asListComponent() = null; - eq ListComponent.asListComponent() = this; - - // --- isDirectedRelation (should be in preprocessor) --- - syn boolean Relation.isDirectedRelation() = false; - eq DirectedRelation.isDirectedRelation() = true; - - // --- asDirectedRelation (should be in preprocessor) --- - syn DirectedRelation Relation.asDirectedRelation() = null; - eq DirectedRelation.asDirectedRelation() = this; - - // --- asBidirectionalRelation (should be in preprocessor) --- - syn BidirectionalRelation Relation.asBidirectionalRelation() = null; - eq BidirectionalRelation.asBidirectionalRelation() = this; - - // --- isListRole (should be in preprocessor) --- - syn boolean Role.isListRole() = false; - eq ListRole.isListRole() = true; + syn String ASTNode.containedFileName() = containedFile().getFileName(); }