Add dump_tokens.py
This commit is contained in:
		
							parent
							
								
									9e68c529bf
								
							
						
					
					
						commit
						5c02a9f858
					
				
							
								
								
									
										10
									
								
								dump_tokens.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								dump_tokens.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | import sys | ||||||
|  | 
 | ||||||
|  | from ppp_lexer import Lexer | ||||||
|  | from ppp_tokens import EofToken | ||||||
|  | 
 | ||||||
|  | _program, file_path = sys.argv | ||||||
|  | 
 | ||||||
|  | lexer = Lexer.from_file(file_path) | ||||||
|  | 
 | ||||||
|  | while not lexer.check_token(EofToken()): print(lexer.next_token()) | ||||||
| @ -60,9 +60,9 @@ class Lexer: | |||||||
| 						return self._token(loc, word, IdentifierToken(word)) | 						return self._token(loc, word, IdentifierToken(word)) | ||||||
| 			case '"': | 			case '"': | ||||||
| 				# TODO: Proper escaping | 				# TODO: Proper escaping | ||||||
|  | 				loc = self._loc() | ||||||
| 				self._advance() | 				self._advance() | ||||||
| 				start_location = self._location | 				start_location = self._location | ||||||
| 				loc = self._loc() |  | ||||||
| 				escaping = False | 				escaping = False | ||||||
| 				while self._location < len(self._source) and (self._source[self._location] != '"' or escaping): | 				while self._location < len(self._source) and (self._source[self._location] != '"' or escaping): | ||||||
| 					escaping = self._source[self._location] == '\\' if not escaping else False | 					escaping = self._source[self._location] == '\\' if not escaping else False | ||||||
|  | |||||||
| @ -106,3 +106,6 @@ class Token: | |||||||
| 	loc: Location | 	loc: Location | ||||||
| 	value: str | 	value: str | ||||||
| 	contents: TokenContents | 	contents: TokenContents | ||||||
|  | 
 | ||||||
|  | 	def __repr__(self) -> str: | ||||||
|  | 		return f"{self.loc}: {self.contents}" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user