コード例 #1
0
        public static RCValue Parse(string code, out bool fragment)
        {
            RCParser          parser = new RCLParser(Activator);
            RCArray <RCToken> tokens = new RCArray <RCToken> ();

            parser.Lex(code, tokens);
            RCValue result = parser.Parse(tokens, out fragment, canonical: false);

            RCAssert.IsNotNull(result, "The result of parser.Parse() was null.");
            return(result);
        }
コード例 #2
0
        public void EvalParse(RCRunner runner, RCClosure closure, RCSymbol left, RCString right)
        {
            RCParser parser    = null;
            bool     canonical = false;
            string   which     = left[0].Part(0).ToString();

            if (which.Equals("csv"))
            {
                parser = new CSVParser();
            }
            else if (which.Equals("xml"))
            {
                parser = new XMLParser();
            }
            else if (which.Equals("json"))
            {
                parser = new JSONParser();
            }
            else if (which.Equals("rcl"))
            {
                parser = new RCLParser(RCSystem.Activator);
            }
            else if (which.Equals("canonical"))
            {
                parser    = new RCLParser(RCSystem.Activator);
                canonical = true;
            }
            else if (which.Equals("log"))
            {
                parser = new LogParser();
            }
            else if (which.Equals("md"))
            {
                parser = new MarkdownParser();
            }
            else
            {
                throw new Exception("Unknown parser: " + which);
            }
            bool    fragment;
            RCValue result;

            try
            {
                result = DoParse(parser, right, canonical, out fragment);
                runner.Yield(closure, result);
            }
            catch (RCSyntaxException ex)
            {
                throw new RCException(closure, ex, RCErrors.Syntax, ex.Message);
            }
        }
コード例 #3
0
        public void EvalParse(RCRunner runner, RCClosure closure, RCString right)
        {
            bool    fragment;
            RCValue result;

            try
            {
                RCParser parser = new RCLParser(RCSystem.Activator);
                result = DoParse(parser, right, false, out fragment);
                runner.Yield(closure, result);
            }
            catch (RCSyntaxException ex)
            {
                throw new RCException(closure, ex, RCErrors.Syntax, ex.Message);
            }
        }