[ digit? ] satisfy [ digit> ] action ;
: 'integer' ( -- parser )
- 'digit' repeat1 [ 10 digits>integer ] action ;
+ [ digit? ] satisfy repeat1 [ string>number ] action ;
: 'string' ( -- parser )
[
[ digit? ] satisfy [ digit> ] <@ ;
: 'integer' ( -- parser )
- 'digit' <!+> [ 10 digits>integer ] <@ ;
+ [ digit? ] satisfy <*> [ string>number ] <@ ;
: 'string' ( -- parser )
[ CHAR: " = ] satisfy
IN: peg.expr
EBNF: expr
-digit = [0-9] => [[ digit> ]]
-number = (digit)+ => [[ 10 digits>integer ]]
+number = ([0-9])+ => [[ string>number ]]
value = number
| ("(" exp ")") => [[ second ]]
term = factor { {"*" | "/"} factor }*
factor = ident | number | "(" expression ")"
ident = (([a-zA-Z])+) => [[ >string ]]
-digit = ([0-9]) => [[ digit> ]]
-number = (digit)+ => [[ 10 digits>integer ]]
+number = ([0-9])+ => [[ string>number ]]
program = { block "." }
;EBNF