Make some parsers uses MEMO:

release
Chris Double 2007-11-29 23:49:34 +13:00
parent 362f2d3436
commit 3003911e07
1 changed files with 12 additions and 12 deletions

View File

@ -1,7 +1,7 @@
! Copyright (C) 2007 Chris Double. ! Copyright (C) 2007 Chris Double.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel sequences strings namespaces math assocs shuffle USING: kernel sequences strings namespaces math assocs shuffle
vectors arrays combinators.lib ; vectors arrays combinators.lib memoize ;
IN: peg IN: peg
TUPLE: parse-result remaining ast ; TUPLE: parse-result remaining ast ;
@ -217,13 +217,13 @@ M: delay-parser (parse) ( state parser -- result )
PRIVATE> PRIVATE>
: token ( string -- parser ) MEMO: token ( string -- parser )
token-parser construct-boa init-parser ; token-parser construct-boa init-parser ;
: satisfy ( quot -- parser ) : satisfy ( quot -- parser )
satisfy-parser construct-boa init-parser ; satisfy-parser construct-boa init-parser ;
: range ( min max -- parser ) MEMO: range ( min max -- parser )
range-parser construct-boa init-parser ; range-parser construct-boa init-parser ;
: seq ( seq -- parser ) : seq ( seq -- parser )
@ -232,32 +232,32 @@ PRIVATE>
: choice ( seq -- parser ) : choice ( seq -- parser )
choice-parser construct-boa init-parser ; choice-parser construct-boa init-parser ;
: repeat0 ( parser -- parser ) MEMO: repeat0 ( parser -- parser )
repeat0-parser construct-boa init-parser ; repeat0-parser construct-boa init-parser ;
: repeat1 ( parser -- parser ) MEMO: repeat1 ( parser -- parser )
repeat1-parser construct-boa init-parser ; repeat1-parser construct-boa init-parser ;
: optional ( parser -- parser ) MEMO: optional ( parser -- parser )
optional-parser construct-boa init-parser ; optional-parser construct-boa init-parser ;
: ensure ( parser -- parser ) MEMO: ensure ( parser -- parser )
ensure-parser construct-boa init-parser ; ensure-parser construct-boa init-parser ;
: ensure-not ( parser -- parser ) MEMO: ensure-not ( parser -- parser )
ensure-not-parser construct-boa init-parser ; ensure-not-parser construct-boa init-parser ;
: action ( parser quot -- parser ) : action ( parser quot -- parser )
action-parser construct-boa init-parser ; action-parser construct-boa init-parser ;
: sp ( parser -- parser ) MEMO: sp ( parser -- parser )
sp-parser construct-boa init-parser ; sp-parser construct-boa init-parser ;
: hide ( parser -- parser ) MEMO: hide ( parser -- parser )
[ drop ignore ] action ; [ drop ignore ] action ;
: delay ( parser -- parser ) MEMO: delay ( parser -- parser )
delay-parser construct-boa init-parser ; delay-parser construct-boa init-parser ;
: list-of ( items separator -- parser ) MEMO: list-of ( items separator -- parser )
hide over 2array seq repeat0 [ concat ] action 2array seq [ unclip 1vector swap first append ] action ; hide over 2array seq repeat0 [ concat ] action 2array seq [ unclip 1vector swap first append ] action ;