| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Copyright (C) 2006 Chris Double. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2008-06-03 04:41:36 -04:00
										 |  |  | USING: kernel strings math sequences lists.lazy words | 
					
						
							| 
									
										
										
										
											2008-02-01 19:26:32 -05:00
										 |  |  | math.parser promises parser-combinators unicode.categories ;
 | 
					
						
							| 
									
										
										
										
											2007-12-19 22:48:58 -05:00
										 |  |  | IN: parser-combinators.simple | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : 'digit' ( -- parser )
 | 
					
						
							|  |  |  |   [ digit? ] satisfy [ digit> ] <@ ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : 'integer' ( -- parser )
 | 
					
						
							| 
									
										
										
										
											2015-07-19 21:06:35 -04:00
										 |  |  |   [ digit? ] satisfy <*> [ string>number ] <@ ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : 'string' ( -- parser )
 | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  |   [ CHAR: " = ] satisfy | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |   [ CHAR: " = not ] satisfy <*> &> | 
					
						
							|  |  |  |   [ CHAR: " = ] satisfy <& [ >string ] <@  ;
 | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | : 'bold' ( -- parser )
 | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  |   "*" token | 
					
						
							|  |  |  |   [ CHAR: * = not  ] satisfy <*> [ >string ] <@ &> | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |   "*" token <& ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : 'italic' ( -- parser )
 | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  |   "_" token | 
					
						
							|  |  |  |   [ CHAR: _ = not ] satisfy <*> [ >string ] <@ &> | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |   "_" token <& ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : comma-list ( element -- parser )
 | 
					
						
							| 
									
										
										
										
											2015-06-29 19:43:15 -04:00
										 |  |  |   "," token list-of ;
 |