public string GetString(PlanningParser.TermContext context, StringDictionary assignment) { string result; if (context.NAME() != null) { string name = context.NAME().GetText(); result = _constTypeDict.ContainsKey(name) ? name : _numericConstValueDict[name].ToString(); } else if (context.VAR() != null) { string variableName = context.VAR().GetText(); result = assignment[variableName]; } else if (context.INTEGER() != null) { result = context.INTEGER().GetText(); } else if (context.MINUS() != null && context.term().Count == 1) { string termString = GetString(context.term(0), assignment); result = string.Format("-{0}", termString); } else if (context.MINUS() != null && context.term().Count == 2) { string firstTermString = GetString(context.term(0), assignment); string secondTermString = GetString(context.term(1), assignment); int firstValue = int.Parse(firstTermString); int secondValue = int.Parse(secondTermString); result = (firstValue - secondValue).ToString(); } else { string firstTermString = GetString(context.term(0), assignment); string secondTermString = GetString(context.term(1), assignment); int firstValue = int.Parse(firstTermString); int secondValue = int.Parse(secondTermString); result = (firstValue + secondValue).ToString(); } return(result); }
/// <summary> /// Exit a parse tree produced by <see cref="PlanningParser.term"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitTerm([NotNull] PlanningParser.TermContext context) { }