555 lines
15 KiB
Factor
555 lines
15 KiB
Factor
! Copyright (C) 2007 Chris Double.
|
||
! See http://factorcode.org/license.txt for BSD license.
|
||
USING: kernel words arrays strings math.parser
|
||
sequences quotations vectors namespaces make math assocs
|
||
continuations peg peg.parsers unicode.categories multiline
|
||
splitting accessors effects sequences.deep peg.search
|
||
combinators.short-circuit lexer io.streams.string stack-checker
|
||
io combinators parser summary ;
|
||
FROM: compiler.units => with-compilation-unit ;
|
||
FROM: vocabs.parser => search ;
|
||
FROM: peg.search => replace ;
|
||
IN: peg.ebnf
|
||
|
||
: rule ( name word -- parser )
|
||
#! Given an EBNF word produced from EBNF: return the EBNF rule
|
||
"ebnf-parser" word-prop at ;
|
||
|
||
ERROR: no-rule rule parser ;
|
||
|
||
<PRIVATE
|
||
|
||
: lookup-rule ( rule parser -- rule' )
|
||
2dup rule [ 2nip ] [ no-rule ] if* ; |