public override object VisitDerivationdeclaration(ShapPangParser.DerivationdeclarationContext context) { Derivative der = new Derivative(context.ID().GetText(), context.description.Text.Substring(1, context.description.Text.Length - 2), context.GetText(), Context.Scenario, Context.ElementScope); Context.Scenario.AddDerivation(der); Context.DerivationScope = der; object pendingReturn = base.VisitDerivationdeclaration(context); if (!der.Assignments.Contains(der.Name)) { throw new Exception("A derivative must contain an assignment to itself in order to set it's return value"); } return(pendingReturn); }