Annotation of gforth/regexp-test.fs, revision 1.1
1.1 ! pazsan 1: \ regexp test
! 2:
! 3: charclass [bl-] blanks +class '- +char
! 4: charclass [0-9(] '( +char '0 '9 ..char
! 5:
! 6: : telnum ( addr u -- flag )
! 7: (( {{ ` ( \( \d \d \d \) ` ) || \( \d \d \d \) }} blanks c?
! 8: \( \d \d \d \) [bl-] c?
! 9: \( \d \d \d \d \) {{ \$ || -\d }} )) ;
! 10:
! 11: : ?tel ( addr u -- ) telnum
! 12: IF '( emit \1 type ." ) " \2 type '- emit \3 type ." succeeded"
! 13: ELSE \0 type ." failed " THEN ;
! 14:
! 15: : ?tel-s ( addr u -- ) ?tel ." should succeed" space depth . cr ;
! 16: : ?tel-f ( addr u -- ) ?tel ." should fail" space depth . cr ;
! 17:
! 18: ." --- Telephone number match ---" cr
! 19: s" (123) 456-7890" ?tel-s
! 20: s" (123) 456-7890 " ?tel-s
! 21: s" (123)-456 7890" ?tel-f
! 22: s" (123) 456 789" ?tel-f
! 23: s" 123 456-7890" ?tel-s
! 24: s" 123 456-78909" ?tel-f
! 25:
! 26: : telnum2 ( addr u -- flag )
! 27: (( // {{ [0-9(] -c? || \^ }}
! 28: {{ ` ( \( \d \d \d \) ` ) || \( \d \d \d \) }} blanks c?
! 29: \( \d \d \d \) [bl-] c?
! 30: \( \d \d \d \d \) {{ \$ || -\d }} )) ;
! 31:
! 32: : ?tel2 ( addr u -- ) telnum2
! 33: IF '( emit \1 type ." ) " \2 type '- emit \3 type ." succeeded"
! 34: ELSE \0 type ." failed " THEN cr ;
! 35: ." --- Telephone number search ---" cr
! 36: s" blabla (123) 456-7890" ?tel2
! 37: s" blabla (123) 456-7890 " ?tel2
! 38: s" blabla (123)-456 7890" ?tel2
! 39: s" blabla (123) 456 789" ?tel2
! 40: s" blabla 123 456-7890" ?tel2
! 41: s" blabla 123 456-78909" ?tel2
! 42: s" (123) 456-7890" ?tel2
! 43: s" (123) 456-7890 " ?tel2
! 44: s" a (123)-456 7890" ?tel2
! 45: s" la (123) 456 789" ?tel2
! 46: s" bla 123 456-7890" ?tel2
! 47: s" abla 123 456-78909" ?tel2
! 48:
! 49: ." --- Number extraction test ---" cr
! 50:
! 51: charclass [0-9,./:] '0 '9 ..char ', +char '. +char '/ +char ': +char
! 52:
! 53: : ?num
! 54: (( // \( {++ [0-9,./:] c? ++} \) ))
! 55: IF \1 type ELSE \0 type ." failed" THEN cr ;
! 56:
! 57: s" 1234" ?num
! 58: s" 12,345abc" ?num
! 59: s" foobar12/345:678.9abc" ?num
! 60: s" blafasel" ?num
! 61:
! 62: ." --- String test --- " cr
! 63:
! 64: : ?string
! 65: (( // \( {{ =" foo" || =" bar" || =" test" }} \) ))
! 66: IF \1 type cr THEN ;
! 67: s" dies ist ein test" ?string
! 68: s" foobar" ?string
! 69: s" baz bar foo" ?string
! 70: s" Hier kommt nichts vor" ?string
! 71:
! 72: ." --- longer matches test --- " cr
! 73:
! 74: : ?foos
! 75: (( \( {** =" foo" **} \) ))
! 76: IF \1 type ELSE \0 type ." failed" THEN cr ;
! 77:
! 78: : ?foobars
! 79: (( // \( {** =" foo" **} \) \( {++ =" bar" ++} \) ))
! 80: IF \1 type ', emit \2 type ELSE \0 type ." failed" THEN cr ;
! 81:
! 82: : ?foos1
! 83: (( // \( {+ =" foo" +} \) \( {++ =" bar" ++} \) ))
! 84: IF \1 type ', emit \2 type ELSE \0 type ." failed" THEN cr ;
! 85:
! 86: s" foobar" ?foos
! 87: s" foofoofoobar" ?foos
! 88: s" fofoofoofofooofoobarbar" ?foos
! 89: s" bla baz bar" ?foos
! 90: s" foofoofoo" ?foos
! 91:
! 92: s" foobar" ?foobars
! 93: s" foofoofoobar" ?foobars
! 94: s" fofoofoofofooofoobarbar" ?foobars
! 95: s" bla baz bar" ?foobars
! 96: s" foofoofoo" ?foobars
! 97:
! 98: s" foobar" ?foos1
! 99: s" foofoofoobar" ?foos1
! 100: s" fofoofoofofooofoobarbar" ?foos1
! 101: s" bla baz bar" ?foos1
! 102: s" foofoofoo" ?foos1
! 103:
! 104: script? [IF] bye [THEN]
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>