public Span PopSpan()
            {
                Span result = null;

                if (spanStack.Count > 0)
                {
                    result = spanStack.Pop();
                }
                if (ruleStack.Count > 1)
                {
                    ruleStack.Pop();
                }
                CurRule = ruleStack.Peek();
                CurSpan = spanStack.Count > 0 ? spanStack.Peek() : null;
                return(result);
            }
Exemple #2
0
 public SpanParser(Document doc, SyntaxMode mode, CloneableStack <Span> spanStack)
 {
     if (doc == null)
     {
         throw new ArgumentNullException("doc");
     }
     this.doc       = doc;
     this.mode      = mode;
     this.SpanStack = spanStack;
     this.CurRule   = mode;
     this.ruleStack = CreateRuleStack();
     this.CurRule   = ruleStack.Peek();
     this.CurSpan   = spanStack.Count > 0 ? spanStack.Peek() : null;
     FoundSpanBegin = DefaultFoundSpanBegin;
     FoundSpanEnd   = DefaultFoundSpanEnd;
     FoundSpanExit  = DefaultFoundSpanEnd;
     ParseChar      = delegate(ref int i, char ch) {};
 }
Exemple #3
0
 public SpanParser(SyntaxMode mode, CloneableStack <Span> spanStack)
 {
     if (mode == null)
     {
         throw new ArgumentNullException("mode");
     }
     this.doc = mode.Document;
     if (this.doc == null)
     {
         throw new ArgumentException("Syntax mode isn't bound to any document.", "mode");
     }
     this.mode      = mode;
     this.SpanStack = spanStack;
     this.CurRule   = mode;
     this.ruleStack = CreateRuleStack();
     this.CurRule   = ruleStack.Peek();
     this.CurSpan   = spanStack.Count > 0 ? spanStack.Peek() : null;
     FoundSpanBegin = DefaultFoundSpanBegin;
     FoundSpanEnd   = DefaultFoundSpanEnd;
     FoundSpanExit  = DefaultFoundSpanEnd;
     ParseChar      = delegate(ref int i, char ch) {};
 }
Exemple #4
0
            public Span PopSpan()
            {
                Span result = null;

                if (spanStack.Count > 0)
                {
                    result = spanStack.Pop();
                }
                if (ruleStack.Count > 1)
                {
                    var poppedRule = ruleStack.Pop();
                    if (poppedRule.Name == "InterpolatedString" || poppedRule.Name == "InterpolatedVerbatimString")
                    {
                        if (interpolatedBraces.Count > 0)
                        {
                            interpolatedBraces.Pop();
                        }
                    }
                }
                CurRule = ruleStack.Peek();
                CurSpan = spanStack.Count > 0 ? spanStack.Peek() : null;
                return(result);
            }