void IParsingTreeNodeVisitor.VisitTerminal(IParsingTreeTerminal terminal) { CodeTokenType tt; var rn = _rules.Last; if (rn.Value == "name") { tt = CodeTokenType.Indentifier; } else if (rn.Value == "number") { tt = CodeTokenType.Number; } else if (rn.Value == "string" || rn.Value == "chars" || rn.Value == "charCode" || rn.Value == "anyChar") { tt = CodeTokenType.String; } else if (_keywords.Contains(rn.Value) || rn.Previous.Value == "qnumbers") { tt = CodeTokenType.Keyword; } else { tt = CodeTokenType.None; } this.AddToken(terminal, tt); }
private void AddToken(IParsingTreeTerminal term, CodeTokenType type) { var from = term.From; while (_lines.Count <= from.Line) { _lines.Add(new List <KeyValuePair <IParsingTreeTerminal, HighlightingColor> >()); } _lines[from.Line].Add(new KeyValuePair <IParsingTreeTerminal, HighlightingColor>(term, _brushes[type])); _tokens.Add(new SyntaxHighlight.CodeToken() { Start = _currReader.GetPosition(term.From), End = _currReader.GetPosition(term.To), TokenType = type }); }
void IParsingTreeNodeVisitor.VisitTerminal(IParsingTreeTerminal terminal) { PrintNode(terminal); }
void IParsingTreeNodeVisitor.VisitTerminal(IParsingTreeTerminal terminal) { var t = (ParsingTreeNode.Terminal)terminal; _currChild = new ParsingTreeNode.Terminal(t.GrammarNode, t.Location, _currChild, t.From, t.To, t.Content); }
void IParsingTreeNodeVisitor.VisitTerminal(IParsingTreeTerminal terminal) { this.Result = terminal; }