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);
        }
示例#2
0
 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)
         );
 }
示例#3
0
 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 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);
        }
        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);
        }
示例#6
0
        public static AstNode ParseXPathPattern(string xpathPattern)
        {
            XPathScanner scanner = new XPathScanner(xpathPattern);
            XPathParser  parser  = new XPathParser(scanner);
            AstNode      result  = parser.ParsePattern();

            if (scanner.Kind != XPathScanner.LexKind.Eof)
            {
                throw XPathException.Create(SR.Xp_InvalidToken, scanner.SourceText);
            }
            return(result);
        }
 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);
 }
示例#8
0
 private XPathParser(XPathScanner scanner)
 {
     _scanner = scanner;
 }
示例#9
0
 private XPathParser(string xpathExpr)
 {
     _scanner    = new XPathScanner(xpathExpr);
     _parseDepth = 0;
 }
 private XPathParser(XPathScanner scanner)
 {
     this.scanner = scanner;
 }
 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)));
 }