コード例 #1
0
ファイル: TermInterpreter.cs プロジェクト: fangld/EDGolog
        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);
        }
コード例 #2
0
 /// <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)
 {
 }