scanner: reduce memory, increase speed for long commented sections
							parent
							
								
									022cc72740
								
							
						
					
					
						commit
						c891014c77
					
				|  | @ -143,6 +143,7 @@ pub fn (mut s Scanner) set_current_tidx(cidx int) { | ||||||
| 	s.tidx = tidx | 	s.tidx = tidx | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (mut s Scanner) new_token(tok_kind token.Kind, lit string, len int) token.Token { | fn (mut s Scanner) new_token(tok_kind token.Kind, lit string, len int) token.Token { | ||||||
| 	cidx := s.tidx | 	cidx := s.tidx | ||||||
| 	s.tidx++ | 	s.tidx++ | ||||||
|  | @ -156,6 +157,7 @@ fn (mut s Scanner) new_token(tok_kind token.Kind, lit string, len int) token.Tok | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (mut s Scanner) ident_name() string { | fn (mut s Scanner) ident_name() string { | ||||||
| 	start := s.pos | 	start := s.pos | ||||||
| 	s.pos++ | 	s.pos++ | ||||||
|  | @ -531,6 +533,7 @@ fn (mut s Scanner) ident_number() string { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (mut s Scanner) skip_whitespace() { | fn (mut s Scanner) skip_whitespace() { | ||||||
| 	// if s.is_vh { println('vh') return }
 | 	// if s.is_vh { println('vh') return }
 | ||||||
| 	for s.pos < s.text.len && s.text[s.pos].is_space() { | 	for s.pos < s.text.len && s.text[s.pos].is_space() { | ||||||
|  | @ -1046,13 +1049,13 @@ fn (mut s Scanner) text_scan() token.Token { | ||||||
| 				if nextc == `/` { | 				if nextc == `/` { | ||||||
| 					start := s.pos + 1 | 					start := s.pos + 1 | ||||||
| 					s.ignore_line() | 					s.ignore_line() | ||||||
| 					s.line_comment = s.text[start + 1..s.pos] | 					comment_line_end := s.pos | ||||||
| 					mut comment := s.line_comment.trim_space() |  | ||||||
| 					s.pos-- | 					s.pos-- | ||||||
| 					// fix line_nr, \n was read, and the comment is marked
 | 					// fix line_nr, \n was read; the comment is marked on the next line
 | ||||||
| 					// on the next line
 |  | ||||||
| 					s.line_nr-- | 					s.line_nr-- | ||||||
| 					if s.should_parse_comment() { | 					if s.should_parse_comment() { | ||||||
|  | 						s.line_comment = s.text[start + 1..comment_line_end] | ||||||
|  | 						mut comment := s.line_comment.trim_space() | ||||||
| 						// Find out if this comment is on its own line (for vfmt)
 | 						// Find out if this comment is on its own line (for vfmt)
 | ||||||
| 						mut is_separate_line_comment := true | 						mut is_separate_line_comment := true | ||||||
| 						for j := start - 2; j >= 0 && s.text[j] != `\n`; j-- { | 						for j := start - 2; j >= 0 && s.text[j] != `\n`; j-- { | ||||||
|  | @ -1267,6 +1270,7 @@ fn (mut s Scanner) ident_char() string { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (s &Scanner) expect(want string, start_pos int) bool { | fn (s &Scanner) expect(want string, start_pos int) bool { | ||||||
| 	end_pos := start_pos + want.len | 	end_pos := start_pos + want.len | ||||||
| 	if start_pos < 0 || start_pos >= s.text.len { | 	if start_pos < 0 || start_pos >= s.text.len { | ||||||
|  | @ -1306,17 +1310,20 @@ fn (mut s Scanner) debug_tokens() { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (mut s Scanner) ignore_line() { | fn (mut s Scanner) ignore_line() { | ||||||
| 	s.eat_to_end_of_line() | 	s.eat_to_end_of_line() | ||||||
| 	s.inc_line_number() | 	s.inc_line_number() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (mut s Scanner) eat_to_end_of_line() { | fn (mut s Scanner) eat_to_end_of_line() { | ||||||
| 	for s.pos < s.text.len && s.text[s.pos] != `\n` { | 	for s.pos < s.text.len && s.text[s.pos] != `\n` { | ||||||
| 		s.pos++ | 		s.pos++ | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | [inline] | ||||||
| fn (mut s Scanner) inc_line_number() { | fn (mut s Scanner) inc_line_number() { | ||||||
| 	s.last_nl_pos = s.pos | 	s.last_nl_pos = s.pos | ||||||
| 	s.line_nr++ | 	s.line_nr++ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue