diff --git a/src/main/jastadd/Navigation.jrag b/src/main/jastadd/Navigation.jrag index 37078ae3adc49d4f7560748daca2f01a608fc0fc..5a9e43ffeb17a301c61a53fbbc1f30622a61193a 100644 --- a/src/main/jastadd/Navigation.jrag +++ b/src/main/jastadd/Navigation.jrag @@ -16,14 +16,25 @@ aspect Navigation { to Program.relations() for program(); + // --- allTokenComponents --- + coll java.util.Set<TokenComponent> Program.allTokenComponents() [new java.util.HashSet<>()] root Program; + TokenComponent contributes this + to Program.allTokenComponents() + for program(); + // --- containingTypeDecl --- inh TypeDecl Component.containingTypeDecl(); eq TypeDecl.getChild().containingTypeDecl() = this; // --- containedFile --- inh GrammarFile ASTNode.containedFile(); + 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; @@ -31,4 +42,52 @@ aspect Navigation { // --- 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; } diff --git a/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java b/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java index 1330ebe284b62a90480959eb35eb23dbda831540..adc9bde23565b83df6fe6885d6a5d92d3bbad8b3 100644 --- a/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java +++ b/src/main/java/org/jastadd/relast/compiler/AbstractCompiler.java @@ -1,7 +1,6 @@ package org.jastadd.relast.compiler; import org.jastadd.JastAddConfiguration; -import org.jastadd.option.ArgumentParser; import org.jastadd.option.Option; import java.util.ArrayList; @@ -10,8 +9,7 @@ public abstract class AbstractCompiler { private final boolean jastAddCompliant; protected ArrayList<Option<?>> options; - private String name; - private ArgumentParser commandLine; + private final String name; private JastAddConfiguration configuration; @@ -36,7 +34,7 @@ public abstract class AbstractCompiler { return compile(); } - abstract int compile() throws CompilerException; + protected abstract int compile() throws CompilerException; protected void initOptions() { // there are no options by default @@ -52,7 +50,7 @@ public abstract class AbstractCompiler { System.err.println(); System.err.println("Usage: java -jar " + name + ".jar [--option1] [--option2=value] ... <filename1> <filename2> ... "); System.err.println("Options:"); - commandLine.printHelp(System.err); + configuration.printHelp(System.err); return 1; }