5252import com .oracle .graal .python .pegparser .sst .KeywordTy ;
5353import com .oracle .graal .python .pegparser .sst .SSTNode ;
5454import com .oracle .graal .python .pegparser .sst .StmtTy ;
55+ import com .oracle .graal .python .pegparser .tokenizer .SourceRange ;
5556import com .oracle .graal .python .pegparser .tokenizer .Token ;
5657
5758/**
@@ -170,7 +171,7 @@ private void resetParserState() {
170171
171172 /**
172173 * Get position in the tokenizer.
173- *
174+ *
174175 * @return the position in tokenizer.
175176 */
176177 public int mark () {
@@ -179,7 +180,7 @@ public int mark() {
179180
180181 /**
181182 * Reset position in the tokenizer
182- *
183+ *
183184 * @param position where the tokenizer should set the current position
184185 */
185186 public void reset (int position ) {
@@ -189,7 +190,7 @@ public void reset(int position) {
189190 /**
190191 * Is the expected token on the current position in tokenizer? If there is the expected token,
191192 * then the current position in tokenizer is changed to the next token.
192- *
193+ *
193194 * @param tokenKind - the token kind that is expected on the current position
194195 * @return The expected token or null if the token on the current position is not the expected
195196 * one.
@@ -205,7 +206,7 @@ public Token expect(int tokenKind) {
205206 /**
206207 * Is the expected token on the current position in tokenizer? If there is the expected token,
207208 * then the current position in tokenizer is changed to the next token.
208- *
209+ *
209210 * @param text - the token on the current position has to have this text
210211 * @return The expected token or null if the token on the current position is not the expected
211212 * one.
@@ -258,7 +259,7 @@ public Token getAndInitializeToken() {
258259 Token token = tokenizer .getToken ();
259260 while (token .type == Token .Kind .TYPE_IGNORE ) {
260261 String tag = getText (token );
261- comments .put (token .startLine , tag );
262+ comments .put (token .sourceRange . startLine , tag );
262263 pos ++;
263264 token = tokenizer .getToken ();
264265 }
@@ -288,14 +289,14 @@ public Token getLastNonWhitespaceToken() {
288289 public ExprTy .Name name_token () {
289290 Token t = expect (Token .Kind .NAME );
290291 if (t != null ) {
291- return factory .createVariable (getText (t ), t .startOffset , t . endOffset );
292+ return factory .createVariable (getText (t ), t .sourceRange );
292293 } else {
293294 return null ;
294295 }
295296 }
296297
297298 /**
298- *
299+ *
299300 * @return flags that influence parsing.
300301 */
301302 public int getFlags () {
@@ -325,7 +326,7 @@ protected ExprTy.Name expect_SOFT_KEYWORD(String keyword) {
325326 Token t = tokenizer .peekToken ();
326327 if (t .type == Token .Kind .NAME && getText (t ).equals (keyword )) {
327328 tokenizer .getToken ();
328- return factory .createVariable (getText (t ), t .startOffset , t . endOffset );
329+ return factory .createVariable (getText (t ), t .sourceRange );
329330 }
330331 return null ;
331332 }
@@ -350,7 +351,7 @@ public Token string_token() {
350351 public ExprTy number_token () {
351352 Token t = expect (Token .Kind .NUMBER );
352353 if (t != null ) {
353- return factory .createNumber (getText (t ), t .startOffset , t . endOffset );
354+ return factory .createNumber (getText (t ), t .sourceRange );
354355 } else {
355356 return null ;
356357 }
@@ -374,7 +375,7 @@ public ExprTy.Name name_from_token(Token t) {
374375 return null ;
375376 }
376377 String id = getText (t );
377- return factory .createVariable (id , t .startOffset , t . endOffset );
378+ return factory .createVariable (id , t .sourceRange );
378379 }
379380
380381 /**
@@ -401,7 +402,7 @@ public ExprTy.Name dummyName(@SuppressWarnings("unused") Object... args) {
401402 if (cachedDummyName != null ) {
402403 return cachedDummyName ;
403404 }
404- cachedDummyName = factory .createVariable ("" , 0 , 0 );
405+ cachedDummyName = factory .createVariable ("" , new SourceRange ( 0 , 0 , 0 , 0 , 0 , 0 ) );
405406 return cachedDummyName ;
406407 }
407408
@@ -410,7 +411,7 @@ public ExprTy.Name dummyName(@SuppressWarnings("unused") Object... args) {
410411 */
411412 public SSTNode joinNamesWithDot (ExprTy a , ExprTy b ) {
412413 String id = ((ExprTy .Name ) a ).id + "." + ((ExprTy .Name ) b ).id ;
413- return factory .createVariable (id , a .getStartOffset (), b . getEndOffset ( ));
414+ return factory .createVariable (id , a .getSourceRange (). withEnd ( b . getSourceRange () ));
414415 }
415416
416417 /**
@@ -460,23 +461,21 @@ public ExprTy[] appendToEnd(ExprTy[] seq, ExprTy element) {
460461 public SSTNode concatenateStrings (Token [] tokens ) {
461462 int n = tokens .length ;
462463 String [] values = new String [n ];
463- Token t = tokens [0 ];
464- int startOffset = t .startOffset ;
465- values [0 ] = getText (t );
466- for (int i = 1 ; i < n ; i ++) {
467- t = tokens [i ];
464+ SourceRange [] sourceRanges = new SourceRange [n ];
465+ for (int i = 0 ; i < n ; i ++) {
466+ Token t = tokens [i ];
468467 values [i ] = getText (t );
468+ sourceRanges [i ] = t .sourceRange ;
469469 }
470- int endOffset = t .endOffset ;
471- return factory .createString (values , startOffset , endOffset , fexprParser , errorCb );
470+ return factory .createString (values , sourceRanges , fexprParser , errorCb );
472471 }
473472
474473 /**
475474 * _PyPegen_check_barry_as_flufl
476475 */
477476 public boolean checkBarryAsFlufl (Token token ) {
478477 if ((flags & PARSE_BARRY_AS_BDFL ) != 0 && !getText (token ).equals ("<>" )) {
479- errorCb .onError (token .startOffset , token . endOffset , BARRY_AS_BDFL );
478+ errorCb .onError (token .sourceRange , BARRY_AS_BDFL );
480479 return true ;
481480 }
482481 return false ;
@@ -762,9 +761,9 @@ static String[] extractNames(ExprTy[] seq) {
762761 /**
763762 * _PyPegen_collect_call_seqs
764763 */
765- final ExprTy collectCallSequences (ExprTy [] a , KeywordOrStarred [] b , int startOffset , int endOffset ) {
764+ final ExprTy collectCallSequences (ExprTy [] a , KeywordOrStarred [] b , SourceRange sourceRange ) {
766765 if (b == null ) {
767- return factory .createCall (dummyName (), a , EMPTY_KWDS , startOffset , endOffset );
766+ return factory .createCall (dummyName (), a , EMPTY_KWDS , sourceRange );
768767 } else {
769768 ExprTy [] starred = extractStarredExpressions (b );
770769 ExprTy [] args ;
@@ -774,7 +773,7 @@ final ExprTy collectCallSequences(ExprTy[] a, KeywordOrStarred[] b, int startOff
774773 } else {
775774 args = a ;
776775 }
777- return factory .createCall (dummyName (), args , deleteStarredExpressions (b ), startOffset , endOffset );
776+ return factory .createCall (dummyName (), args , deleteStarredExpressions (b ), sourceRange );
778777 }
779778 }
780779
@@ -844,7 +843,7 @@ SSTNode raiseSyntaxErrorInvalidTarget(TargetsType type, ExprTy expr) {
844843 SSTNode raiseSyntaxError (String msg , Object ... arguments ) {
845844 errorIndicator = true ;
846845 Token errorToken = tokenizer .peekToken ();
847- errorCb .onError (ParserErrorCallback .ErrorType .Syntax , errorToken .startOffset , errorToken . endOffset , msg , arguments );
846+ errorCb .onError (ParserErrorCallback .ErrorType .Syntax , errorToken .sourceRange , msg , arguments );
848847 return null ;
849848 }
850849
@@ -853,7 +852,7 @@ SSTNode raiseSyntaxError(String msg, Object... arguments) {
853852 */
854853 SSTNode raiseSyntaxErrorKnownLocation (Token errorToken , String msg , Object ... argument ) {
855854 errorIndicator = true ;
856- errorCb .onError (ParserErrorCallback .ErrorType .Syntax , errorToken .startOffset , errorToken . endOffset , msg , argument );
855+ errorCb .onError (ParserErrorCallback .ErrorType .Syntax , errorToken .sourceRange , msg , argument );
857856 return null ;
858857 }
859858
@@ -862,7 +861,7 @@ SSTNode raiseSyntaxErrorKnownLocation(Token errorToken, String msg, Object... ar
862861 */
863862 SSTNode raiseSyntaxErrorKnownLocation (SSTNode where , String msg , Object ... argument ) {
864863 errorIndicator = true ;
865- errorCb .onError (ParserErrorCallback .ErrorType .Syntax , where .getStartOffset (), where . getEndOffset (), msg , argument );
864+ errorCb .onError (ParserErrorCallback .ErrorType .Syntax , where .getSourceRange (), msg , argument );
866865 return null ;
867866 }
868867
@@ -871,7 +870,7 @@ SSTNode raiseSyntaxErrorKnownLocation(SSTNode where, String msg, Object... argum
871870 */
872871 SSTNode raiseErrorKnownLocation (ParserErrorCallback .ErrorType typeError , SSTNode where , String msg , Object ... argument ) {
873872 errorIndicator = true ;
874- errorCb .onError (typeError , where .getStartOffset (), where . getEndOffset (), msg , argument );
873+ errorCb .onError (typeError , where .getSourceRange (), msg , argument );
875874 return null ;
876875 }
877876
0 commit comments