?? match.t.svn-base
字號:
# match.t# Test the auto-matching behavior of the parseruse test_spike;#use Data::Dumper::Simple;plan tests => 1 * blocks() + 3 * 10;run_tests;__DATA__=== TEST 1: match_re returns matched substring--- grammaridentifier: /[A-Za-z]\w*/--- inputmatch_re--- ast"match_re"=== TEST 2: ditto, invalid input--- input232--- astundef=== TEST 3: match_str returns matched substring--- grammarkeyword: 'procedure' | 'if' | 'while'--- inputif--- ast'if'=== TEST 4: match_str: 'while'--- input while--- ast'while'=== TEST 5: match_str: 'procedure'--- inputprocedure--- ast"procedure"=== TEST 6: match_str, fail to match--- inputfor--- astundef=== TEST 7: concat returns last item by default--- grammarif_stmt: 'if' '(' /[01]/ ')' blockblock: /{[^}]*}/--- inputif (1) { say "ok!";}--- astq[{ say "ok!";}]=== TEST 8: chained rules, if_statement--- grammarprogram: statementstatement: if_statement | assignmentif_statement: 'if' '(' expression ')' blockexpression: /[1-9]\d+\b/block: /{[^}]*}/assignment: var ':=' expressionvar: /[A-Za-z]\w*/--- inputif (32) { print 'yay!' }--- ast"{ print 'yay!' }"=== TEST 9: chained rules, assignment--- inputfoo := 25--- ast25=== TEST 10: modifier '(s)', 3 elems--- grammarprogram: number(s) | ':' var(s?) | '=>' operator(?)number: /[1-9]\d*/var: /[A-Za-z]\w*/operator: /[-+]/--- input1 2 3--- ast[1,2,3]=== TEST 11: modifier '(s)', 1 elem--- input15--- ast[15]=== TEST 12: modifier '(s?)', 3 elems--- input:foo bar baz--- ast[qw(foo bar baz)]=== TEST 13: modifier '(s?)', 1 elem--- input:yay5--- ast['yay5']=== TEST 14: modifier '(s?)', 0 elem--- input:--- ast[]=== TEST 15: modifier '(?)', 1 elem--- input=> +--- ast['+']=== TEST 16: modifier '(?)', 0 elem--- input=>--- ast[]=== TEST 17: modifier '(s /../)', 3 elems--- grammarprogram: number(s /;/) | ':' var(s? /,/)number: /[1-9]\d*/var: /[A-Za-z]\w*/--- input13; 25 ; 37--- ast[13,25,37]=== TEST 18: modifier '(s /../)', 1 elem--- input13--- ast[13]=== TEST 19: modifier '(s /../)', 0 elem--- input--- astundef=== TEST 20: modifier '(s? /../)', 5 elems--- input:cat, bird , dog,pig, man--- ast[qw( cat bird dog pig man )]=== TEST 21: modifier '(s? /../)', 1 elem--- input : clover--- ast['clover']=== TEST 22: modifier '(s? /../)', 0 elem--- input:--- ast[]=== TEST 23: modifier '(s /(..)/)', 3 elems--- grammarprogram: number(s /(=>|,)/) | ':' var(s? /([-+])/)number: /[1-9]\d*/var: /[A-Za-z]\w*/--- input13, 25 => 37--- ast[13, ',', 25, '=>', 37]=== TEST 24: modifier '(s /(..)/)', 1 elem--- input13--- ast[13]=== TEST 25: modifier '(s /(..)/)', 0 elem--- input--- astundef=== TEST 26: modifier '(s? /(..)/)', 5 elems--- input:cat+ bird - dog + pig + man--- ast[qw( cat + bird - dog + pig + man )]=== TEST 27: modifier '(s? /(..)/)', 1 elem--- input : clover--- ast['clover']=== TEST 28: modifier '(s? /(..)/)', 0 elem--- input:--- ast[]=== TEST 29: modifier '<leftop: a /../ b>'--- grammarprogram: expr(s)expr: <leftop: term /[-+]/ term>term: <leftop: factor /[*\/]/ factor>factor: /[1-9]\d*/--- input31/32 + 2*25*123 - 3*56*5/4/2--- ast[ [[31,32], [2,25,123], [3,5]], [[6,5,4,2]],]=== TEST 30: modifier '<leftop: a /(..)/ b>'--- grammarprogram: expr(s)expr: <leftop: term /([-+])/ term>term: <leftop: factor /([*\/])/ factor>factor: /[1-9]\d*/--- input31/32 + 2*25*123 - 3*5 - 6*5/4/2--- ast[[ [31,'/',32], '+', [2,'*',25,'*',123], '-', [3,'*',5], '-', [6,'*',5,'/',4,'/',2] ]]=== TEST 31: regex--- grammarregex: /\/(\\\/|[^\/])*\//--- input/\/(\\\/|[^\/])*\//--- ast chop<<'EOC';/\/(\\\/|[^\/])*\//EOC
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -