(stream,state)
| 509 | return state.tokenize(stream,state);} |
| 510 | |
| 511 | function tokenPerl(stream,state){ |
| 512 | if(stream.eatSpace()) |
| 513 | return null; |
| 514 | if(state.chain) |
| 515 | return tokenChain(stream,state,state.chain,state.style,state.tail); |
| 516 | if(stream.match(/^\-?[\d\.]/,false)) |
| 517 | if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) |
| 518 | return 'number'; |
| 519 | if(stream.match(/^<<(?=\w)/)){ // NOTE: <<SOMETHING\n...\nSOMETHING\n |
| 520 | stream.eatWhile(/\w/); |
| 521 | return tokenSOMETHING(stream,state,stream.current().substr(2));} |
| 522 | if(stream.sol()&&stream.match(/^\=item(?!\w)/)){// NOTE: \n=item...\n=cut\n |
| 523 | return tokenSOMETHING(stream,state,'=cut');} |
| 524 | var ch=stream.next(); |
| 525 | if(ch=='"'||ch=="'"){ // NOTE: ' or " or <<'SOMETHING'\n...\nSOMETHING\n or <<"SOMETHING"\n...\nSOMETHING\n |
| 526 | if(prefix(stream, 3)=="<<"+ch){ |
| 527 | var p=stream.pos; |
| 528 | stream.eatWhile(/\w/); |
| 529 | var n=stream.current().substr(1); |
| 530 | if(n&&stream.eat(ch)) |
| 531 | return tokenSOMETHING(stream,state,n); |
| 532 | stream.pos=p;} |
| 533 | return tokenChain(stream,state,[ch],"string");} |
| 534 | if(ch=="q"){ |
| 535 | var c=look(stream, -2); |
| 536 | if(!(c&&/\w/.test(c))){ |
| 537 | c=look(stream, 0); |
| 538 | if(c=="x"){ |
| 539 | c=look(stream, 1); |
| 540 | if(c=="("){ |
| 541 | eatSuffix(stream, 2); |
| 542 | return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} |
| 543 | if(c=="["){ |
| 544 | eatSuffix(stream, 2); |
| 545 | return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} |
| 546 | if(c=="{"){ |
| 547 | eatSuffix(stream, 2); |
| 548 | return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} |
| 549 | if(c=="<"){ |
| 550 | eatSuffix(stream, 2); |
| 551 | return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} |
| 552 | if(/[\^'"!~\/]/.test(c)){ |
| 553 | eatSuffix(stream, 1); |
| 554 | return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} |
| 555 | else if(c=="q"){ |
| 556 | c=look(stream, 1); |
| 557 | if(c=="("){ |
| 558 | eatSuffix(stream, 2); |
| 559 | return tokenChain(stream,state,[")"],"string");} |
| 560 | if(c=="["){ |
| 561 | eatSuffix(stream, 2); |
| 562 | return tokenChain(stream,state,["]"],"string");} |
| 563 | if(c=="{"){ |
| 564 | eatSuffix(stream, 2); |
| 565 | return tokenChain(stream,state,["}"],"string");} |
| 566 | if(c=="<"){ |
| 567 | eatSuffix(stream, 2); |
| 568 | return tokenChain(stream,state,[">"],"string");} |
nothing calls this directly
no test coverage detected