コード例 #1
0
        public override bool Equals(object obj)
        {
            ConcatenationRule other = obj as ConcatenationRule;

            if (other == null)
            {
                return(false);
            }

            if (terms.Count != other.terms.Count)
            {
                return(false);
            }

            for (int i = 0; i < terms.Count; i++)
            {
                if (!terms[i].Equals(other.terms[i]))
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #2
0
ファイル: NonTerminal.cs プロジェクト: martindevans/Hermes
 public NonTerminal(string name, ConcatenationRule rule = null)
     : base(name)
 {
     Rules = rule;
 }
コード例 #3
0
 internal ConcatenationRule(ConcatenationRule left, ConcatenationRule right)
 {
     terms.AddRange(left.terms);
     terms.AddRange(right.terms);
 }
コード例 #4
0
ファイル: Production.cs プロジェクト: martindevans/Hermes
 public Production(NonTerminal head, ConcatenationRule body)
 {
     Body = body.ToArray();
     Head = head;
 }