private RegularExpression RewriteDownAttribute(PSMAttribute attribute) { NonTerminalRegularExpression nonTerminalRE = new NonTerminalRegularExpression { Z = Grammar.GetNonTerminal(attribute) }; if (!attribute.HasNondefaultCardinality()) { return(nonTerminalRE); } else { return(new CardinalityRegularExpression { RE = nonTerminalRE, Lower = attribute.Lower, Upper = attribute.Upper }); } }
private RegularExpression RewriteDownAssociation(PSMAssociation association) { if (association.IsNamed && association.Child is PSMClass) // named association rewriting rule { NonTerminalRegularExpression nonTerminalRE = new NonTerminalRegularExpression { Z = Grammar.GetNonTerminal(association) }; if (!association.HasNondefaultCardinality()) { return(nonTerminalRE); } else { return(new CardinalityRegularExpression { RE = nonTerminalRE, Lower = association.Lower, Upper = association.Upper }); } } else // unnamed association rewriting rule { if (!association.HasNondefaultCardinality()) { return(RewriteDown(association.Child)); } else { return(new CardinalityRegularExpression { RE = RewriteDown(association.Child), Lower = association.Lower, Upper = association.Upper }); } } }