add action parser
							parent
							
								
									2a464ea2c6
								
							
						
					
					
						commit
						167f2d716d
					
				| 
						 | 
					@ -136,4 +136,16 @@ IN: temporary
 | 
				
			||||||
  "a++b" 0 <parse-state>
 | 
					  "a++b" 0 <parse-state>
 | 
				
			||||||
  "a" token "+" token "++" token 2array choice "b" token 3array seq
 | 
					  "a" token "+" token "++" token 2array choice "b" token 3array seq
 | 
				
			||||||
  parse [ t ] [ f ] if
 | 
					  parse [ t ] [ f ] if
 | 
				
			||||||
 | 
					] unit-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{ 1 } [
 | 
				
			||||||
 | 
					  "a" 0 <parse-state> "a" token [ drop 1 ] action parse parse-result-ast 
 | 
				
			||||||
 | 
					] unit-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{ V{ 1 1 } } [
 | 
				
			||||||
 | 
					  "aa" 0 <parse-state> "a" token [ drop 1 ] action dup 2array seq parse parse-result-ast 
 | 
				
			||||||
 | 
					] unit-test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{ f } [
 | 
				
			||||||
 | 
					  "b" 0 <parse-state> "a" token [ drop 1 ] action parse 
 | 
				
			||||||
] unit-test
 | 
					] unit-test
 | 
				
			||||||
| 
						 | 
					@ -174,3 +174,16 @@ M: ensure-not-parser parse ( state parser -- result )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
: ensure-not ( parser -- parser )
 | 
					: ensure-not ( parser -- parser )
 | 
				
			||||||
  ensure-not-parser construct-boa init-parser ;
 | 
					  ensure-not-parser construct-boa init-parser ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TUPLE: action-parser p1 quot ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					M: action-parser parse ( state parser -- result )
 | 
				
			||||||
 | 
					   tuck action-parser-p1 parse dup [ 
 | 
				
			||||||
 | 
					     dup parse-result-ast rot action-parser-quot call
 | 
				
			||||||
 | 
					     swap [ set-parse-result-ast ] keep
 | 
				
			||||||
 | 
					   ] [
 | 
				
			||||||
 | 
					     nip
 | 
				
			||||||
 | 
					   ] if ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					: action ( parser quot -- parser )
 | 
				
			||||||
 | 
					  action-parser construct-boa init-parser ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue