| 
									
										
										
										
											2009-02-11 14:56:09 -05:00
										 |  |  | ! Copyright (C) 2009 Philipp Brüschweiler | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2009-02-07 19:03:35 -05:00
										 |  |  | USING: infix.ast kernel peg peg.ebnf math.parser sequences | 
					
						
							|  |  |  | strings ;
 | 
					
						
							|  |  |  | IN: infix.tokenizer | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EBNF: tokenize-infix | 
					
						
							|  |  |  | Letter            = [a-zA-Z] | 
					
						
							|  |  |  | Digit             = [0-9] | 
					
						
							|  |  |  | Digits            = Digit+ | 
					
						
							|  |  |  | Number            =   Digits '.' Digits => [[ concat >string string>number ast-number boa ]] | 
					
						
							|  |  |  |                     | Digits => [[ >string string>number ast-number boa ]] | 
					
						
							|  |  |  | Space             = " " | "\n" | "\r" | "\t" | 
					
						
							|  |  |  | Spaces            = Space* => [[ ignore ]] | 
					
						
							|  |  |  | NameFirst         = Letter | "_" => [[ CHAR: _ ]] | 
					
						
							|  |  |  | NameRest          = NameFirst | Digit | 
					
						
							|  |  |  | Name              = NameFirst NameRest* => [[ first2 swap prefix >string ]] | 
					
						
							|  |  |  | Special           =   [+*/%(),] | "-" => [[ CHAR: - ]] | 
					
						
							|  |  |  |                     | "[" => [[ CHAR: [ ]] | "]" => [[ CHAR: ] ]] | 
					
						
							|  |  |  | Tok               = Spaces (Name | Number | Special ) | 
					
						
							|  |  |  | End               = !(.) | 
					
						
							|  |  |  | Toks              = Tok* Spaces End | 
					
						
							|  |  |  | ;EBNF |