1#!inc/bin/testml-cpan 2 3 4parse-to-tree(*grammar, *input).yaml.clean == *tree 5 :"+ - Pegex::Tree" 6 7parse-to-tree-wrap(*grammar, *input).yaml.clean == *wrap 8 :"+ - Pegex::Tree::Wrap" 9 10parse-to-tree-test(*grammar, *input).yaml.clean == *ast 11 :"+ - t::TestAST" 12 13 14=== Single Regex - Single Capture 15--- grammar 16a: /x*(y*)z* EOL/ 17--- input 18xxxyyyyzzz 19--- tree 20yyyy 21--- wrap 22a: yyyy 23 24 25=== Single Regex - Multi Capture 26--- grammar 27a: /(x*)(y*)(z*) EOL/ 28--- input 29xxxyyyyzzz 30--- tree 31- xxx 32- yyyy 33- zzz 34--- wrap 35a: 36- xxx 37- yyyy 38- zzz 39 40 41=== Multi Group Regex 42--- grammar 43t: /.*(x).*(y).*(z).*/ 44--- input: aaaxbbbyccczddd 45--- tree 46- x 47- y 48- z 49--- wrap 50t: 51- x 52- y 53- z 54 55 56=== Single Regex - No Capture 57--- grammar 58a: /x*y*z* EOL/ 59--- input 60xxxyyyyzzz 61--- tree 62[] 63--- wrap 64a: [] 65 66 67=== Non capture Regex 68--- grammar 69a: b b* -c* .d* 70b: /b/ 71c: /c+/ 72d: /d/ 73--- input: bbccdd 74--- tree 75- [] 76--- wrap 77a: 78- [] 79 80 81=== A subrule 82--- grammar 83a: b /(y+)/ EOL 84b: /(x+)/ 85--- input 86xxxyyyy 87--- tree 88- xxx 89- yyyy 90--- wrap 91a: 92- b: xxx 93- yyyy 94 95 96=== Multi match regex in subrule 97--- grammar 98a: b 99b: /(x*)y*(z*) EOL/ 100--- input 101xxxyyyyzzz 102--- tree 103- xxx 104- zzz 105--- wrap 106a: 107 b: 108 - xxx 109 - zzz 110 111 112=== Any rule group 113--- grammar 114a: (b | c) 115b: /(bleh)/ 116c: /(x*)y*(z*) EOL?/ 117--- input 118xxxyyyyzzz 119--- tree 120- xxx 121- zzz 122--- wrap 123a: 124 c: 125 - xxx 126 - zzz 127 128 129=== + Modifier 130--- grammar 131a: ( b c )+ EOL 132b: /(x*)/ 133c: /(y+)/ 134--- input 135xxyyxy 136--- tree 137- - - xx 138 - yy 139 - - x 140 - y 141--- wrap 142a: 143- - - b: xx 144 - c: yy 145 - - b: x 146 - c: y 147 148 149=== Wrap Pass and Skip 150--- grammar 151a: +b -c .d 152b: /(b+)/ 153c: /(c+)/ 154d: /(d+)/ 155--- input: bbccdd 156--- tree 157- b: bb 158- cc 159--- wrap 160a: 161- b: bb 162- c: cc 163 164 165=== Flat and Skip Multi 166--- grammar 167a: b* -c* .d* 168b: /(b)/ 169c: /(c)/ 170d: /(d)/ 171--- input: bccdd 172--- tree 173- - b 174- c 175- c 176--- wrap 177a: 178- - b: b 179- c: c 180- c: c 181 182 183=== Skip Bracketed 184--- grammar 185a: b .(c d) 186b: /(b)/ 187c: /(c+)/ 188d: /(d+)/ 189--- input: bcccd 190--- tree 191b 192--- wrap 193a: 194 b: b 195 196 197=== Assertions 198--- grammar 199a: !b =c c 200b: /b/ 201c: /(c+)/ 202--- input: ccc 203--- tree 204ccc 205--- wrap 206a: 207 c: ccc 208 209 210=== Assertion not captured 211--- grammar 212a: =x x y EOL 213x: /(x+)/ 214y: /(y+)/ 215--- input 216xxxyyyy 217--- tree 218- xxx 219- yyyy 220--- wrap 221a: 222- x: xxx 223- y: yyyy 224 225 226=== Empty regex group plus rule 227--- grammar 228a: b* c EOL 229b: /xxx/ 230c: /(yyy)/ 231--- input 232xxxyyy 233--- tree 234- [] 235- yyy 236--- wrap 237a: 238- [] 239- c: yyy 240 241 242=== Rule to Rule to Rule 243--- grammar 244a: b 245b: c* 246c: d EOL 247d: /x(y)z/ 248--- input 249xyz 250xyz 251--- tree 252- - y 253- - y 254--- wrap 255a: 256 b: 257 - c: 258 - d: y 259 - c: 260 - d: y 261 262 263=== List and Separators 264--- grammar 265a: b c+ % d 266b: /(b)/ 267c: /(c+)/ 268d: /(d+)/ 269--- input: bcccdccddc 270--- tree 271- b 272- - ccc 273 - d 274 - cc 275 - dd 276 - c 277--- wrap 278a: 279- b: b 280- - c: ccc 281 - d: d 282 - c: cc 283 - d: dd 284 - c: c 285 286 287=== Rule with Separator 288--- grammar 289a: c* % d 290c: /(c+)/ 291d: /d+/ 292--- input: cccdccddc 293--- tree 294- ccc 295- cc 296- c 297--- wrap 298a: 299- c: ccc 300- c: cc 301- c: c 302 303 304=== List without Separators 305--- grammar 306a: b c* % d b 307b: /(b)/ 308c: /(c+)/ 309d: /d+/ 310--- input: bb 311--- tree 312- b 313- [] 314- b 315--- wrap 316a: 317- b: b 318- [] 319- b: b 320 321 322=== Whitespace Matchers 323--- grammar 324TOP: / ws*( DOT ) - ( DOT* ) -/ 325--- input 326 . 327 .. 328 329--- tree 330- . 331- .. 332--- wrap 333TOP: 334- . 335- .. 336 337 338=== Automatically Pass TOP 339--- grammar 340b: /(b)/ 341TOP: b c* 342c: /(c)/ 343--- input: bcc 344--- tree 345- b 346- - c 347 - c 348--- wrap 349TOP: 350- b: b 351- - c: c 352 - c: c 353 354 355=== Empty Stars 356--- grammar 357a: ( b* c )+ b* 358b: /(b)/ 359c: /(c+)/ 360--- input: cc 361--- tree 362- - - [] 363 - cc 364- [] 365--- wrap 366a: 367- - - [] 368 - c: cc 369- [] 370 371 372=== Exact Quantifier 373--- grammar 374a: <b>3 375b: /(b)/ 376--- input: bbb 377--- tree 378- b 379- b 380- b 381--- wrap 382a: 383- b: b 384- b: b 385- b: b 386 387 388=== Quantifier with Separator 389--- grammar 390a: <b>2-4 %% /,/ 391b: /(b)/ 392--- input: b,b,b, 393--- tree 394- b 395- b 396- b 397--- wrap 398a: 399- b: b 400- b: b 401- b: b 402 403 404=== Quantifier with Separator, Trailing OK 405--- grammar 406a: <b>2-4 %% /,/ 407b: /(b)/ 408--- input: b,b,b, 409--- tree 410- b 411- b 412- b 413--- wrap 414a: 415- b: b 416- b: b 417- b: b 418 419 420=== Quantifier on the Separator 421--- grammar 422a: <b>2-4 %% c* 423b: /(b)/ 424c: / COMMA / 425--- input: b,b,,,,bb, 426--- tree 427- b 428- [] 429- b 430- [] 431- b 432- [] 433- b 434--- wrap 435a: 436- b: b 437- [] 438- b: b 439- [] 440- b: b 441- [] 442- b: b 443 444 445=== Tilde matching 446--- grammar 447a: - b + b+ 448b: /(b)/ 449c: / COMMA / 450--- input: b bb 451--- tree 452- b 453- - b 454 - b 455--- wrap 456a: 457- b: b 458- - b: b 459 - b: b 460 461 462=== False Values 463--- grammar 464a: zero empty undef 465zero: /(b+)/ 466empty: /(c+)/ 467undef: /(d+)/ 468--- input: bbccdd 469--- ast 470- 0 471- '' 472- null 473 474 475=== Wrap 476--- grammar 477a: b c d 478b: /(b+)/ 479c: /(c+)/ 480d: /(d+)/ 481--- input: bbccdd 482--- wrap 483a: 484- b: bb 485- c: cc 486- d: dd 487 488 489=== 2 + 1 490--- SKIP 491--- grammar 492a: <b>2 b 493b: /(b)/ 494--- input: bbb 495--- ast 496- b 497- b 498- b 499 500 501=== Separated Group 502--- grammar 503a: (b | c)+ % d 504b: /(b)/ 505c: /(c)/ 506d: /(d)/ 507--- input: bdcdb 508--- ast 509- b 510- d 511- c 512- d 513- b 514 515 516=== Separator Group 517--- grammar 518a: b+ %% (c | d) 519b: /(b)/ 520c: /(c)/ 521d: /(d)/ 522--- input: bdbcbc 523--- ast 524- b 525- d 526- b 527- c 528- b 529- c 530