import org.simantics.scl.compiler.internal.parsing.declarations.DImportJavaAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DInstanceAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DMappingRelationAst;
-import org.simantics.scl.compiler.internal.parsing.declarations.DModuleHeader;
import org.simantics.scl.compiler.internal.parsing.declarations.DRelationAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DRuleAst;
+import org.simantics.scl.compiler.internal.parsing.declarations.DRulesetAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DTypeAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DValueAst;
import org.simantics.scl.compiler.internal.parsing.declarations.DValueTypeAst;
import gnu.trove.map.hash.THashMap;
public class DeclarationClassification {
- DModuleHeader moduleHeader;
ArrayList<ImportDeclaration> importsAst = new ArrayList<ImportDeclaration>();
ArrayList<DDataAst> dataTypesAst = new ArrayList<DDataAst>();
ArrayList<DTypeAst> typeAliasesAst = new ArrayList<DTypeAst>();
ArrayList<DEffectAst> effectsAst = new ArrayList<DEffectAst>();
ArrayList<DRuleAst> rulesAst = new ArrayList<DRuleAst>();
ArrayList<DMappingRelationAst> mappingRelationsAst = new ArrayList<DMappingRelationAst>();
+ ArrayList<DRulesetAst> rulesetsAst = new ArrayList<DRulesetAst>();
THashMap<String, DDocumentationAst> valueDocumentation = new THashMap<String, DDocumentationAst>();
THashMap<String, DDocumentationAst> relationDocumentation = new THashMap<String, DDocumentationAst>();
handle((DMappingRelationAst)declaration);
else if(declaration instanceof DRelationAst)
handle((DRelationAst)declaration);
- else if(declaration instanceof DModuleHeader)
- handle((DModuleHeader)declaration);
+ else if(declaration instanceof DRulesetAst)
+ handle((DRulesetAst)declaration);
else
throw new InternalCompilerError("Unknown declaration " + declaration.getClass().getSimpleName());
}
}
}
+ public void handle(DRulesetAst declaration) {
+ if(documentation != null) {
+ declaration.documentation = documentation;
+ documentation = null;
+ }
+ rulesetsAst.add(declaration);
+ }
+
public void handle(DDocumentationAst declaration) {
if(documentation != null) {
errorLog.log(documentation.location, "Invalid documentation string. It precedes another documentation string.");
}
- documentation = declaration;
+ documentation = declaration;
}
public void handle(DAnnotationAst declaration) {
mappingRelationsAst.add(declaration);
}
- public void handle(DModuleHeader declaration) {
- moduleHeader = declaration;
- }
-
public void addValueDocumentation(String valueName, DDocumentationAst documentation) {
DDocumentationAst oldDoc = valueDocumentation.put(valueName, documentation);
if(oldDoc != null) {