public object ParseShortLambdaExpression(bool quasiQuoted, string delimiter)
        {
            SkipWhitespace();
            var ch = ReadChar();

            if (ch != '(')
            {
                throw MakeScannerException("expected ')' character");
            }

            // The list is treated as a single form!
            // So the entire thing is (like) one function call.
            var form      = ReadDelimitedList(delimiter);
            var lastIndex = GrepShortLambdaParameters(form);
            var args      = Runtime.AsList(Symbols.ShortLambdaVariables.Skip(1).Take(lastIndex));

            if (quasiQuoted)
            {
                var form2 = Runtime.QuasiQuoteExpandRest(form);
                var code  = Runtime.MakeList(Symbols.Lambda, args, form2);
                return(code);
            }
            else
            {
                var code = Runtime.MakeList(Symbols.Lambda, args, form);
                return(code);
            }
        }
Exemple #2
0
        public Cons GetParents(params object[] args)
        {
            object[] kwargs    = Runtime.ParseKwargs(args, new string[] { "inherited" }, false);
            var      inherited = Runtime.ToBool(kwargs[0]);
            var      v         = new Vector();

            GetParents(v, inherited);
            return(Runtime.AsList(v));
        }
Exemple #3
0
        Cons ISyntax.GetSyntax(Symbol context)
        {
            var v = new Vector();

            foreach (var m in Members)
            {
                v.Add(Runtime.GetMethodSyntax(m, context));
            }
            return(Runtime.AsList(Runtime.SeqBase.Distinct(v, Runtime.StructurallyEqualApply)));
        }
Exemple #4
0
        public static object WrapInFrame(object expr, int pos)
        {
            var dict = Runtime.GetLexicalVariablesDictionary(pos);

            if (dict.Count != 0)
            {
                var block = new Vector();
                block.Add(Symbols.Do);
                foreach (var item in dict)
                {
                    block.Add(Runtime.MakeList(Symbols.Let, item.Key, item.Value));
                    block.Add(Runtime.MakeList(Symbols.Declare, Runtime.MakeList(Symbols.Ignore, item.Key)));
                }
                block.Add(expr);
                return(Runtime.AsList(block));
            }
            else
            {
                return(expr);
            }
        }
Exemple #5
0
        public object GetTypeSpecifier()
        {
            var result = new Vector();

            GetTypeNames(result);
            switch (result.Count)
            {
            case 0:
            {
                return(null);
            }

            case 1:
            {
                return(result[0]);
            }

            default:
            {
                return(Runtime.AsList(result));
            }
            }
        }
 public Cons ReadAll()
 {
     return(Runtime.AsList(ReadAllEnum()));
 }
Exemple #7
0
 public Cons Match(DynamicMetaObject[] args)
 {
     return(Runtime.AsList(Generic.Lambdas.Where(x => x.Definition.Signature.ParametersMatchArguments(args))));
 }
Exemple #8
0
 public Cons Match(object[] args)
 {
     return(Runtime.AsList(Lambdas.Where(x => x.Definition.Signature.ParametersMatchArguments(args))));
 }
Exemple #9
0
 Cons ISyntax.GetSyntax(Symbol context)
 {
     return(Runtime.AsList(Lambdas.Select(Runtime.GetSyntax).Distinct()));
 }
Exemple #10
0
        public static CommandLineOptions ParseArgs(string[] args)
        {
            var defaults = ParseReplConfigurationFile(GetReplConfigurationFile());
            var options  = new CommandLineOptions(defaults);
            var parser   = new CommandLineParser();

            parser.AddOption("--debug");
            parser.AddOption("--release");
            parser.AddOption("--repl");
            parser.AddOption("--no-repl");
            parser.AddOption("--width number");
            parser.AddOption("--height number");
            parser.AddOption("--buffer-width number");
            parser.AddOption("--buffer-height number");
            parser.AddOption("--fore-color name");
            parser.AddOption("--back-color name");
            parser.AddOption("--info-color name");
            parser.AddOption("--error-color name");
            parser.AddOption("--warning-color name");
            parser.AddOption("--highlight-fore-color name");
            parser.AddOption("--highlight-back-color name");
            parser.AddOption("--shadow-back-color name");
            parser.AddOption("--font-name name");
            parser.AddOption("--font-size size");
            parser.AddOption("--html-prefix str");

            parser.Parse(args);

            var s = parser.GetArgument(0);

            if (s != null)
            {
                options.ScriptName    = s;
                options.Debug         = false;
                options.Repl          = false;
                options.UserArguments = Runtime.AsList(parser.GetArgumentArray(1));
            }

            if (parser.GetOption("repl") != null)
            {
                options.Repl = true;
            }

            if (parser.GetOption("no-repl") != null)
            {
                options.Repl = false;
            }

            if (parser.GetOption("release") != null)
            {
                options.Debug = false;
            }

            if (parser.GetOption("debug") != null)
            {
                options.Debug = true;
            }

            if ((s = parser.GetOption("width")) != null)
            {
                options.Width = (int)s.ParseNumber();
            }

            if ((s = parser.GetOption("height")) != null)
            {
                options.Height       = (int)s.ParseNumber();
                options.BufferHeight = 10 * options.Height;
            }

            if ((s = parser.GetOption("buffer-height")) != null)
            {
                options.BufferHeight = (int)s.ParseNumber();
            }

            if ((s = parser.GetOption("fore-color")) != null)
            {
                options.ForeColor = s;
            }

            if ((s = parser.GetOption("back-color")) != null)
            {
                options.BackColor = s;
            }

            if ((s = parser.GetOption("info-color")) != null)
            {
                options.InfoColor = s;
            }

            if ((s = parser.GetOption("error-color")) != null)
            {
                options.ErrorColor = s;
            }

            if ((s = parser.GetOption("warning-color")) != null)
            {
                options.BackColor = s;
            }

            if ((s = parser.GetOption("highlight-fore-color")) != null)
            {
                options.HighlightForeColor = s;
            }

            if ((s = parser.GetOption("highlight-back-color")) != null)
            {
                options.HighlightBackColor = s;
            }

            if ((s = parser.GetOption("shadow-back-color")) != null)
            {
                options.ShadowBackColor = s;
            }

            if ((s = parser.GetOption("font-name")) != null)
            {
                options.FontName = s;
            }

            if ((s = parser.GetOption("font-size")) != null)
            {
                options.FontSize = (int)s.ParseNumber();
            }

            if ((s = parser.GetOption("html-prefix")) != null)
            {
                options.HtmlPrefix = s;
            }

            return(options);
        }