Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / extra / parser-combinators / simple / simple.factor
blobf7a696ca35cd1ac269d324d7f2cefc8f2e9b494b
1 ! Copyright (C) 2006 Chris Double.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel strings math sequences lists.lazy words
4 math.parser promises parser-combinators unicode.categories ;
5 IN: parser-combinators.simple
7 : 'digit' ( -- parser )
8   [ digit? ] satisfy [ digit> ] <@ ;
10 : 'integer' ( -- parser )
11   'digit' <!+> [ 10 digits>integer ] <@ ;
13 : 'string' ( -- parser )
14   [ CHAR: " = ] satisfy 
15   [ CHAR: " = not ] satisfy <*> &>
16   [ CHAR: " = ] satisfy <& [ >string ] <@  ;
17   
18 : 'bold' ( -- parser )
19   "*" token 
20   [ CHAR: * = not  ] satisfy <*> [ >string ] <@ &> 
21   "*" token <& ;
23 : 'italic' ( -- parser )
24   "_" token 
25   [ CHAR: _ = not ] satisfy <*> [ >string ] <@ &> 
26   "_" token <& ;
28 : comma-list ( element -- parser )
29   "," token list-of ;