Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

:content() pseudo-selector

  • Loading branch information...
commit 00282c5c10c7d05ed5a554c0c05178323509b72a 1 parent a9308ab
@fizx authored
View
1  Makefile.am
@@ -29,6 +29,7 @@ bench:
@echo "craigs..."; ./parsley test/craigs.let test/craigs.html > /dev/null
check-am:
+ @echo "content..."; ./parsley test/content.let test/content.html 2>&1 | diff test/content.json - && echo " success."
@echo "whitespace..."; ./parsley test/whitespace.let test/whitespace.html 2>&1 | diff test/whitespace.json - && echo " success."
@echo "backslash..."; ./parsley test/backslash.let test/backslash.html 2>&1 | diff test/backslash.json - && echo " success."
@echo "question_regressions..."; ./parsley test/question_regressions.let test/question_regressions.html 2>&1 | diff test/question_regressions.json - && echo " success."
View
1  Makefile.in
@@ -729,6 +729,7 @@ bench:
@echo "craigs..."; ./parsley test/craigs.let test/craigs.html > /dev/null
check-am:
+ @echo "content..."; ./parsley test/content.let test/content.html 2>&1 | diff test/content.json - && echo " success."
@echo "whitespace..."; ./parsley test/whitespace.let test/whitespace.html 2>&1 | diff test/whitespace.json - && echo " success."
@echo "backslash..."; ./parsley test/backslash.let test/backslash.html 2>&1 | diff test/backslash.json - && echo " success."
@echo "question_regressions..."; ./parsley test/question_regressions.let test/question_regressions.html 2>&1 | diff test/question_regressions.json - && echo " success."
View
1,901 parser.c
953 additions, 948 deletions not shown
View
65 parser.h
@@ -104,37 +104,38 @@
CXEQ = 321,
CXGT = 322,
CXLT = 323,
- CXHEADER = 324,
- CXCONTAINS = 325,
- CXEMPTY = 326,
- CXHAS = 327,
- CXPARENT = 328,
- CXNTHCH = 329,
- CXNTHLASTCH = 330,
- CXNTHTYPE = 331,
- CXNTHLASTTYPE = 332,
- CXFIRSTCH = 333,
- CXLASTCH = 334,
- CXFIRSTTYPE = 335,
- CXLASTTYPE = 336,
- CXONLYCH = 337,
- CXONLYTYPE = 338,
- CXINPUT = 339,
- CXTEXT = 340,
- CXPASSWORD = 341,
- CXRADIO = 342,
- CXCHECKBOX = 343,
- CXSUBMIT = 344,
- CXIMAGE = 345,
- CXRESET = 346,
- CXBUTTON = 347,
- CXFILE = 348,
- CXENABLED = 349,
- CXDISABLED = 350,
- CXCHECKED = 351,
- CXSELECTED = 352,
- NAME = 353,
- STRING = 354
+ CXCONTENT = 324,
+ CXHEADER = 325,
+ CXCONTAINS = 326,
+ CXEMPTY = 327,
+ CXHAS = 328,
+ CXPARENT = 329,
+ CXNTHCH = 330,
+ CXNTHLASTCH = 331,
+ CXNTHTYPE = 332,
+ CXNTHLASTTYPE = 333,
+ CXFIRSTCH = 334,
+ CXLASTCH = 335,
+ CXFIRSTTYPE = 336,
+ CXLASTTYPE = 337,
+ CXONLYCH = 338,
+ CXONLYTYPE = 339,
+ CXINPUT = 340,
+ CXTEXT = 341,
+ CXPASSWORD = 342,
+ CXRADIO = 343,
+ CXCHECKBOX = 344,
+ CXSUBMIT = 345,
+ CXIMAGE = 346,
+ CXRESET = 347,
+ CXBUTTON = 348,
+ CXFILE = 349,
+ CXENABLED = 350,
+ CXDISABLED = 351,
+ CXCHECKED = 352,
+ CXSELECTED = 353,
+ NAME = 354,
+ STRING = 355
};
#endif
@@ -198,7 +199,7 @@ typedef union YYSTYPE
pxpathPtr node;
}
/* Line 2616 of glr.c. */
-#line 202 "parser.h"
+#line 203 "parser.h"
YYSTYPE;
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
View
2  parser.y
@@ -122,6 +122,7 @@ void answer(pxpathPtr);
%token <string> CXEQ
%token <string> CXGT
%token <string> CXLT
+%token <string> CXCONTENT
%token <string> CXHEADER
%token <string> CXCONTAINS
%token <string> CXEMPTY
@@ -493,6 +494,7 @@ simple_selector_sequence
| possibly_empty_sequence CXLAST { $$ = APPEND($1, "[last()]"); }
| possibly_empty_sequence CXEVEN { $$ = APPEND($1, "[position() % 2 = 0]"); }
| possibly_empty_sequence CXODD { $$ = APPEND($1, "[position() % 2 = 1]"); }
+ | possibly_empty_sequence CXCONTENT LPAREN StringLike RPAREN { $$ = P4E($1, "[normalize-space(.)=", $4, "]"); }
| possibly_empty_sequence CXHEADER { $$ = APPEND($1, "[contains('h1 h2 h3 h4 h5 h6', lower-case(local-name()))]"); }
| possibly_empty_sequence CXEMPTY { $$ = APPEND($1, "[not(node())]"); }
| possibly_empty_sequence CXPARENT { $$ = APPEND($1, "[node()]"); }
View
713 scanner.c
@@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 98
-#define YY_END_OF_BUFFER 99
+#define YY_NUM_RULES 99
+#define YY_END_OF_BUFFER 100
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -370,51 +370,51 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[397] =
+static yyconst flex_int16_t yy_accept[400] =
{ 0,
- 0, 0, 0, 0, 0, 0, 99, 97, 2, 10,
- 97, 14, 28, 97, 4, 5, 22, 23, 15, 24,
- 16, 8, 1, 11, 7, 25, 18, 13, 3, 95,
- 19, 97, 20, 97, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 95, 6, 21, 98, 2, 23, 15,
- 18, 21, 53, 0, 96, 55, 0, 56, 17, 9,
+ 0, 0, 0, 0, 0, 0, 100, 98, 2, 10,
+ 98, 14, 28, 98, 4, 5, 22, 23, 15, 24,
+ 16, 8, 1, 11, 7, 25, 18, 13, 3, 96,
+ 19, 98, 20, 98, 96, 96, 96, 96, 96, 96,
+ 96, 96, 96, 96, 6, 21, 99, 2, 23, 15,
+ 18, 21, 53, 0, 97, 55, 0, 56, 17, 9,
1, 51, 12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 26, 27,
- 95, 29, 54, 95, 95, 95, 95, 95, 95, 95,
- 95, 95, 95, 43, 95, 95, 95, 95, 52, 57,
+ 96, 29, 54, 96, 96, 96, 96, 96, 96, 96,
+ 96, 96, 96, 43, 96, 96, 96, 96, 52, 57,
0, 0, 0, 0, 0, 0, 63, 0, 0, 64,
0, 0, 0, 0, 0, 65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 95, 44, 95, 95,
- 95, 95, 45, 95, 46, 95, 95, 95, 95, 95,
- 95, 95, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 69, 0, 0, 0, 0, 60, 0, 62, 0,
- 0, 0, 0, 0, 0, 0, 0, 95, 95, 95,
- 95, 95, 95, 95, 50, 95, 95, 95, 42, 48,
- 0, 0, 0, 0, 0, 0, 61, 90, 0, 0,
+ 0, 0, 0, 0, 0, 0, 96, 44, 96, 96,
+ 96, 96, 45, 96, 46, 96, 96, 96, 96, 96,
+ 96, 96, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 70, 0, 0, 0, 0, 60, 0, 62, 0,
+ 0, 0, 0, 0, 0, 0, 0, 96, 96, 96,
+ 96, 96, 96, 96, 50, 96, 96, 96, 42, 48,
+ 0, 0, 0, 0, 0, 0, 61, 91, 0, 0,
0, 0, 59, 0, 0, 0, 0, 0, 0, 0,
- 0, 82, 95, 95, 33, 95, 95, 95, 95, 95,
- 95, 95, 0, 0, 0, 0, 68, 0, 58, 0,
- 87, 81, 0, 0, 0, 0, 0, 0, 0, 84,
- 88, 0, 0, 95, 95, 95, 95, 95, 95, 39,
- 95, 95, 89, 0, 0, 0, 0, 0, 0, 66,
- 0, 0, 0, 0, 0, 0, 0, 70, 0, 0,
- 86, 95, 95, 47, 95, 95, 95, 95, 95, 0,
- 93, 0, 0, 91, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 95, 95, 95, 95,
- 95, 95, 85, 67, 92, 0, 0, 0, 0, 0,
-
- 0, 0, 0, 0, 83, 94, 95, 32, 95, 36,
- 38, 40, 95, 0, 0, 0, 0, 71, 0, 0,
- 0, 0, 95, 34, 95, 95, 95, 0, 0, 76,
- 0, 0, 0, 0, 79, 0, 95, 95, 95, 95,
- 95, 75, 0, 0, 0, 0, 73, 0, 95, 95,
- 95, 95, 95, 0, 78, 0, 0, 80, 95, 95,
- 95, 95, 95, 77, 0, 0, 95, 95, 95, 95,
- 95, 72, 0, 95, 95, 95, 95, 95, 0, 31,
- 95, 95, 95, 95, 74, 95, 37, 41, 95, 35,
- 95, 95, 95, 95, 49, 0
+ 0, 83, 96, 96, 33, 96, 96, 96, 96, 96,
+ 96, 96, 0, 0, 0, 0, 0, 69, 0, 58,
+ 0, 88, 82, 0, 0, 0, 0, 0, 0, 0,
+ 85, 89, 0, 0, 96, 96, 96, 96, 96, 96,
+ 39, 96, 96, 90, 0, 0, 0, 0, 0, 0,
+ 0, 67, 0, 0, 0, 0, 0, 0, 0, 71,
+ 0, 0, 87, 96, 96, 47, 96, 96, 96, 96,
+ 96, 0, 94, 0, 66, 0, 92, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 30, 96,
+ 96, 96, 96, 96, 96, 86, 68, 93, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 84, 95, 96,
+ 32, 96, 36, 38, 40, 96, 0, 0, 0, 0,
+ 72, 0, 0, 0, 0, 96, 34, 96, 96, 96,
+ 0, 0, 77, 0, 0, 0, 0, 80, 0, 96,
+ 96, 96, 96, 96, 76, 0, 0, 0, 0, 74,
+ 0, 96, 96, 96, 96, 96, 0, 79, 0, 0,
+ 81, 96, 96, 96, 96, 96, 78, 0, 0, 96,
+ 96, 96, 96, 96, 73, 0, 96, 96, 96, 96,
+ 96, 0, 31, 96, 96, 96, 96, 75, 96, 37,
+ 41, 96, 35, 96, 96, 96, 96, 49, 0
} ;
@@ -460,105 +460,105 @@ static yyconst flex_int32_t yy_meta[55] =
2, 2, 1, 1
} ;
-static yyconst flex_int16_t yy_base[402] =
+static yyconst flex_int16_t yy_base[405] =
{ 0,
- 0, 0, 0, 0, 0, 0, 420, 421, 53, 399,
- 413, 421, 397, 408, 421, 421, 395, 421, 421, 421,
- 399, 397, 40, 90, 392, 421, 391, 421, 421, 0,
- 421, 0, 421, 390, 17, 25, 26, 367, 366, 31,
- 362, 33, 373, 372, 384, 383, 421, 74, 421, 421,
- 421, 421, 421, 397, 421, 421, 393, 421, 421, 421,
- 51, 421, 421, 352, 33, 362, 39, 361, 350, 56,
- 30, 43, 49, 52, 367, 65, 49, 362, 421, 421,
- 0, 421, 421, 68, 347, 356, 352, 345, 341, 350,
- 356, 347, 354, 0, 340, 68, 345, 332, 421, 421,
-
- 335, 348, 339, 333, 335, 348, 421, 343, 64, 421,
- 329, 345, 344, 329, 325, 421, 323, 333, 336, 328,
- 59, 334, 319, 325, 333, 311, 328, 0, 315, 320,
- 318, 326, 0, 317, 0, 322, 321, 320, 321, 320,
- 316, 302, 301, 316, 299, 316, 297, 313, 301, 308,
- 294, 421, 307, 303, 289, 289, 421, 321, 421, 282,
- 300, 286, 294, 297, 296, 288, 280, 280, 288, 292,
- 290, 289, 279, 274, 0, 278, 285, 284, 0, 0,
- 274, 277, 285, 283, 260, 272, 421, 421, 263, 276,
- 275, 260, 292, 75, 291, 263, 253, 260, 254, 269,
-
- 262, 421, 251, 267, 0, 255, 254, 244, 250, 245,
- 259, 244, 248, 82, 251, 248, 421, 253, 271, 239,
- 421, 421, 71, 247, 253, 247, 88, 233, 237, 421,
- 421, 231, 230, 234, 227, 227, 241, 235, 242, 0,
- 233, 223, 421, 226, 235, 225, 232, 232, 103, 421,
- 227, 228, 224, 214, 245, 222, 223, 421, 211, 222,
- 421, 209, 206, 0, 223, 210, 219, 208, 211, 196,
- 421, 200, 213, 421, 208, 209, 205, 227, 201, 192,
- 191, 200, 222, 203, 202, 219, 199, 190, 195, 196,
- 193, 186, 421, 421, 421, 189, 211, 185, 176, 190,
-
- 207, 168, 180, 171, 421, 421, 175, 0, 169, 201,
- 0, 200, 178, 173, 164, 178, 157, 421, 107, 165,
- 175, 154, 160, 190, 157, 156, 187, 168, 147, 421,
- 155, 161, 162, 162, 421, 151, 179, 150, 154, 153,
- 152, 421, 145, 154, 149, 171, 421, 151, 137, 137,
- 151, 150, 138, 145, 421, 138, 129, 421, 142, 160,
- 134, 133, 125, 421, 138, 117, 129, 121, 129, 128,
- 117, 421, 120, 128, 128, 119, 118, 113, 115, 0,
- 108, 111, 109, 95, 421, 108, 0, 0, 110, 0,
- 93, 102, 76, 75, 0, 421, 149, 151, 153, 109,
-
- 155
+ 0, 0, 0, 0, 0, 0, 423, 424, 53, 402,
+ 416, 424, 400, 411, 424, 424, 398, 424, 424, 424,
+ 402, 400, 40, 90, 395, 424, 394, 424, 424, 0,
+ 424, 0, 424, 393, 17, 25, 26, 370, 369, 31,
+ 365, 33, 376, 375, 387, 386, 424, 74, 424, 424,
+ 424, 424, 424, 400, 424, 424, 396, 424, 424, 424,
+ 51, 424, 424, 355, 33, 365, 39, 364, 353, 56,
+ 30, 43, 49, 52, 370, 65, 49, 365, 424, 424,
+ 0, 424, 424, 68, 350, 359, 355, 348, 344, 353,
+ 359, 350, 357, 0, 343, 68, 348, 335, 424, 424,
+
+ 338, 351, 342, 336, 338, 351, 424, 346, 64, 424,
+ 332, 348, 347, 332, 328, 424, 326, 336, 339, 331,
+ 59, 337, 322, 328, 336, 314, 331, 0, 318, 323,
+ 321, 329, 0, 320, 0, 325, 324, 323, 324, 323,
+ 319, 305, 304, 319, 302, 319, 300, 316, 304, 311,
+ 297, 424, 310, 306, 292, 292, 424, 324, 424, 285,
+ 303, 289, 297, 300, 299, 291, 283, 283, 291, 295,
+ 293, 292, 282, 277, 0, 281, 288, 287, 0, 0,
+ 277, 280, 73, 287, 264, 276, 424, 424, 267, 280,
+ 279, 264, 296, 99, 295, 267, 257, 264, 258, 273,
+
+ 266, 424, 255, 271, 0, 259, 258, 248, 254, 249,
+ 263, 248, 252, 81, 255, 250, 251, 424, 256, 274,
+ 242, 424, 424, 103, 250, 256, 250, 108, 236, 240,
+ 424, 424, 234, 233, 237, 230, 230, 244, 238, 245,
+ 0, 236, 226, 424, 229, 238, 228, 221, 234, 234,
+ 109, 424, 229, 230, 226, 216, 247, 224, 225, 424,
+ 213, 224, 424, 211, 208, 0, 225, 212, 221, 210,
+ 213, 198, 424, 202, 424, 215, 424, 210, 211, 207,
+ 229, 203, 194, 193, 202, 224, 205, 204, 221, 201,
+ 192, 197, 198, 195, 188, 424, 424, 424, 191, 213,
+
+ 187, 178, 192, 209, 170, 182, 173, 424, 424, 177,
+ 0, 171, 203, 0, 202, 180, 175, 166, 180, 159,
+ 424, 111, 167, 177, 156, 162, 192, 159, 158, 189,
+ 170, 149, 424, 157, 163, 164, 164, 424, 153, 181,
+ 152, 156, 155, 154, 424, 147, 156, 151, 173, 424,
+ 153, 139, 139, 153, 152, 140, 147, 424, 140, 131,
+ 424, 144, 162, 136, 135, 127, 424, 140, 119, 131,
+ 123, 131, 130, 119, 424, 122, 130, 130, 121, 111,
+ 104, 115, 0, 108, 111, 109, 95, 424, 85, 0,
+ 0, 87, 0, 70, 79, 73, 72, 0, 424, 153,
+
+ 155, 157, 110, 159
} ;
-static yyconst flex_int16_t yy_def[402] =
+static yyconst flex_int16_t yy_def[405] =
{ 0,
- 396, 1, 397, 397, 397, 397, 396, 396, 396, 396,
- 398, 396, 396, 399, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 400,
- 396, 401, 396, 396, 400, 400, 400, 400, 400, 400,
- 400, 400, 400, 400, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 398, 396, 396, 399, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 400, 396, 396, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 400, 400, 400, 400, 400, 400, 396, 396,
-
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 400, 400, 400, 400,
- 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 400, 400, 400,
- 400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
-
- 396, 396, 400, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 400, 400, 400, 400, 400, 400, 400,
- 400, 400, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 400, 400, 400, 400, 400, 400, 400, 400, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 400, 400, 400, 400, 400,
- 400, 400, 396, 396, 396, 396, 396, 396, 396, 396,
-
- 396, 396, 396, 396, 396, 396, 400, 400, 400, 400,
- 400, 400, 400, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 400, 400, 400, 400, 400, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 400, 400, 400, 400,
- 400, 396, 396, 396, 396, 396, 396, 396, 400, 400,
- 400, 400, 400, 396, 396, 396, 396, 396, 400, 400,
- 400, 400, 400, 396, 396, 396, 400, 400, 400, 400,
- 400, 396, 396, 400, 400, 400, 400, 400, 396, 400,
- 400, 400, 400, 400, 396, 400, 400, 400, 400, 400,
- 400, 400, 400, 400, 400, 0, 396, 396, 396, 396,
-
- 396
+ 399, 1, 400, 400, 400, 400, 399, 399, 399, 399,
+ 401, 399, 399, 402, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 403,
+ 399, 404, 399, 399, 403, 403, 403, 403, 403, 403,
+ 403, 403, 403, 403, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 401, 399, 399, 402, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 403, 399, 399, 403, 403, 403, 403, 403, 403, 403,
+ 403, 403, 403, 403, 403, 403, 403, 403, 399, 399,
+
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 403, 403, 403, 403,
+ 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
+ 403, 403, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 403, 403, 403,
+ 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+
+ 399, 399, 403, 403, 403, 403, 403, 403, 403, 403,
+ 403, 403, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 403, 403, 403, 403, 403, 403,
+ 403, 403, 403, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 403, 403, 403, 403, 403, 403, 403,
+ 403, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 403, 403,
+ 403, 403, 403, 403, 403, 399, 399, 399, 399, 399,
+
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 403,
+ 403, 403, 403, 403, 403, 403, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 403, 403, 403, 403, 403,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 403,
+ 403, 403, 403, 403, 399, 399, 399, 399, 399, 399,
+ 399, 403, 403, 403, 403, 403, 399, 399, 399, 399,
+ 399, 403, 403, 403, 403, 403, 399, 399, 399, 403,
+ 403, 403, 403, 403, 399, 399, 403, 403, 403, 403,
+ 403, 399, 403, 403, 403, 403, 403, 399, 403, 403,
+ 403, 403, 403, 403, 403, 403, 403, 403, 0, 399,
+
+ 399, 399, 399, 399
} ;
-static yyconst flex_int16_t yy_nxt[476] =
+static yyconst flex_int16_t yy_nxt[479] =
{ 0,
8, 9, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
@@ -571,50 +571,50 @@ static yyconst flex_int16_t yy_nxt[476] =
62, 124, 107, 119, 111, 49, 50, 108, 112, 116,
117, 62, 120, 122, 51, 118, 125, 123, 127, 128,
- 139, 251, 150, 161, 162, 224, 52, 63, 151, 140,
- 81, 244, 252, 225, 245, 395, 226, 394, 256, 64,
- 65, 66, 67, 68, 69, 70, 71, 52, 72, 257,
- 73, 74, 75, 275, 76, 77, 78, 332, 393, 392,
- 391, 390, 389, 388, 276, 387, 386, 385, 333, 47,
- 47, 54, 54, 57, 57, 82, 82, 384, 383, 382,
- 381, 380, 379, 378, 377, 376, 375, 374, 373, 372,
- 371, 370, 369, 368, 367, 366, 365, 364, 363, 362,
- 361, 360, 359, 358, 357, 356, 355, 354, 353, 352,
- 351, 350, 349, 348, 347, 346, 345, 344, 343, 342,
-
- 341, 340, 339, 338, 337, 336, 335, 334, 331, 330,
- 329, 328, 327, 326, 325, 324, 323, 322, 321, 320,
- 319, 318, 317, 316, 315, 314, 313, 312, 311, 310,
- 309, 308, 307, 306, 305, 304, 303, 302, 301, 300,
- 299, 298, 297, 296, 295, 294, 293, 292, 291, 290,
- 289, 288, 287, 286, 285, 284, 283, 282, 281, 280,
- 279, 278, 277, 274, 273, 272, 271, 270, 269, 268,
- 267, 266, 265, 264, 263, 262, 261, 260, 259, 258,
- 255, 254, 253, 250, 249, 248, 247, 246, 243, 242,
- 241, 240, 239, 238, 237, 236, 235, 234, 233, 232,
-
- 231, 230, 229, 228, 227, 223, 222, 221, 220, 219,
- 218, 217, 216, 215, 214, 213, 212, 211, 210, 209,
- 208, 207, 206, 205, 204, 203, 202, 201, 200, 199,
- 198, 197, 196, 195, 194, 193, 192, 191, 190, 189,
- 188, 187, 186, 185, 184, 183, 182, 181, 180, 179,
- 178, 177, 176, 175, 174, 173, 172, 171, 170, 169,
- 168, 167, 166, 165, 164, 163, 160, 159, 158, 157,
- 156, 155, 154, 153, 152, 149, 148, 147, 146, 145,
- 144, 143, 142, 141, 138, 137, 136, 135, 134, 133,
- 132, 131, 130, 129, 126, 121, 110, 109, 104, 101,
-
- 55, 55, 100, 99, 98, 97, 94, 91, 90, 83,
- 80, 79, 60, 59, 58, 55, 56, 55, 53, 396,
- 7, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396
+ 139, 215, 150, 161, 162, 216, 52, 63, 151, 140,
+ 245, 81, 398, 246, 397, 396, 395, 394, 393, 64,
+ 65, 66, 67, 68, 69, 70, 71, 52, 72, 225,
+ 73, 74, 75, 253, 76, 77, 78, 226, 258, 278,
+ 227, 335, 392, 391, 254, 390, 389, 388, 387, 259,
+ 279, 386, 336, 47, 47, 54, 54, 57, 57, 82,
+ 82, 385, 384, 383, 382, 381, 380, 379, 378, 377,
+ 376, 375, 374, 373, 372, 371, 370, 369, 368, 367,
+ 366, 365, 364, 363, 362, 361, 360, 359, 358, 357,
+ 356, 355, 354, 353, 352, 351, 350, 349, 348, 347,
+
+ 346, 345, 344, 343, 342, 341, 340, 339, 338, 337,
+ 334, 333, 332, 331, 330, 329, 328, 327, 326, 325,
+ 324, 323, 322, 321, 320, 319, 318, 317, 316, 315,
+ 314, 313, 312, 311, 310, 309, 308, 307, 306, 305,
+ 304, 303, 302, 301, 300, 299, 298, 297, 296, 295,
+ 294, 293, 292, 291, 290, 289, 288, 287, 286, 285,
+ 284, 283, 282, 281, 280, 277, 276, 275, 274, 273,
+ 272, 271, 270, 269, 268, 267, 266, 265, 264, 263,
+ 262, 261, 260, 257, 256, 255, 252, 251, 250, 249,
+ 248, 247, 244, 243, 242, 241, 240, 239, 238, 237,
+
+ 236, 235, 234, 233, 232, 231, 230, 229, 228, 224,
+ 223, 222, 221, 220, 219, 218, 217, 214, 213, 212,
+ 211, 210, 209, 208, 207, 206, 205, 204, 203, 202,
+ 201, 200, 199, 198, 197, 196, 195, 194, 193, 192,
+ 191, 190, 189, 188, 187, 186, 185, 184, 183, 182,
+ 181, 180, 179, 178, 177, 176, 175, 174, 173, 172,
+ 171, 170, 169, 168, 167, 166, 165, 164, 163, 160,
+ 159, 158, 157, 156, 155, 154, 153, 152, 149, 148,
+ 147, 146, 145, 144, 143, 142, 141, 138, 137, 136,
+ 135, 134, 133, 132, 131, 130, 129, 126, 121, 110,
+
+ 109, 104, 101, 55, 55, 100, 99, 98, 97, 94,
+ 91, 90, 83, 80, 79, 60, 59, 58, 55, 56,
+ 55, 53, 399, 7, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399
} ;
-static yyconst flex_int16_t yy_chk[476] =
+static yyconst flex_int16_t yy_chk[479] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -627,47 +627,47 @@ static yyconst flex_int16_t yy_chk[476] =
23, 77, 67, 74, 70, 48, 48, 67, 70, 72,
73, 61, 74, 76, 48, 73, 77, 76, 84, 84,
- 96, 223, 109, 121, 121, 194, 9, 24, 109, 96,
- 400, 214, 223, 194, 214, 394, 194, 393, 227, 24,
- 24, 24, 24, 24, 24, 24, 24, 48, 24, 227,
- 24, 24, 24, 249, 24, 24, 24, 319, 392, 391,
- 389, 386, 384, 383, 249, 382, 381, 379, 319, 397,
- 397, 398, 398, 399, 399, 401, 401, 378, 377, 376,
- 375, 374, 373, 371, 370, 369, 368, 367, 366, 365,
- 363, 362, 361, 360, 359, 357, 356, 354, 353, 352,
- 351, 350, 349, 348, 346, 345, 344, 343, 341, 340,
- 339, 338, 337, 336, 334, 333, 332, 331, 329, 328,
-
- 327, 326, 325, 324, 323, 322, 321, 320, 317, 316,
- 315, 314, 313, 312, 310, 309, 307, 304, 303, 302,
- 301, 300, 299, 298, 297, 296, 292, 291, 290, 289,
- 288, 287, 286, 285, 284, 283, 282, 281, 280, 279,
- 278, 277, 276, 275, 273, 272, 270, 269, 268, 267,
- 266, 265, 263, 262, 260, 259, 257, 256, 255, 254,
- 253, 252, 251, 248, 247, 246, 245, 244, 242, 241,
- 239, 238, 237, 236, 235, 234, 233, 232, 229, 228,
- 226, 225, 224, 220, 219, 218, 216, 215, 213, 212,
- 211, 210, 209, 208, 207, 206, 204, 203, 201, 200,
-
- 199, 198, 197, 196, 195, 193, 192, 191, 190, 189,
- 186, 185, 184, 183, 182, 181, 178, 177, 176, 174,
- 173, 172, 171, 170, 169, 168, 167, 166, 165, 164,
- 163, 162, 161, 160, 158, 156, 155, 154, 153, 151,
- 150, 149, 148, 147, 146, 145, 144, 143, 142, 141,
- 140, 139, 138, 137, 136, 134, 132, 131, 130, 129,
- 127, 126, 125, 124, 123, 122, 120, 119, 118, 117,
- 115, 114, 113, 112, 111, 108, 106, 105, 104, 103,
- 102, 101, 98, 97, 95, 93, 92, 91, 90, 89,
- 88, 87, 86, 85, 78, 75, 69, 68, 66, 64,
-
- 57, 54, 46, 45, 44, 43, 41, 39, 38, 34,
- 27, 25, 22, 21, 17, 14, 13, 11, 10, 7,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
- 396, 396, 396, 396, 396
+ 96, 183, 109, 121, 121, 183, 9, 24, 109, 96,
+ 214, 403, 397, 214, 396, 395, 394, 392, 389, 24,
+ 24, 24, 24, 24, 24, 24, 24, 48, 24, 194,
+ 24, 24, 24, 224, 24, 24, 24, 194, 228, 251,
+ 194, 322, 387, 386, 224, 385, 384, 382, 381, 228,
+ 251, 380, 322, 400, 400, 401, 401, 402, 402, 404,
+ 404, 379, 378, 377, 376, 374, 373, 372, 371, 370,
+ 369, 368, 366, 365, 364, 363, 362, 360, 359, 357,
+ 356, 355, 354, 353, 352, 351, 349, 348, 347, 346,
+ 344, 343, 342, 341, 340, 339, 337, 336, 335, 334,
+
+ 332, 331, 330, 329, 328, 327, 326, 325, 324, 323,
+ 320, 319, 318, 317, 316, 315, 313, 312, 310, 307,
+ 306, 305, 304, 303, 302, 301, 300, 299, 295, 294,
+ 293, 292, 291, 290, 289, 288, 287, 286, 285, 284,
+ 283, 282, 281, 280, 279, 278, 276, 274, 272, 271,
+ 270, 269, 268, 267, 265, 264, 262, 261, 259, 258,
+ 257, 256, 255, 254, 253, 250, 249, 248, 247, 246,
+ 245, 243, 242, 240, 239, 238, 237, 236, 235, 234,
+ 233, 230, 229, 227, 226, 225, 221, 220, 219, 217,
+ 216, 215, 213, 212, 211, 210, 209, 208, 207, 206,
+
+ 204, 203, 201, 200, 199, 198, 197, 196, 195, 193,
+ 192, 191, 190, 189, 186, 185, 184, 182, 181, 178,
+ 177, 176, 174, 173, 172, 171, 170, 169, 168, 167,
+ 166, 165, 164, 163, 162, 161, 160, 158, 156, 155,
+ 154, 153, 151, 150, 149, 148, 147, 146, 145, 144,
+ 143, 142, 141, 140, 139, 138, 137, 136, 134, 132,
+ 131, 130, 129, 127, 126, 125, 124, 123, 122, 120,
+ 119, 118, 117, 115, 114, 113, 112, 111, 108, 106,
+ 105, 104, 103, 102, 101, 98, 97, 95, 93, 92,
+ 91, 90, 89, 88, 87, 86, 85, 78, 75, 69,
+
+ 68, 66, 64, 57, 54, 46, 45, 44, 43, 41,
+ 39, 38, 34, 27, 25, 22, 21, 17, 14, 13,
+ 11, 10, 7, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399, 399, 399,
+ 399, 399, 399, 399, 399, 399, 399, 399
} ;
static yy_state_type yy_last_accepting_state;
@@ -866,7 +866,7 @@ YY_DECL
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 122 "scanner.l"
+#line 123 "scanner.l"
#line 872 "scanner.c"
@@ -921,13 +921,13 @@ YY_DECL
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 397 )
+ if ( yy_current_state >= 400 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 421 );
+ while ( yy_base[yy_current_state] != 424 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -953,503 +953,508 @@ YY_DECL
case 1:
YY_RULE_SETUP
-#line 123 "scanner.l"
+#line 124 "scanner.l"
yylval.string = strdup(yytext); return NUMBER;
YY_BREAK
case 2:
/* rule 2 can match eol */
YY_RULE_SETUP
-#line 124 "scanner.l"
+#line 125 "scanner.l"
yylval.string = strdup(yytext); return S;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 125 "scanner.l"
+#line 126 "scanner.l"
yylval.string = strdup(yytext); return AT;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 126 "scanner.l"
+#line 127 "scanner.l"
yylval.string = strdup(yytext); return LPAREN;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 127 "scanner.l"
+#line 128 "scanner.l"
yylval.string = strdup(yytext); return RPAREN;
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 128 "scanner.l"
+#line 129 "scanner.l"
yylval.string = strdup(yytext); return PIPE;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 129 "scanner.l"
+#line 130 "scanner.l"
yylval.string = strdup(yytext); return LT;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 130 "scanner.l"
+#line 131 "scanner.l"
yylval.string = strdup(yytext); return SLASH;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 131 "scanner.l"
+#line 132 "scanner.l"
yylval.string = strdup(yytext); return DBLSLASH;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 132 "scanner.l"
+#line 133 "scanner.l"
yylval.string = strdup(yytext); return BANG;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 133 "scanner.l"
+#line 134 "scanner.l"
yylval.string = strdup(yytext); return COLON;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 134 "scanner.l"
+#line 135 "scanner.l"
yylval.string = strdup(yytext); return DBLCOLON;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 135 "scanner.l"
+#line 136 "scanner.l"
yylval.string = strdup(yytext); return QUERY;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 136 "scanner.l"
+#line 137 "scanner.l"
yylval.string = strdup(yytext); return HASH;
YY_BREAK
case 15:
/* rule 15 can match eol */
YY_RULE_SETUP
-#line 137 "scanner.l"
+#line 138 "scanner.l"
yylval.string = strdup(yytext); return COMMA;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 138 "scanner.l"
+#line 139 "scanner.l"
yylval.string = strdup(yytext); return DOT;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 139 "scanner.l"
+#line 140 "scanner.l"
yylval.string = strdup(yytext); return DBLDOT;
YY_BREAK
case 18:
/* rule 18 can match eol */
YY_RULE_SETUP
-#line 140 "scanner.l"
+#line 141 "scanner.l"
yylval.string = strdup(yytext); return GT;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 141 "scanner.l"
+#line 142 "scanner.l"
yylval.string = strdup(yytext); return LBRA;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 142 "scanner.l"
+#line 143 "scanner.l"
yylval.string = strdup(yytext); return RBRA;
YY_BREAK
case 21:
/* rule 21 can match eol */
YY_RULE_SETUP
-#line 143 "scanner.l"
+#line 144 "scanner.l"
yylval.string = strdup(yytext); return TILDE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 144 "scanner.l"
+#line 145 "scanner.l"
yylval.string = strdup(yytext); return SPLAT;
YY_BREAK
case 23:
/* rule 23 can match eol */
YY_RULE_SETUP
-#line 145 "scanner.l"
+#line 146 "scanner.l"
yylval.string = strdup(yytext); return PLUS;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 146 "scanner.l"
+#line 147 "scanner.l"
yylval.string = strdup(yytext); return DASH;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 147 "scanner.l"
+#line 148 "scanner.l"
yylval.string = strdup(yytext); return EQ;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 148 "scanner.l"
+#line 149 "scanner.l"
yylval.string = strdup(yytext); return LTE;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 149 "scanner.l"
+#line 150 "scanner.l"
yylval.string = strdup(yytext); return GTE;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 150 "scanner.l"
+#line 151 "scanner.l"
yylval.string = strdup(yytext); return DOLLAR;
YY_BREAK
case 29:
/* rule 29 can match eol */
YY_RULE_SETUP
-#line 151 "scanner.l"
+#line 152 "scanner.l"
yylval.string = strdup(yytext); return BSLASHLIT;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 152 "scanner.l"
+#line 153 "scanner.l"
yylval.string = strdup(yytext); return XANCESTOR;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 153 "scanner.l"
+#line 154 "scanner.l"
yylval.string = strdup(yytext); return XANCESTORSELF;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 154 "scanner.l"
+#line 155 "scanner.l"
yylval.string = strdup(yytext); return XATTR;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 155 "scanner.l"
+#line 156 "scanner.l"
yylval.string = strdup(yytext); return XCHILD;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 156 "scanner.l"
+#line 157 "scanner.l"
yylval.string = strdup(yytext); return XDESC;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 157 "scanner.l"
+#line 158 "scanner.l"
yylval.string = strdup(yytext); return XDESCSELF;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 158 "scanner.l"
+#line 159 "scanner.l"
yylval.string = strdup(yytext); return XFOLLOW;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 159 "scanner.l"
+#line 160 "scanner.l"
yylval.string = strdup(yytext); return XFOLLOWSIB;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 160 "scanner.l"
+#line 161 "scanner.l"
yylval.string = strdup(yytext); return XNS;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 161 "scanner.l"
+#line 162 "scanner.l"
yylval.string = strdup(yytext); return XPARENT;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 162 "scanner.l"
+#line 163 "scanner.l"
yylval.string = strdup(yytext); return XPRE;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 163 "scanner.l"
+#line 164 "scanner.l"
yylval.string = strdup(yytext); return XPRESIB;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 164 "scanner.l"
+#line 165 "scanner.l"
yylval.string = strdup(yytext); return XSELF;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 165 "scanner.l"
+#line 166 "scanner.l"
yylval.string = strdup(yytext); return XOR;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 166 "scanner.l"
+#line 167 "scanner.l"
yylval.string = strdup(yytext); return XAND;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 167 "scanner.l"
+#line 168 "scanner.l"
yylval.string = strdup(yytext); return XDIV;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 168 "scanner.l"
+#line 169 "scanner.l"
yylval.string = strdup(yytext); return XMOD;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 169 "scanner.l"
+#line 170 "scanner.l"
yylval.string = strdup(yytext); return XCOMMENT;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 170 "scanner.l"
+#line 171 "scanner.l"
yylval.string = strdup(yytext); return XTEXT;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 171 "scanner.l"
+#line 172 "scanner.l"
yylval.string = strdup(yytext); return XPI;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 172 "scanner.l"
+#line 173 "scanner.l"
yylval.string = strdup(yytext); return XNODE;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 173 "scanner.l"
+#line 174 "scanner.l"
yylval.string = strdup(yytext); return CXEQUATION;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 174 "scanner.l"
+#line 175 "scanner.l"
yylval.string = strdup(yytext); return CXOPHE;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 175 "scanner.l"
+#line 176 "scanner.l"
yylval.string = strdup(yytext); return CXOPNE;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 176 "scanner.l"
+#line 177 "scanner.l"
yylval.string = strdup(yytext); return CXOPSTARTEQ;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 177 "scanner.l"
+#line 178 "scanner.l"
yylval.string = strdup(yytext); return CXOPENDEQ;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 178 "scanner.l"
+#line 179 "scanner.l"
yylval.string = strdup(yytext); return CXOPCONTAINS;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 179 "scanner.l"
+#line 180 "scanner.l"
yylval.string = strdup(yytext); return CXOPCONTAINS2;
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 180 "scanner.l"
+#line 181 "scanner.l"
yylval.string = strdup(yytext); return CXFIRST;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 181 "scanner.l"
+#line 182 "scanner.l"
yylval.string = strdup(yytext); return CXLAST;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 182 "scanner.l"
+#line 183 "scanner.l"
yylval.string = strdup(yytext); return CXNOT;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 183 "scanner.l"
+#line 184 "scanner.l"
yylval.string = strdup(yytext); return CXEVEN;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 184 "scanner.l"
+#line 185 "scanner.l"
yylval.string = strdup(yytext); return CXODD;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 185 "scanner.l"
+#line 186 "scanner.l"
yylval.string = strdup(yytext); return CXEQ;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 186 "scanner.l"
+#line 187 "scanner.l"
yylval.string = strdup(yytext); return CXGT;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 187 "scanner.l"
+#line 188 "scanner.l"
yylval.string = strdup(yytext); return CXLT;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 188 "scanner.l"
-yylval.string = strdup(yytext); return CXHEADER;
+#line 189 "scanner.l"
+yylval.string = strdup(yytext); return CXCONTENT;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 189 "scanner.l"
-yylval.string = strdup(yytext); return CXCONTAINS;
+#line 190 "scanner.l"
+yylval.string = strdup(yytext); return CXHEADER;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 190 "scanner.l"
-yylval.string = strdup(yytext); return CXEMPTY;
+#line 191 "scanner.l"
+yylval.string = strdup(yytext); return CXCONTAINS;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 191 "scanner.l"
-yylval.string = strdup(yytext); return CXHAS;
+#line 192 "scanner.l"
+yylval.string = strdup(yytext); return CXEMPTY;
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 192 "scanner.l"
-yylval.string = strdup(yytext); return CXPARENT;
+#line 193 "scanner.l"
+yylval.string = strdup(yytext); return CXHAS;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 193 "scanner.l"
-yylval.string = strdup(yytext); return CXNTHCH;
+#line 194 "scanner.l"
+yylval.string = strdup(yytext); return CXPARENT;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 194 "scanner.l"
-yylval.string = strdup(yytext); return CXNTHLASTCH;
+#line 195 "scanner.l"
+yylval.string = strdup(yytext); return CXNTHCH;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 195 "scanner.l"
-yylval.string = strdup(yytext); return CXNTHTYPE;
+#line 196 "scanner.l"
+yylval.string = strdup(yytext); return CXNTHLASTCH;
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 196 "scanner.l"
-yylval.string = strdup(yytext); return CXNTHLASTTYPE;
+#line 197 "scanner.l"
+yylval.string = strdup(yytext); return CXNTHTYPE;
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 197 "scanner.l"
-yylval.string = strdup(yytext); return CXFIRSTCH;
+#line 198 "scanner.l"
+yylval.string = strdup(yytext); return CXNTHLASTTYPE;
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 198 "scanner.l"
-yylval.string = strdup(yytext); return CXLASTCH;
+#line 199 "scanner.l"
+yylval.string = strdup(yytext); return CXFIRSTCH;
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 199 "scanner.l"
-yylval.string = strdup(yytext); return CXFIRSTTYPE;
+#line 200 "scanner.l"
+yylval.string = strdup(yytext); return CXLASTCH;
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 200 "scanner.l"
-yylval.string = strdup(yytext); return CXLASTTYPE;
+#line 201 "scanner.l"
+yylval.string = strdup(yytext); return CXFIRSTTYPE;
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 201 "scanner.l"
-yylval.string = strdup(yytext); return CXONLYCH;
+#line 202 "scanner.l"
+yylval.string = strdup(yytext); return CXLASTTYPE;
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 202 "scanner.l"
-yylval.string = strdup(yytext); return CXONLYTYPE;
+#line 203 "scanner.l"
+yylval.string = strdup(yytext); return CXONLYCH;
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 203 "scanner.l"
-yylval.string = strdup(yytext); return CXINPUT;
+#line 204 "scanner.l"
+yylval.string = strdup(yytext); return CXONLYTYPE;
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 204 "scanner.l"
-yylval.string = strdup(yytext); return CXTEXT;
+#line 205 "scanner.l"
+yylval.string = strdup(yytext); return CXINPUT;
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 205 "scanner.l"
-yylval.string = strdup(yytext); return CXPASSWORD;
+#line 206 "scanner.l"
+yylval.string = strdup(yytext); return CXTEXT;
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 206 "scanner.l"
-yylval.string = strdup(yytext); return CXRADIO;
+#line 207 "scanner.l"
+yylval.string = strdup(yytext); return CXPASSWORD;
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 207 "scanner.l"
-yylval.string = strdup(yytext); return CXCHECKBOX;
+#line 208 "scanner.l"
+yylval.string = strdup(yytext); return CXRADIO;
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 208 "scanner.l"
-yylval.string = strdup(yytext); return CXSUBMIT;
+#line 209 "scanner.l"
+yylval.string = strdup(yytext); return CXCHECKBOX;
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 209 "scanner.l"
-yylval.string = strdup(yytext); return CXIMAGE;
+#line 210 "scanner.l"
+yylval.string = strdup(yytext); return CXSUBMIT;
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 210 "scanner.l"
-yylval.string = strdup(yytext); return CXRESET;
+#line 211 "scanner.l"
+yylval.string = strdup(yytext); return CXIMAGE;
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 211 "scanner.l"
-yylval.string = strdup(yytext); return CXBUTTON;
+#line 212 "scanner.l"
+yylval.string = strdup(yytext); return CXRESET;
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 212 "scanner.l"
-yylval.string = strdup(yytext); return CXFILE;
+#line 213 "scanner.l"
+yylval.string = strdup(yytext); return CXBUTTON;
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 213 "scanner.l"
-yylval.string = strdup(yytext); return CXENABLED;
+#line 214 "scanner.l"
+yylval.string = strdup(yytext); return CXFILE;
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 214 "scanner.l"
-yylval.string = strdup(yytext); return CXDISABLED;
+#line 215 "scanner.l"
+yylval.string = strdup(yytext); return CXENABLED;
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 215 "scanner.l"
-yylval.string = strdup(yytext); return CXCHECKED;
+#line 216 "scanner.l"
+yylval.string = strdup(yytext); return CXDISABLED;
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 216 "scanner.l"
-yylval.string = strdup(yytext); return CXSELECTED;
+#line 217 "scanner.l"
+yylval.string = strdup(yytext); return CXCHECKED;
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 217 "scanner.l"
-yylval.string = strdup(yytext); return NAME;
+#line 218 "scanner.l"
+yylval.string = strdup(yytext); return CXSELECTED;
YY_BREAK
case 96:
-/* rule 96 can match eol */
YY_RULE_SETUP
-#line 218 "scanner.l"
-yylval.string = strdup(yytext); return STRING;
+#line 219 "scanner.l"
+yylval.string = strdup(yytext); return NAME;
YY_BREAK
case 97:
/* rule 97 can match eol */
YY_RULE_SETUP
-#line 219 "scanner.l"
-yylval.string = strdup(yytext); return OTHER;
+#line 220 "scanner.l"
+yylval.string = strdup(yytext); return STRING;
YY_BREAK
case 98:
+/* rule 98 can match eol */
YY_RULE_SETUP
-#line 220 "scanner.l"
+#line 221 "scanner.l"
+yylval.string = strdup(yytext); return OTHER;
+ YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 222 "scanner.l"
ECHO;
YY_BREAK
-#line 1453 "scanner.c"
+#line 1458 "scanner.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(DSTR):
case YY_STATE_EOF(SSTR):
@@ -1735,7 +1740,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 397 )
+ if ( yy_current_state >= 400 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1763,11 +1768,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 397 )
+ if ( yy_current_state >= 400 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 396);
+ yy_is_jam = (yy_current_state == 399);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2483,4 +2488,4 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 220 "scanner.l"
+#line 222 "scanner.l"
View
2  scanner.l
@@ -87,6 +87,7 @@ CXODD ":odd"
CXEQ ":eq"
CXGT ":gt"
CXLT ":lt"
+CXCONTENT ":content"
CXHEADER ":header"
CXCONTAINS ":contains"
CXEMPTY ":empty"
@@ -185,6 +186,7 @@ NAME [a-zA-Z_][a-zA-Z0-9\-_]*
{CXEQ} yylval.string = strdup(yytext); return CXEQ;
{CXGT} yylval.string = strdup(yytext); return CXGT;
{CXLT} yylval.string = strdup(yytext); return CXLT;
+{CXCONTENT} yylval.string = strdup(yytext); return CXCONTENT;
{CXHEADER} yylval.string = strdup(yytext); return CXHEADER;
{CXCONTAINS} yylval.string = strdup(yytext); return CXCONTAINS;
{CXEMPTY} yylval.string = strdup(yytext); return CXEMPTY;
View
2  test/content.json
@@ -1 +1 @@
-{ "paras": [{ "id": "1", "is_a": "a" }, { "id": "3", "is_a": "a " }, { "id": "1", "is_a": " a" }] }
+{ "foo": [ "a", "a ", " a" ] }
View
5 test/content.let
@@ -1,6 +1,3 @@
{
- "paras(p)": [{
- "id": "@id",
- "is_a": ":content('a')"
- }]
+ "foo": [":content('a')"]
}
Please sign in to comment.
Something went wrong with that request. Please try again.