2007-11-19 22:36:38 -05:00
|
|
|
! Copyright (C) 2007 Chris Double.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
!
|
2007-11-26 18:22:33 -05:00
|
|
|
USING: kernel tools.test strings namespaces arrays sequences peg peg.private ;
|
2008-03-01 17:00:45 -05:00
|
|
|
IN: peg.tests
|
2007-11-19 22:36:38 -05:00
|
|
|
|
|
|
|
{ 0 1 2 } [
|
|
|
|
0 next-id set-global get-next-id get-next-id get-next-id
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"endbegin" "begin" token parse
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
2007-11-20 21:31:23 -05:00
|
|
|
{ "begin" "end" } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"beginend" "begin" token parse
|
2007-11-20 21:31:23 -05:00
|
|
|
{ parse-result-ast parse-result-remaining } get-slots
|
2007-11-26 17:57:08 -05:00
|
|
|
>string
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"" CHAR: a CHAR: z range parse
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"1bcd" CHAR: a CHAR: z range parse
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ CHAR: a } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"abcd" CHAR: a CHAR: z range parse parse-result-ast
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ CHAR: z } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"zbcd" CHAR: a CHAR: z range parse parse-result-ast
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"bad" "a" token "b" token 2array seq parse
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
|
|
|
|
2007-11-20 21:31:23 -05:00
|
|
|
{ V{ "g" "o" } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"good" "g" token "o" token 2array seq parse parse-result-ast
|
2007-11-19 22:36:38 -05:00
|
|
|
] unit-test
|
2007-11-19 23:58:11 -05:00
|
|
|
|
|
|
|
{ "a" } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"abcd" "a" token "b" token 2array choice parse parse-result-ast
|
2007-11-19 23:58:11 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ "b" } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"bbcd" "a" token "b" token 2array choice parse parse-result-ast
|
2007-11-19 23:58:11 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"cbcd" "a" token "b" token 2array choice parse
|
2007-11-19 23:58:11 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"" "a" token "b" token 2array choice parse
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ 0 } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"" "a" token repeat0 parse parse-result-ast length
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ 0 } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"b" "a" token repeat0 parse parse-result-ast length
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
|
|
|
|
2007-11-20 21:31:23 -05:00
|
|
|
{ V{ "a" "a" "a" } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"aaab" "a" token repeat0 parse parse-result-ast
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"" "a" token repeat1 parse
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"b" "a" token repeat1 parse
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
|
|
|
|
2007-11-20 21:31:23 -05:00
|
|
|
{ V{ "a" "a" "a" } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"aaab" "a" token repeat1 parse parse-result-ast
|
2007-11-20 21:01:44 -05:00
|
|
|
] unit-test
|
2007-11-20 21:50:47 -05:00
|
|
|
|
|
|
|
{ V{ "a" "b" } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"ab" "a" token optional "b" token 2array seq parse parse-result-ast
|
2007-11-20 21:50:47 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ V{ f "b" } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"b" "a" token optional "b" token 2array seq parse parse-result-ast
|
2007-11-20 21:50:47 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"cb" "a" token optional "b" token 2array seq parse
|
2007-11-20 22:06:02 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ V{ CHAR: a CHAR: b } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"ab" "a" token ensure CHAR: a CHAR: z range dup 3array seq parse parse-result-ast
|
2007-11-20 22:06:02 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"bb" "a" token ensure CHAR: a CHAR: z range 2array seq parse
|
2007-11-20 22:11:49 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ t } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"a+b"
|
2007-11-20 22:11:49 -05:00
|
|
|
"a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq
|
|
|
|
parse [ t ] [ f ] if
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ t } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"a++b"
|
2007-11-20 22:11:49 -05:00
|
|
|
"a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq
|
|
|
|
parse [ t ] [ f ] if
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ t } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"a+b"
|
2007-11-20 22:11:49 -05:00
|
|
|
"a" token "+" token "++" token 2array choice "b" token 3array seq
|
|
|
|
parse [ t ] [ f ] if
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"a++b"
|
2007-11-20 22:11:49 -05:00
|
|
|
"a" token "+" token "++" token 2array choice "b" token 3array seq
|
|
|
|
parse [ t ] [ f ] if
|
2007-11-20 22:21:23 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ 1 } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"a" "a" token [ drop 1 ] action parse parse-result-ast
|
2007-11-20 22:21:23 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ V{ 1 1 } } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"aa" "a" token [ drop 1 ] action dup 2array seq parse parse-result-ast
|
2007-11-20 22:21:23 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
2007-11-26 17:57:08 -05:00
|
|
|
"b" "a" token [ drop 1 ] action parse
|
2007-11-26 21:08:16 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
|
|
|
"b" [ CHAR: a = ] satisfy parse
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ CHAR: a } [
|
|
|
|
"a" [ CHAR: a = ] satisfy parse parse-result-ast
|
2007-11-26 21:45:00 -05:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ "a" } [
|
|
|
|
" a" "a" token sp parse parse-result-ast
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ "a" } [
|
|
|
|
"a" "a" token sp parse parse-result-ast
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ V{ "a" } } [
|
|
|
|
"[a]" "[" token hide "a" token "]" token hide 3array seq parse parse-result-ast
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
{ f } [
|
|
|
|
"a]" "[" token hide "a" token "]" token hide 3array seq parse
|
|
|
|
] unit-test
|
|
|
|
|