コード例 #1
0
ファイル: Program.cs プロジェクト: vogon/Demotic
        private static void EvaluateFunction(Function function, String expression)
        {
            try {

                Expression expr = new Expression( expression, Factory );
                BigNum num = expr.Evaluate( _symbols );

                BigNum result = EvaluateFunction(function, num);

                Console.WriteLine("Result: " + result.ToString() );

            } catch(Exception ex) {

                PrintException(ex);
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: vogon/Demotic
        private static Boolean PromptUser()
        {
            Console.Write( (++_count).ToString() );
            Console.Write(">");

            String s = Console.ReadLine();
            if( s == "q" ) return false;

            if( s.StartsWith("add ", StringComparison.OrdinalIgnoreCase) ) {

                String name = s.Substring(4, s.IndexOf('=') - 5 ).Trim();
                String expr = s.Substring( s.IndexOf('=') + 1 ).Trim();

                try {

                    Expression xp = new Expression( expr, Factory );
                    BigNum ret = xp.Evaluate( _symbols );

                    if( _symbols.ContainsKey( name ) ) _symbols[name] = ret;
                    else                               _symbols.Add( name, ret );

                    Console.WriteLine("Added: " + name + " = " + ret.ToString() );

                } catch(Exception ex) {

                    PrintException(ex);
                }

            } else if( s.StartsWith("rem ", StringComparison.OrdinalIgnoreCase) ) {

                String name = s.Substring(4);

                _symbols.Remove( name );

                Console.WriteLine("Removed: " + name);

            } else if( String.Equals(s, "help", StringComparison.OrdinalIgnoreCase) ) {

                PrintHelp();

            } else if( String.Equals(s, "test", StringComparison.OrdinalIgnoreCase) ) {

            //				BigNumTests.Test();

            } else {

                Int32 startIndex;
                Function func = IsFunction( s, out startIndex );
                if( func != Function.None ) {

                    EvaluateFunction( func, s.Substring( startIndex ) );

                } else {

                    EvaluateExpression( s );

                }
            }

            return true;
        }
コード例 #3
0
ファイル: ExpressionContext.cs プロジェクト: vogon/Demotic
        public UserFunction(String name, String expression, params String[] parameterNames)
        {
            Name           = name;
            FunctionType   = FunctionType.User;
            ParameterNames = new ReadOnlyCollection<String>(parameterNames);

            _expr = new Expression( expression, null );
        }