peg: replace uses of digits>integer with string>number.
parent
f59d8ef0c1
commit
b5a671cd88
|
@ -71,7 +71,7 @@ PRIVATE>
|
||||||
[ digit? ] satisfy [ digit> ] action ;
|
[ digit? ] satisfy [ digit> ] action ;
|
||||||
|
|
||||||
: 'integer' ( -- parser )
|
: 'integer' ( -- parser )
|
||||||
'digit' repeat1 [ 10 digits>integer ] action ;
|
[ digit? ] satisfy repeat1 [ string>number ] action ;
|
||||||
|
|
||||||
: 'string' ( -- parser )
|
: 'string' ( -- parser )
|
||||||
[
|
[
|
||||||
|
|
|
@ -8,7 +8,7 @@ IN: parser-combinators.simple
|
||||||
[ digit? ] satisfy [ digit> ] <@ ;
|
[ digit? ] satisfy [ digit> ] <@ ;
|
||||||
|
|
||||||
: 'integer' ( -- parser )
|
: 'integer' ( -- parser )
|
||||||
'digit' <!+> [ 10 digits>integer ] <@ ;
|
[ digit? ] satisfy <*> [ string>number ] <@ ;
|
||||||
|
|
||||||
: 'string' ( -- parser )
|
: 'string' ( -- parser )
|
||||||
[ CHAR: " = ] satisfy
|
[ CHAR: " = ] satisfy
|
||||||
|
|
|
@ -5,8 +5,7 @@ peg peg.ebnf peg.parsers memoize math accessors ;
|
||||||
IN: peg.expr
|
IN: peg.expr
|
||||||
|
|
||||||
EBNF: expr
|
EBNF: expr
|
||||||
digit = [0-9] => [[ digit> ]]
|
number = ([0-9])+ => [[ string>number ]]
|
||||||
number = (digit)+ => [[ 10 digits>integer ]]
|
|
||||||
value = number
|
value = number
|
||||||
| ("(" exp ")") => [[ second ]]
|
| ("(" exp ")") => [[ second ]]
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,6 @@ expression = {"+" | "-"}? term { {"+" | "-"} term }*
|
||||||
term = factor { {"*" | "/"} factor }*
|
term = factor { {"*" | "/"} factor }*
|
||||||
factor = ident | number | "(" expression ")"
|
factor = ident | number | "(" expression ")"
|
||||||
ident = (([a-zA-Z])+) => [[ >string ]]
|
ident = (([a-zA-Z])+) => [[ >string ]]
|
||||||
digit = ([0-9]) => [[ digit> ]]
|
number = ([0-9])+ => [[ string>number ]]
|
||||||
number = (digit)+ => [[ 10 digits>integer ]]
|
|
||||||
program = { block "." }
|
program = { block "." }
|
||||||
;EBNF
|
;EBNF
|
||||||
|
|
Loading…
Reference in New Issue