From b77c6762fb0f784811614e2bd53d5a74cdf866c0 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Fri, 14 Sep 2018 16:39:37 +0200 Subject: Alloy support for string literals --- .../serializer/AlloyLanguageSemanticSequencer.java | 135 ++++++++++++++++++++- .../AlloyLanguageSyntacticSequencer.java | 32 ++--- 2 files changed, 150 insertions(+), 17 deletions(-) (limited to 'Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer') diff --git a/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSemanticSequencer.java b/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSemanticSequencer.java index 9e973316..6f23dc7d 100644 --- a/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSemanticSequencer.java +++ b/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSemanticSequencer.java @@ -45,6 +45,9 @@ import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSRunCommand; import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSSigScope; import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSSignatureBody; import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSSignatureDeclaration; +import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSString; +import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSStringLiteral; +import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSStringScope; import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSSubset; import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSSum; import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSUnaryMinus; @@ -201,6 +204,15 @@ public class AlloyLanguageSemanticSequencer extends AbstractDelegatingSemanticSe case AlloyLanguagePackage.ALS_SIGNATURE_DECLARATION: sequence_ALSSignatureDeclaration(context, (ALSSignatureDeclaration) semanticObject); return; + case AlloyLanguagePackage.ALS_STRING: + sequence_ALSBasicRelationTerm(context, (ALSString) semanticObject); + return; + case AlloyLanguagePackage.ALS_STRING_LITERAL: + sequence_ALSBasicRelationTerm(context, (ALSStringLiteral) semanticObject); + return; + case AlloyLanguagePackage.ALS_STRING_SCOPE: + sequence_ALSStringScope(context, (ALSStringScope) semanticObject); + return; case AlloyLanguagePackage.ALS_SUBSET: sequence_ALSComparison(context, (ALSSubset) semanticObject); return; @@ -469,7 +481,7 @@ public class AlloyLanguageSemanticSequencer extends AbstractDelegatingSemanticSe errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, AlloyLanguagePackage.Literals.ALS_NUMBER_LITERAL__VALUE)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); - feeder.accept(grammarAccess.getALSBasicRelationTermAccess().getValueINTTerminalRuleCall_5_1_0(), semanticObject.getValue()); + feeder.accept(grammarAccess.getALSBasicRelationTermAccess().getValueINTTerminalRuleCall_6_1_0(), semanticObject.getValue()); feeder.finish(); } @@ -522,7 +534,107 @@ public class AlloyLanguageSemanticSequencer extends AbstractDelegatingSemanticSe errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, AlloyLanguagePackage.Literals.ALS_REFERENCE__REFERRED)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); - feeder.accept(grammarAccess.getALSBasicRelationTermAccess().getReferredALSRelationDeclarationIDTerminalRuleCall_4_1_0_1(), semanticObject.getReferred()); + feeder.accept(grammarAccess.getALSBasicRelationTermAccess().getReferredALSRelationDeclarationIDTerminalRuleCall_5_1_0_1(), semanticObject.eGet(AlloyLanguagePackage.Literals.ALS_REFERENCE__REFERRED, false)); + feeder.finish(); + } + + + /** + * Contexts: + * ALSTerm returns ALSString + * ALSQuantified returns ALSString + * ALSOr returns ALSString + * ALSOr.ALSOr_1_0 returns ALSString + * ALSIff returns ALSString + * ALSIff.ALSIff_1_0 returns ALSString + * ALSImpl returns ALSString + * ALSImpl.ALSImpl_1_0 returns ALSString + * ALSAnd returns ALSString + * ALSAnd.ALSAnd_1_0 returns ALSString + * ALSComparison returns ALSString + * ALSComparison.ALSEquals_1_0_0_0 returns ALSString + * ALSComparison.ALSNotEquals_1_0_1_0 returns ALSString + * ALSComparison.ALSSubset_1_0_2_0 returns ALSString + * ALSComparison.ALSLess_1_0_3_0 returns ALSString + * ALSComparison.ALSLeq_1_0_4_0 returns ALSString + * ALSComparison.ALSMore_1_0_5_0 returns ALSString + * ALSComparison.ALSMeq_1_0_6_0 returns ALSString + * ALSOverride returns ALSString + * ALSOverride.ALSOverride_1_0 returns ALSString + * ALSRangeRestrictionRight returns ALSString + * ALSRangeRestrictionRight.ALSRangeRestrictionRight_1_0 returns ALSString + * ALSRangeRestrictionLeft returns ALSString + * ALSRangeRestrictionLeft.ALSRangeRestrictionLeft_1_0 returns ALSString + * ALSJoin returns ALSString + * ALSJoin.ALSJoin_1_0 returns ALSString + * ALSMinus returns ALSString + * ALSMinus.ALSMinus_1_0 returns ALSString + * ALSPlus returns ALSString + * ALSPlus.ALSPlus_1_0 returns ALSString + * ALSIntersection returns ALSString + * ALSIntersection.ALSIntersection_1_0 returns ALSString + * ALSDirectProduct returns ALSString + * ALSDirectProduct.ALSDirectProduct_1_0 returns ALSString + * ALSPreficed returns ALSString + * ALSBasicRelationTerm returns ALSString + * + * Constraint: + * {ALSString} + */ + protected void sequence_ALSBasicRelationTerm(ISerializationContext context, ALSString semanticObject) { + genericSequencer.createSequence(context, semanticObject); + } + + + /** + * Contexts: + * ALSTerm returns ALSStringLiteral + * ALSQuantified returns ALSStringLiteral + * ALSOr returns ALSStringLiteral + * ALSOr.ALSOr_1_0 returns ALSStringLiteral + * ALSIff returns ALSStringLiteral + * ALSIff.ALSIff_1_0 returns ALSStringLiteral + * ALSImpl returns ALSStringLiteral + * ALSImpl.ALSImpl_1_0 returns ALSStringLiteral + * ALSAnd returns ALSStringLiteral + * ALSAnd.ALSAnd_1_0 returns ALSStringLiteral + * ALSComparison returns ALSStringLiteral + * ALSComparison.ALSEquals_1_0_0_0 returns ALSStringLiteral + * ALSComparison.ALSNotEquals_1_0_1_0 returns ALSStringLiteral + * ALSComparison.ALSSubset_1_0_2_0 returns ALSStringLiteral + * ALSComparison.ALSLess_1_0_3_0 returns ALSStringLiteral + * ALSComparison.ALSLeq_1_0_4_0 returns ALSStringLiteral + * ALSComparison.ALSMore_1_0_5_0 returns ALSStringLiteral + * ALSComparison.ALSMeq_1_0_6_0 returns ALSStringLiteral + * ALSOverride returns ALSStringLiteral + * ALSOverride.ALSOverride_1_0 returns ALSStringLiteral + * ALSRangeRestrictionRight returns ALSStringLiteral + * ALSRangeRestrictionRight.ALSRangeRestrictionRight_1_0 returns ALSStringLiteral + * ALSRangeRestrictionLeft returns ALSStringLiteral + * ALSRangeRestrictionLeft.ALSRangeRestrictionLeft_1_0 returns ALSStringLiteral + * ALSJoin returns ALSStringLiteral + * ALSJoin.ALSJoin_1_0 returns ALSStringLiteral + * ALSMinus returns ALSStringLiteral + * ALSMinus.ALSMinus_1_0 returns ALSStringLiteral + * ALSPlus returns ALSStringLiteral + * ALSPlus.ALSPlus_1_0 returns ALSStringLiteral + * ALSIntersection returns ALSStringLiteral + * ALSIntersection.ALSIntersection_1_0 returns ALSStringLiteral + * ALSDirectProduct returns ALSStringLiteral + * ALSDirectProduct.ALSDirectProduct_1_0 returns ALSStringLiteral + * ALSPreficed returns ALSStringLiteral + * ALSBasicRelationTerm returns ALSStringLiteral + * + * Constraint: + * value=STRING + */ + protected void sequence_ALSBasicRelationTerm(ISerializationContext context, ALSStringLiteral semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, AlloyLanguagePackage.Literals.ALS_STRING_LITERAL__VALUE) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, AlloyLanguagePackage.Literals.ALS_STRING_LITERAL__VALUE)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getALSBasicRelationTermAccess().getValueSTRINGTerminalRuleCall_7_1_0(), semanticObject.getValue()); feeder.finish(); } @@ -2210,6 +2322,25 @@ public class AlloyLanguageSemanticSequencer extends AbstractDelegatingSemanticSe } + /** + * Contexts: + * ALSTypeScope returns ALSStringScope + * ALSStringScope returns ALSStringScope + * + * Constraint: + * number=INT + */ + protected void sequence_ALSStringScope(ISerializationContext context, ALSStringScope semanticObject) { + if (errorAcceptor != null) { + if (transientValues.isValueTransient(semanticObject, AlloyLanguagePackage.Literals.ALS_TYPE_SCOPE__NUMBER) == ValueTransient.YES) + errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, AlloyLanguagePackage.Literals.ALS_TYPE_SCOPE__NUMBER)); + } + SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); + feeder.accept(grammarAccess.getALSStringScopeAccess().getNumberINTTerminalRuleCall_1_0(), semanticObject.getNumber()); + feeder.finish(); + } + + /** * Contexts: * ALSRelationDeclaration returns ALSVariableDeclaration diff --git a/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSyntacticSequencer.java b/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSyntacticSequencer.java index cb2da160..4a5cad5d 100644 --- a/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSyntacticSequencer.java +++ b/Solvers/Alloy-Solver/hu.bme.mit.inf.dslreasoner.alloy.language/src-gen/hu/bme/mit/inf/dslreasoner/serializer/AlloyLanguageSyntacticSequencer.java @@ -22,8 +22,8 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer protected AlloyLanguageGrammarAccess grammarAccess; protected AbstractElementAlias match_ALSAnd_AmpersandAmpersandKeyword_1_1_0_or_AndKeyword_1_1_1; - protected AbstractElementAlias match_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_a; - protected AbstractElementAlias match_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_p; + protected AbstractElementAlias match_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_a; + protected AbstractElementAlias match_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_p; protected AbstractElementAlias match_ALSIff_IffKeyword_1_1_1_or_LessThanSignEqualsSignGreaterThanSignKeyword_1_1_0; protected AbstractElementAlias match_ALSImpl_EqualsSignGreaterThanSignKeyword_1_1_0_or_ImpliesKeyword_1_1_1; protected AbstractElementAlias match_ALSOr_OrKeyword_1_1_1_or_VerticalLineVerticalLineKeyword_1_1_0; @@ -33,8 +33,8 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer protected void init(IGrammarAccess access) { grammarAccess = (AlloyLanguageGrammarAccess) access; match_ALSAnd_AmpersandAmpersandKeyword_1_1_0_or_AndKeyword_1_1_1 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getALSAndAccess().getAmpersandAmpersandKeyword_1_1_0()), new TokenAlias(false, false, grammarAccess.getALSAndAccess().getAndKeyword_1_1_1())); - match_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_a = new TokenAlias(true, true, grammarAccess.getALSBasicRelationTermAccess().getLeftParenthesisKeyword_6_0()); - match_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_p = new TokenAlias(true, false, grammarAccess.getALSBasicRelationTermAccess().getLeftParenthesisKeyword_6_0()); + match_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_a = new TokenAlias(true, true, grammarAccess.getALSBasicRelationTermAccess().getLeftParenthesisKeyword_8_0()); + match_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_p = new TokenAlias(true, false, grammarAccess.getALSBasicRelationTermAccess().getLeftParenthesisKeyword_8_0()); match_ALSIff_IffKeyword_1_1_1_or_LessThanSignEqualsSignGreaterThanSignKeyword_1_1_0 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getALSIffAccess().getIffKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getALSIffAccess().getLessThanSignEqualsSignGreaterThanSignKeyword_1_1_0())); match_ALSImpl_EqualsSignGreaterThanSignKeyword_1_1_0_or_ImpliesKeyword_1_1_1 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getALSImplAccess().getEqualsSignGreaterThanSignKeyword_1_1_0()), new TokenAlias(false, false, grammarAccess.getALSImplAccess().getImpliesKeyword_1_1_1())); match_ALSOr_OrKeyword_1_1_1_or_VerticalLineVerticalLineKeyword_1_1_0 = new AlternativeAlias(false, false, new TokenAlias(false, false, grammarAccess.getALSOrAccess().getOrKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getALSOrAccess().getVerticalLineVerticalLineKeyword_1_1_0())); @@ -55,10 +55,10 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer List syntaxNodes = getNodesFor(transitionNodes, syntax); if (match_ALSAnd_AmpersandAmpersandKeyword_1_1_0_or_AndKeyword_1_1_1.equals(syntax)) emit_ALSAnd_AmpersandAmpersandKeyword_1_1_0_or_AndKeyword_1_1_1(semanticObject, getLastNavigableState(), syntaxNodes); - else if (match_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_a.equals(syntax)) - emit_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_a(semanticObject, getLastNavigableState(), syntaxNodes); - else if (match_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_p.equals(syntax)) - emit_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_p(semanticObject, getLastNavigableState(), syntaxNodes); + else if (match_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_a.equals(syntax)) + emit_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_a(semanticObject, getLastNavigableState(), syntaxNodes); + else if (match_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_p.equals(syntax)) + emit_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_p(semanticObject, getLastNavigableState(), syntaxNodes); else if (match_ALSIff_IffKeyword_1_1_1_or_LessThanSignEqualsSignGreaterThanSignKeyword_1_1_0.equals(syntax)) emit_ALSIff_IffKeyword_1_1_1_or_LessThanSignEqualsSignGreaterThanSignKeyword_1_1_0(semanticObject, getLastNavigableState(), syntaxNodes); else if (match_ALSImpl_EqualsSignGreaterThanSignKeyword_1_1_0_or_ImpliesKeyword_1_1_1.equals(syntax)) @@ -73,7 +73,7 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer /** * Ambiguous syntax: - * '&&' | 'and' + * 'and' | '&&' * * This ambiguous syntax occurs at: * {ALSAnd.leftOperand=} (ambiguity) rightOperand=ALSComparison @@ -91,18 +91,20 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer * (rule start) (ambiguity) '*' operand=ALSBasicRelationTerm * (rule start) (ambiguity) '-' operand=ALSBasicRelationTerm * (rule start) (ambiguity) 'Int' (rule start) + * (rule start) (ambiguity) 'String' (rule start) * (rule start) (ambiguity) '^' operand=ALSBasicRelationTerm * (rule start) (ambiguity) 'iden' (rule start) * (rule start) (ambiguity) 'none' (rule start) * (rule start) (ambiguity) 'sum' variables+=ALSVariableDeclaration * (rule start) (ambiguity) 'univ' (rule start) * (rule start) (ambiguity) '~' operand=ALSBasicRelationTerm - * (rule start) (ambiguity) ('!' | 'not') operand=ALSBasicRelationTerm + * (rule start) (ambiguity) ('not' | '!') operand=ALSBasicRelationTerm * (rule start) (ambiguity) referred=[ALSRelationDeclaration|ID] * (rule start) (ambiguity) referredDefinition=[ALSDefinition|ID] * (rule start) (ambiguity) referredNumericOperator=ALSNumericOperator * (rule start) (ambiguity) type=ALSMultiplicity * (rule start) (ambiguity) value=INT + * (rule start) (ambiguity) value=STRING * (rule start) (ambiguity) {ALSAnd.leftOperand=} * (rule start) (ambiguity) {ALSDirectProduct.leftOperand=} * (rule start) (ambiguity) {ALSEquals.leftOperand=} @@ -123,7 +125,7 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer * (rule start) (ambiguity) {ALSRangeRestrictionRight.relation=} * (rule start) (ambiguity) {ALSSubset.leftOperand=} */ - protected void emit_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_a(EObject semanticObject, ISynNavigable transition, List nodes) { + protected void emit_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_a(EObject semanticObject, ISynNavigable transition, List nodes) { acceptNodes(transition, nodes); } @@ -138,7 +140,7 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer * (rule start) (ambiguity) '^' operand=ALSBasicRelationTerm * (rule start) (ambiguity) 'sum' variables+=ALSVariableDeclaration * (rule start) (ambiguity) '~' operand=ALSBasicRelationTerm - * (rule start) (ambiguity) ('!' | 'not') operand=ALSBasicRelationTerm + * (rule start) (ambiguity) ('not' | '!') operand=ALSBasicRelationTerm * (rule start) (ambiguity) referredDefinition=[ALSDefinition|ID] * (rule start) (ambiguity) referredNumericOperator=ALSNumericOperator * (rule start) (ambiguity) type=ALSMultiplicity @@ -162,7 +164,7 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer * (rule start) (ambiguity) {ALSRangeRestrictionRight.relation=} * (rule start) (ambiguity) {ALSSubset.leftOperand=} */ - protected void emit_ALSBasicRelationTerm_LeftParenthesisKeyword_6_0_p(EObject semanticObject, ISynNavigable transition, List nodes) { + protected void emit_ALSBasicRelationTerm_LeftParenthesisKeyword_8_0_p(EObject semanticObject, ISynNavigable transition, List nodes) { acceptNodes(transition, nodes); } @@ -190,7 +192,7 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer /** * Ambiguous syntax: - * '||' | 'or' + * 'or' | '||' * * This ambiguous syntax occurs at: * {ALSOr.leftOperand=} (ambiguity) rightOperand=ALSIff @@ -201,7 +203,7 @@ public class AlloyLanguageSyntacticSequencer extends AbstractSyntacticSequencer /** * Ambiguous syntax: - * '!' | 'not' + * 'not' | '!' * * This ambiguous syntax occurs at: * (rule start) '('* (ambiguity) operand=ALSBasicRelationTerm -- cgit v1.2.3-54-g00ecf