private void CheckToken(XPathScanner.LexKind t) { if (this.scanner.Kind != t) { throw XPathException.Create("Xp_InvalidToken", this.scanner.SourceText); } }
public static AstNode ParseXPathPattern(string xpathPattern) { XPathScanner scanner = new XPathScanner(xpathPattern); XPathParser parser = new XPathParser(scanner); AstNode result = parser.ParsePattern(null); if (scanner.Kind != XPathScanner.LexKind.Eof) { throw new XPathException(string.Format("'{0}' has an invalid token.", scanner.SourceText)); } return result; }
public static AstNode ParseXPathPattern(string xpathPattern) { XPathScanner scanner = new XPathScanner(xpathPattern); XPathParser parser = new XPathParser(scanner); AstNode result = parser.ParsePattern(null); if (scanner.Kind != XPathScanner.LexKind.Eof) { throw XPathException.Create(Res.Xp_InvalidToken, scanner.SourceText); } return result; }
public QilNode Parse(XPathScanner scanner, IPatternBuilder ptrnBuilder) { Debug.Assert(this.scanner == null && this.ptrnBuilder == null); Debug.Assert(scanner != null && ptrnBuilder != null); QilNode result = null; ptrnBuilder.StartBuild(); try { this.scanner = scanner; this.ptrnBuilder = ptrnBuilder; result = this.ParsePattern(); this.scanner.CheckToken(LexKind.Eof); } finally { result = ptrnBuilder.EndBuild(result); #if DEBUG this.ptrnBuilder = null; this.scanner = null; #endif } return(result); }
private static bool IsStep(XPathScanner.LexKind lexKind) { if ((((lexKind != XPathScanner.LexKind.Dot) && (lexKind != XPathScanner.LexKind.DotDot)) && ((lexKind != XPathScanner.LexKind.At) && (lexKind != XPathScanner.LexKind.Axe))) && (lexKind != XPathScanner.LexKind.Star)) { return (lexKind == XPathScanner.LexKind.Name); } return true; }
private static bool IsPrimaryExpr(XPathScanner scanner) { return ((((scanner.Kind == XPathScanner.LexKind.String) || (scanner.Kind == XPathScanner.LexKind.Number)) || ((scanner.Kind == XPathScanner.LexKind.Dollar) || (scanner.Kind == XPathScanner.LexKind.LParens))) || (((scanner.Kind == XPathScanner.LexKind.Name) && scanner.CanBeFunction) && !IsNodeType(scanner))); }
private static bool IsNodeType(XPathScanner scaner) { if (scaner.Prefix.Length != 0) { return false; } if ((!(scaner.Name == "node") && !(scaner.Name == "text")) && !(scaner.Name == "processing-instruction")) { return (scaner.Name == "comment"); } return true; }
private Axis.AxisType GetAxis(XPathScanner scaner) { object obj2 = AxesTable[scaner.Name]; if (obj2 == null) { throw XPathException.Create("Xp_InvalidToken", this.scanner.SourceText); } return (Axis.AxisType) obj2; }
void PassToken(XPathScanner.LexKind t) { CheckToken(t); NextLex(); }
// --------------- Helper methods ---------------------- void CheckToken(XPathScanner.LexKind t) { if (_scanner.Kind != t) { throw XPathException.Create(SR.Xp_InvalidToken, _scanner.SourceText); } }
private Axis.AxisType GetAxis(XPathScanner scaner) { Debug.Assert(scaner.Kind == XPathScanner.LexKind.Axe); object axis = AxesTable[scaner.Name]; if (axis == null) { throw new XPathException(String.Format("'{0}' has an invalid token.", scanner.SourceText)); } return (Axis.AxisType) axis; }
public static AstNode ParseXPathPattern(string xpathPattern) { XPathScanner scanner = new XPathScanner(xpathPattern); AstNode node = new XPathParser(scanner).ParsePattern(null); if (scanner.Kind != XPathScanner.LexKind.Eof) { throw XPathException.Create("Xp_InvalidToken", scanner.SourceText); } return node; }
private static bool IsNodeType(XPathScanner scaner) { return ( scaner.Prefix.Length == 0 && ( scaner.Name == "node" || scaner.Name == "text" || scaner.Name == "processing-instruction" || scaner.Name == "comment" ) ); }
private XPathParser(XPathScanner scanner) { _scanner = scanner; }
private Axis.AxisType GetAxis(XPathScanner scaner) { Debug.Assert(scaner.Kind == XPathScanner.LexKind.Axe); object axis = AxesTable[scaner.Name]; if (axis == null) { throw XPathException.Create(Res.Xp_InvalidToken, scanner.SourceText); } return (Axis.AxisType) axis; }
private XPathParser(XPathScanner scanner) { this.scanner = scanner; }
// --------------- Helper methods ---------------------- void CheckToken(XPathScanner.LexKind t) { if (this.scanner.Kind != t) { throw new XPathException(String.Format("'{0}' has an invalid token.", this.scanner.SourceText)); } }
private static bool IsStep(XPathScanner.LexKind lexKind) { return ( lexKind == XPathScanner.LexKind.Dot || lexKind == XPathScanner.LexKind.DotDot || lexKind == XPathScanner.LexKind.At || lexKind == XPathScanner.LexKind.Axe || lexKind == XPathScanner.LexKind.Star || lexKind == XPathScanner.LexKind.Name // NodeTest is also Name ); }
void NextLex(XPathScanner.LexKind t) { Debug.Assert(this.scanner.Kind == t); NextLex(); }
private void PassToken(XPathScanner.LexKind t) { this.CheckToken(t); this.NextLex(); }
private static bool IsPrimaryExpr(XPathScanner scanner) { return ( scanner.Kind == XPathScanner.LexKind.String || scanner.Kind == XPathScanner.LexKind.Number || scanner.Kind == XPathScanner.LexKind.Dollar || scanner.Kind == XPathScanner.LexKind.LParens || scanner.Kind == XPathScanner.LexKind.Name && scanner.CanBeFunction && !IsNodeType(scanner) ); }