feat(wpcarro/simple-select): Define Parser class
Copy-paste from monorepo. Change-Id: Iff51fa9b939fe7dec3952077b5764bcc45d96f24 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5339 Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: wpcarro <wpcarro@gmail.com> Tested-by: BuildkiteCI
This commit is contained in:
		
							parent
							
								
									88a3051ae5
								
							
						
					
					
						commit
						b5f78e433c
					
				
					 1 changed files with 28 additions and 0 deletions
				
			
		
							
								
								
									
										28
									
								
								users/wpcarro/scratch/simple-select/parser.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								users/wpcarro/scratch/simple-select/parser.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| class Parser(object): | ||||
|     def __init__(self, tokens): | ||||
|         self.tokens = tokens | ||||
|         self.i = 0 | ||||
| 
 | ||||
|     def prev(self): | ||||
|         return self.tokens[self.i - 1] | ||||
| 
 | ||||
|     def curr(self): | ||||
|         return self.tokens[self.i] | ||||
| 
 | ||||
|     def consume(self): | ||||
|         if not self.exhausted(): | ||||
|             self.i += 1 | ||||
|             return self.prev() | ||||
| 
 | ||||
|     def match(self, xs): | ||||
|         if not self.exhausted() and self.curr() in xs: | ||||
|             self.consume() | ||||
|             return True | ||||
|         return False | ||||
| 
 | ||||
|     def expect(self, xs): | ||||
|         if not self.match(xs): | ||||
|             raise Exception("Expected token \"{}\" but received \"{}\"".format(xs, self.curr())) | ||||
| 
 | ||||
|     def exhausted(self): | ||||
|         return self.i >= len(self.tokens) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue