@@ -277,263 +277,3 @@ def match_operator(self):
277277 return token
278278 return None
279279
280- def match_punctuation (self ):
281- for op in sorted (self .PUNCTUATION , key = len , reverse = True ):
282- if self .source_code .startswith (op , self .position ):
283- token = Token (TokenType .PUNCTUATION , op , self .line , self .column )
284- self .position += len (op )
285- self .column += len (op )
286- return token
287- return None
288-
289- def match_number (self ):
290- match = self .NUMBER_PATTERN .match (self .source_code , self .position )
291- if match :
292- number = match .group (0 )
293- self .position += len (number )
294- self .column += len (number )
295- return Token (TokenType .NUMBER , number , self .line , self .column )
296- return None
297-
298- def match_identifier (self ):
299- match = self .IDENTIFIER_PATTERN .match (self .source_code , self .position )
300- if match :
301- identifier = match .group (0 )
302- self .position += len (identifier )
303- self .column += len (identifier )
304- token_type = TokenType .KEYWORD if identifier in self .KEYWORDS else TokenType .IDENTIFIER
305- return Token (token_type , identifier , self .line , self .column )
306- return None
307-
308- def match_keyword (self ):
309- match = self .KEYWORD_PATTERN .match (self .source_code , self .position )
310- if match :
311- keyword = match .group (0 )
312- self .position += len (keyword )
313- self .column += len (keyword )
314- return Token (TokenType .KEYWORD , keyword , self .line , self .column )
315- return None
316-
317- def match_string (self ):
318- match = self .STRING_PATTERN .match (self .source_code , self .position )
319- if match :
320- string = match .group (0 )
321- self .position += len (string )
322- self .column += len (string )
323- return Token (TokenType .STRING , string , self .line , self .column )
324- return None
325-
326- def match_comment (self ):
327- match = self .COMMENT_PATTERN .match (self .source_code , self .position )
328- if match :
329- comment = match .group (0 )
330- self .position += len (comment )
331- self .column += len (comment )
332- return Token (TokenType .COMMENT , comment , self .line , self .column )
333- return None
334-
335- def match_whitespace (self ):
336- match = self .WHITESPACE_PATTERN .match (self .source_code , self .position )
337- if match :
338- whitespace = match .group (0 )
339- self .position += len (whitespace )
340- self .column += len (whitespace )
341- return Token (TokenType .WHITESPACE , whitespace , self .line , self .column )
342- return None
343-
344- def match_newline (self ):
345- match = self .NEWLINE_PATTERN .match (self .source_code , self .position )
346- if match :
347- newline = match .group (0 )
348- self .position += len (newline )
349- self .line += 1
350- self .column = 1
351- self .current_line_start = self .position
352- return Token (TokenType .NEWLINE , newline , self .line , self .column )
353- return None
354-
355- def match_error (self ):
356- error_char = self .source_code [self .position ]
357- self .position += 1
358- self .column += 1
359- return Token (TokenType .ERROR , error_char , self .line , self .column )
360-
361- def match_eof (self ):
362- return Token (TokenType .EOF , "" , self .line , self .column )
363-
364- def match_any (self ):
365- match = self .ANY_PATTERN .match (self .source_code , self .position )
366- if match :
367- any = match .group (0 )
368- self .position += len (any )
369- self .column += len (any )
370- return Token (TokenType .ANY , any , self .line , self .column )
371- return None
372-
373- def match_all (self ):
374- match = self .ALL_PATTERN .match (self .source_code , self .position )
375- if match :
376- all = match .group (0 )
377- self .position += len (all )
378- self .column += len (all )
379- return Token (TokenType .ALL , all , self .line , self .column )
380- return None
381-
382- def match_none (self ):
383- match = self .NONE_PATTERN .match (self .source_code , self .position )
384- if match :
385- none = match .group (0 )
386- self .position += len (none )
387- self .column += len (none )
388- return Token (TokenType .NONE , none , self .line , self .column )
389- return None
390-
391- def match_true (self ):
392- match = self .TRUE_PATTERN .match (self .source_code , self .position )
393- if match :
394- true = match .group (0 )
395- self .position += len (true )
396- self .column += len (true )
397- return Token (TokenType .TRUE , true , self .line , self .column )
398- return None
399-
400- def match_false (self ):
401- match = self .FALSE_PATTERN .match (self .source_code , self .position )
402- if match :
403- false = match .group (0 )
404- self .position += len (false )
405- self .column += len (false )
406- return Token (TokenType .FALSE , false , self .line , self .column )
407- return None
408-
409- def match_null (self ):
410- match = self .NULL_PATTERN .match (self .source_code , self .position )
411- if match :
412- null = match .group (0 )
413- self .position += len (null )
414- self .column += len (null )
415- return Token (TokenType .NULL , null , self .line , self .column )
416- return None
417-
418- def match_undefined (self ):
419- match = self .UNDEFINED_PATTERN .match (self .source_code , self .position )
420- if match :
421- undefined = match .group (0 )
422- self .position += len (undefined )
423- self .column += len (undefined )
424- return Token (TokenType .UNDEFINED , undefined , self .line , self .column )
425- return None
426-
427- def match_nan (self ):
428- match = self .NAN_PATTERN .match (self .source_code , self .position )
429- if match :
430- nan = match .group (0 )
431- self .position += len (nan )
432- self .column += len (nan )
433- return Token (TokenType .NAN , nan , self .line , self .column )
434- return None
435-
436- def match_infinity (self ):
437- match = self .INFINITY_PATTERN .match (self .source_code , self .position )
438- if match :
439- infinity = match .group (0 )
440- self .position += len (infinity )
441- self .column += len (infinity )
442- return Token (TokenType .INFINITY , infinity , self .line , self .column )
443- return None
444-
445- def match_number (self ):
446- match = self .NUMBER_PATTERN .match (self .source_code , self .position )
447- if match :
448- number = match .group (0 )
449- self .position += len (number )
450- self .column += len (number )
451- return Token (TokenType .NUMBER , number , self .line , self .column )
452- return None
453-
454- def match_identifier (self ):
455- match = self .IDENTIFIER_PATTERN .match (self .source_code , self .position )
456- if match :
457- identifier = match .group (0 )
458- self .position += len (identifier )
459- self .column += len (identifier )
460- token_type = TokenType .KEYWORD if identifier in self .KEYWORDS else TokenType .IDENTIFIER
461- return Token (token_type , identifier , self .line , self .column )
462- return None
463-
464- def match_string (self ):
465- match = self .STRING_PATTERN .match (self .source_code , self .position )
466- if match :
467- string = match .group (0 )
468- self .position += len (string )
469- self .column += len (string )
470- return Token (TokenType .STRING , string , self .line , self .column )
471- return None
472-
473- def match_regex (self ):
474- match = self .REGEX_PATTERN .match (self .source_code , self .position )
475- if match :
476- regex = match .group (0 )
477- self .position += len (regex )
478- self .column += len (regex )
479- return Token (TokenType .REGEX , regex , self .line , self .column )
480- return None
481-
482- def match_comment (self ):
483- match = self .COMMENT_PATTERN .match (self .source_code , self .position )
484- if match :
485- comment = match .group (0 )
486- self .position += len (comment )
487- self .column += len (comment )
488- return Token (TokenType .COMMENT , comment , self .line , self .column )
489- return None
490-
491- def match_whitespace (self ):
492- match = self .WHITESPACE_PATTERN .match (self .source_code , self .position )
493- if match :
494- whitespace = match .group (0 )
495- self .position += len (whitespace )
496- self .column += len (whitespace )
497- return Token (TokenType .WHITESPACE , whitespace , self .line , self .column )
498- return None
499-
500- def match_newline (self ):
501- match = self .NEWLINE_PATTERN .match (self .source_code , self .position )
502- if match :
503- newline = match .group (0 )
504- self .position += len (newline )
505- self .line += 1
506- self .column = 1
507- self .current_line_start = self .position
508- return Token (TokenType .NEWLINE , newline , self .line , self .column )
509- return None
510-
511- def match_error (self ):
512- error_char = self .source_code [self .position ]
513- self .position += 1
514- self .column += 1
515- return Token (TokenType .ERROR , error_char , self .line , self .column )
516-
517- def match_eof (self ):
518- if self .position >= len (self .source_code ):
519- return Token (TokenType .EOF , '' , self .line , self .column )
520- return None
521-
522- def match_all (self ):
523- match = self .ALL_PATTERN .match (self .source_code , self .position )
524- if match :
525- all = match .group (0 )
526- self .position += len (all )
527- self .column += len (all )
528- return Token (TokenType .ALL , all , self .line , self .column )
529- return None
530-
531- def match_none (self ):
532- match = self .NONE_PATTERN .match (self .source_code , self .position )
533- if match :
534- none = match .group (0 )
535- self .position += len (none )
536- self .column += len (none )
537- return Token (TokenType .NONE , none , self .line , self .column )
538- return None
539-
0 commit comments