Пример #1
0
        public bool parse(string wikiText, Grammar grammar)
        //where T : WikiText
        {
            TextParsed.Add(wikiText);
            if (wikiText.valid().isFalse())
            {
                return(false);       // (T)this;
            }
            //var grammar = new T1();
            var Parser = new Parser(grammar);

            ParseTree      = Parser.Parse(wikiText);
            Status         = ParseTree.Status;
            ParserMessages = ParseTree.ParserMessages;
            if (ParserMessages.size() > 0)
            {
                "There were errors processing this WikiText".error();
                foreach (var message in ParserMessages)
                {
                    "  - {0}: {1} at location {2}".error(message.Level.str(), message.str(), message.Location.str());
                }
                return(false);
            }
            return(processParseTree());
            //return (T)this;
        }
Пример #2
0
        internal ServerScript(ServerProcess process, string script, DebugLocator locator) : base()
        {
            _process       = process;
            _batches       = new ServerBatches();
            _messages      = new ParserMessages();
            _sourceContext = new SourceContext(script, locator);
            try
            {
                _script = _process.ParseScript(script, _messages);
            }
            catch (SyntaxException e)
            {
                e.SetLocator(locator);
                throw;
            }
            _messages.SetLocator(locator);
            if ((_script is Block) && (((Block)_script).Statements.Count > 0))
            {
                Block block = (Block)_script;

                for (int index = 0; index < block.Statements.Count; index++)
                {
                    _batches.Add(new ServerBatch(this, block.Statements[index]));
                }
            }
            else
            {
                _batches.Add(new ServerBatch(this, _script));
            }
        }