Compare commits
	
		
			15 Commits
		
	
	
		
			gun_picker
			...
			level_pars
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						b91ebeb775
	
				 | 
					
					
						|||
| 
						
						
							
						
						ab687f8f6d
	
				 | 
					
					
						|||
| 
						
						
							
						
						bef95df6a1
	
				 | 
					
					
						|||
| 
						
						
							
						
						24435a3c15
	
				 | 
					
					
						|||
| 
						
						
							
						
						0c3a36f1fd
	
				 | 
					
					
						|||
| 
						
						
							
						
						a39c419e5f
	
				 | 
					
					
						|||
| 
						
						
							
						
						9ef762268f
	
				 | 
					
					
						|||
| 
						
						
							
						
						e50f516b11
	
				 | 
					
					
						|||
| 
						
						
							
						
						f9e28fa0e2
	
				 | 
					
					
						|||
| 
						
						
							
						
						38a054dec1
	
				 | 
					
					
						|||
| 
						
						
							
						
						fd391ff3bc
	
				 | 
					
					
						|||
| 
						
						
							
						
						fbd9f97429
	
				 | 
					
					
						|||
| 
						
						
							
						
						2a61e8b5d6
	
				 | 
					
					
						|||
| 
						
						
							
						
						4ccbe1dc35
	
				 | 
					
					
						|||
| 
						
						
							
						
						b536d2c987
	
				 | 
					
					
						
							
								
								
									
										61
									
								
								the_parser.p8
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								the_parser.p8
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					pico-8 cartridge // http://www.pico-8.com
 | 
				
			||||||
 | 
					version 41
 | 
				
			||||||
 | 
					__lua__
 | 
				
			||||||
 | 
					-- the parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					parser = {}
 | 
				
			||||||
 | 
					mknew(parser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- calls parse_into with a nop
 | 
				
			||||||
 | 
					-- emit function.
 | 
				
			||||||
 | 
					function parser:parse(str)
 | 
				
			||||||
 | 
					 self:parse_into(str, function() end)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- read a file of commands and
 | 
				
			||||||
 | 
					-- execute them, emitting the
 | 
				
			||||||
 | 
					-- results from each call into
 | 
				
			||||||
 | 
					-- `emit` as a table per row.
 | 
				
			||||||
 | 
					--
 | 
				
			||||||
 | 
					-- a "command" is a method on
 | 
				
			||||||
 | 
					-- self. a row alternates
 | 
				
			||||||
 | 
					-- commands with args. when
 | 
				
			||||||
 | 
					-- calling a command, it also
 | 
				
			||||||
 | 
					-- gets a table of previous
 | 
				
			||||||
 | 
					-- results as the first arg.
 | 
				
			||||||
 | 
					-- args are split on ','.
 | 
				
			||||||
 | 
					function parser:parse_into(str, emit)
 | 
				
			||||||
 | 
					 for row in all(split(str, "\n")) do
 | 
				
			||||||
 | 
					  local prev = {}
 | 
				
			||||||
 | 
					  local sectors = split(row, ":")
 | 
				
			||||||
 | 
					  for i=1,#sectors,2 do
 | 
				
			||||||
 | 
					   local x = self[sectors[i]](self, prev, usplit(sectors[i+1]))
 | 
				
			||||||
 | 
					   if (x) add(prev, x)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  emit(prev)
 | 
				
			||||||
 | 
					 end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- saves prev[sel] as self.name.
 | 
				
			||||||
 | 
					-- if sel is unspecified, saves
 | 
				
			||||||
 | 
					-- all of prev (as a table).
 | 
				
			||||||
 | 
					function parser:saveas(prev, name, sel)
 | 
				
			||||||
 | 
					 self[name] = sel and prev[sel] or prev
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-- returns its args, ignoring
 | 
				
			||||||
 | 
					-- prev. Used to stuff things
 | 
				
			||||||
 | 
					-- into prev. args are packed
 | 
				
			||||||
 | 
					-- if there's multiple.
 | 
				
			||||||
 | 
					function parser:val(_, ...)
 | 
				
			||||||
 | 
					 local ret := pack(...)
 | 
				
			||||||
 | 
					 if (#ret == 1) return ret[1]
 | 
				
			||||||
 | 
					 return ret
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function parser:bind(_, fn, ...)
 | 
				
			||||||
 | 
					 local f = self[fn]
 | 
				
			||||||
 | 
					 return function()
 | 
				
			||||||
 | 
					  f(...)
 | 
				
			||||||
 | 
					 end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										1133
									
								
								updatedshmup.p8
									
									
									
									
									
								
							
							
						
						
									
										1133
									
								
								updatedshmup.p8
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user