Example #1
0
        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
                });
            }
        }
Example #2
0
 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
             });
         }
     }
 }