예제 #1
0
 public override MacroResult TranslateCall(MacroCall call)
 {
     var args = call.Arguments.Select(ASTHelpers.IgnoreExprSourcePos).ToArray();
     if (args.All(a => a.IsValue))
     {
         var sum = call.Arguments.Sum(a => ((Literal.Int)((Expression.Value)a).Value).Value);
         return MacroResult.NewMacroOk(Expression.NewValue(Literal.NewInt(sum)));
     }
     else return MacroResult.MacroFallback;
 }
예제 #2
0
        public override MacroResult TranslateCall(MacroCall call)
        {
            var args = call.Arguments.Select(ASTHelpers.IgnoreExprSourcePos).ToArray();

            if (args.All(a => a.IsValue))
            {
                var sum = call.Arguments.Sum(a => ((Literal.Int)((Expression.Value)a).Value).Value);
                return(MacroResult.NewMacroOk(Expression.NewValue(Literal.NewInt(sum))));
            }
            else
            {
                return(MacroResult.MacroFallback);
            }
        }
예제 #3
0
파일: Macro.cs 프로젝트: jmclain/Nmp
		/////////////////////////////////////////////////////////////////////////////

		public static Macro NewBuiltinMacro( IMacroProcessor mp, string name, IMacroHandler mh, MacroCall method )
		{
			// ******
			Macro macro = new Macro( name, MacroType.Builtin, mh, null, null, null, mp );
			macro.MacroHandlerData = method;

			// ******
			return macro;
		}