@@ -23,44 +23,33 @@ contains_null_bytes(const char* str, size_t size)
2323 return memchr (str , 0 , size ) != NULL ;
2424}
2525
26- /* Get next char, updating state; error code goes into tok->done */
2726int
28- _PyLexer_nextc (struct tok_state * tok )
27+ _PyLexer_refill (struct tok_state * tok )
2928{
30- int rc ;
31- for (;;) {
32- if (tok -> cur != tok -> inp ) {
33- if ((unsigned int ) tok -> col_offset >= (unsigned int ) INT_MAX ) {
34- tok -> done = E_COLUMNOVERFLOW ;
35- return EOF ;
36- }
37- tok -> col_offset ++ ;
38- return Py_CHARMASK (tok -> source .bytes [tok -> cur ++ - tok -> source .base_offset ]); /* Fast path */
39- }
40- if (tok -> done != E_OK ) {
41- return EOF ;
42- }
43- rc = _PyTok_ReaderUnderflow (tok );
29+ if (tok -> done != E_OK ) {
30+ return 0 ;
31+ }
32+ int rc = _PyTok_ReaderUnderflow (tok );
4433#if defined(Py_DEBUG )
45- if (tok -> debug ) {
46- fprintf (stderr , "line[%d] = " , tok -> lineno );
47- _PyTokenizer_print_escape (stderr , _PyLexer_BufferPointer (tok , tok -> cur ), tok -> inp - tok -> cur );
48- fprintf (stderr , " tok->done = %d\n" , tok -> done );
49- }
34+ if (tok -> debug ) {
35+ fprintf (stderr , "line[%d] = " , tok -> lineno );
36+ _PyTokenizer_print_escape (stderr , _PyLexer_BufferPointer (tok , tok -> cur ),
37+ tok -> inp - tok -> cur );
38+ fprintf (stderr , " tok->done = %d\n" , tok -> done );
39+ }
5040#endif
51- if (!rc ) {
52- tok -> cur = tok -> inp ;
53- return EOF ;
54- }
55- tok -> line_start = tok -> cur ;
56-
57- if (contains_null_bytes (_PyLexer_BufferPointer (tok , tok -> line_start ), tok -> inp - tok -> line_start )) {
58- _PyTokenizer_syntaxerror (tok , "source code cannot contain null bytes" );
59- tok -> cur = tok -> inp ;
60- return EOF ;
61- }
41+ if (!rc ) {
42+ tok -> cur = tok -> inp ;
43+ return 0 ;
6244 }
63- Py_UNREACHABLE ();
45+ tok -> line_start = tok -> cur ;
46+ if (contains_null_bytes (_PyLexer_BufferPointer (tok , tok -> line_start ),
47+ tok -> inp - tok -> line_start )) {
48+ _PyTokenizer_syntaxerror (tok , "source code cannot contain null bytes" );
49+ tok -> cur = tok -> inp ;
50+ return 0 ;
51+ }
52+ return 1 ;
6453}
6554
6655/* Back-up one character */
0 commit comments