diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 247d52a19c..39aacd974e 100644 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. USING: kernel sequences strings namespaces math assocs shuffle - vectors arrays combinators.lib ; + vectors arrays combinators.lib memoize ; IN: peg TUPLE: parse-result remaining ast ; @@ -217,13 +217,13 @@ M: delay-parser (parse) ( state parser -- result ) PRIVATE> -: token ( string -- parser ) +MEMO: token ( string -- parser ) token-parser construct-boa init-parser ; : satisfy ( quot -- parser ) satisfy-parser construct-boa init-parser ; -: range ( min max -- parser ) +MEMO: range ( min max -- parser ) range-parser construct-boa init-parser ; : seq ( seq -- parser ) @@ -232,32 +232,32 @@ PRIVATE> : choice ( seq -- parser ) choice-parser construct-boa init-parser ; -: repeat0 ( parser -- parser ) +MEMO: repeat0 ( parser -- parser ) repeat0-parser construct-boa init-parser ; -: repeat1 ( parser -- parser ) +MEMO: repeat1 ( parser -- parser ) repeat1-parser construct-boa init-parser ; -: optional ( parser -- parser ) +MEMO: optional ( parser -- parser ) optional-parser construct-boa init-parser ; -: ensure ( parser -- parser ) +MEMO: ensure ( parser -- parser ) ensure-parser construct-boa init-parser ; -: ensure-not ( parser -- parser ) +MEMO: ensure-not ( parser -- parser ) ensure-not-parser construct-boa init-parser ; : action ( parser quot -- parser ) action-parser construct-boa init-parser ; -: sp ( parser -- parser ) +MEMO: sp ( parser -- parser ) sp-parser construct-boa init-parser ; -: hide ( parser -- parser ) +MEMO: hide ( parser -- parser ) [ drop ignore ] action ; -: delay ( parser -- parser ) +MEMO: delay ( parser -- 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 ;