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); }
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) {}; }
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) {}; }
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); }