Beispiel #1
0
        public static RuleSetParsingResult Parse(string text, bool withLog = false)
        {
            Initialize();

            var parser = _defParserFabric.CreateTreeParser();

            parser.EnableLog = withLog;

            var reader        = new StringSourceTextReader(text);
            var parsingResult = parser.Parse(reader);

            if (!parsingResult.Successed)
            {
                throw new InvalidOperationException("Invalid grammar definition!");
            }

            // return new RuleSetParsingResult(null, parsingResult, parser.ParsingStatistics);

            var tree = ((IParsingTreeGroup)((IParsingTreeGroup)parsingResult.Tree).Childs.First()).Childs.First();

            var ctx   = _map.Translate(tree, new TranslationContext(reader));
            var rules = ctx.Result as RuleSetBase[];

            if (rules == null)
            {
                throw new InvalidOperationException("RuleSet mapping failed unexpectedly!");
            }

            return(new RuleSetParsingResult(rules, parsingResult, parser.ParsingStatistics));
        }
Beispiel #2
0
        public List <List <KeyValuePair <IParsingTreeTerminal, HighlightingColor> > > Parse(StringSourceTextReader reader)
        {
            try
            {
                _currReader = reader;

                _sw.Reset();
                _sw.Start();
                var result = _parser.Parse(_currReader);
                _sw.Stop();
                System.Diagnostics.Debug.WriteLine(_sw.Elapsed);

                if (result.Tree != null)
                {
                    _lines.Clear();
                    result.Tree.Visit(this);
                    _result = result;

                    // System.IO.File.WriteAllText(@"v:\fullparsed.txt", RulesParsingTreePrinter.CollectTree(result.Tree));

                    return(_lines);
                }
            }
            catch
            {
            }

            return(_empty);
        }
Beispiel #3
0
        private void btnParse_OnClick(object sender, RoutedEventArgs e)
        {
            try
            {
                var textReader = new StringSourceTextReader(txtText.Text);
                var parser     = _fabric.CreateTreeParser();
                parser.EnableLog = this.EnableTextParsingLog;
                parser.MaterializeOmittedFragments = this.MaterializeOmitFragments;
                parser.UseDelayedStates            = false;
                parser.RestoreRewritedRecursion    = this.RestoreRecursion;
                var result = parser.Parse(textReader);

                this.AppendLog(result.GetDebugInfo());
                this.AppendLog("Parsed in " + parser.ParsingStatistics);

                this.SetTrees(result.Tree, textReader);
            }
            catch (Exception ex)
            {
                this.AppendLog(ex.ToString());
            }
        }
Beispiel #4
0
 public TranslationContext(StringSourceTextReader reader)
 {
     _id         = 0;
     this.Reader = reader;
 }