@@ -854,96 +854,6 @@ _PyPegen_seq_delete_starred_exprs(Parser *p, asdl_seq *kwargs)
854
854
return new_seq ;
855
855
}
856
856
857
- expr_ty
858
- _PyPegen_concatenate_strings (Parser * p , asdl_seq * strings )
859
- {
860
- Py_ssize_t len = asdl_seq_LEN (strings );
861
- assert (len > 0 );
862
-
863
- Token * first = asdl_seq_GET_UNTYPED (strings , 0 );
864
- Token * last = asdl_seq_GET_UNTYPED (strings , len - 1 );
865
-
866
- int bytesmode = 0 ;
867
- PyObject * bytes_str = NULL ;
868
-
869
- FstringParser state ;
870
- _PyPegen_FstringParser_Init (& state );
871
-
872
- for (Py_ssize_t i = 0 ; i < len ; i ++ ) {
873
- Token * t = asdl_seq_GET_UNTYPED (strings , i );
874
-
875
- int this_bytesmode ;
876
- int this_rawmode ;
877
- PyObject * s ;
878
- const char * fstr ;
879
- Py_ssize_t fstrlen = -1 ;
880
-
881
- if (_PyPegen_parsestr (p , & this_bytesmode , & this_rawmode , & s , & fstr , & fstrlen , t ) != 0 ) {
882
- goto error ;
883
- }
884
-
885
- /* Check that we are not mixing bytes with unicode. */
886
- if (i != 0 && bytesmode != this_bytesmode ) {
887
- RAISE_SYNTAX_ERROR ("cannot mix bytes and nonbytes literals" );
888
- Py_XDECREF (s );
889
- goto error ;
890
- }
891
- bytesmode = this_bytesmode ;
892
-
893
- if (fstr != NULL ) {
894
- assert (s == NULL && !bytesmode );
895
-
896
- int result = _PyPegen_FstringParser_ConcatFstring (p , & state , & fstr , fstr + fstrlen ,
897
- this_rawmode , 0 , first , t , last );
898
- if (result < 0 ) {
899
- goto error ;
900
- }
901
- }
902
- else {
903
- /* String or byte string. */
904
- assert (s != NULL && fstr == NULL );
905
- assert (bytesmode ? PyBytes_CheckExact (s ) : PyUnicode_CheckExact (s ));
906
-
907
- if (bytesmode ) {
908
- if (i == 0 ) {
909
- bytes_str = s ;
910
- }
911
- else {
912
- PyBytes_ConcatAndDel (& bytes_str , s );
913
- if (!bytes_str ) {
914
- goto error ;
915
- }
916
- }
917
- }
918
- else {
919
- /* This is a regular string. Concatenate it. */
920
- if (_PyPegen_FstringParser_ConcatAndDel (& state , s ) < 0 ) {
921
- goto error ;
922
- }
923
- }
924
- }
925
- }
926
-
927
- if (bytesmode ) {
928
- if (_PyArena_AddPyObject (p -> arena , bytes_str ) < 0 ) {
929
- goto error ;
930
- }
931
- return _PyAST_Constant (bytes_str , NULL , first -> lineno ,
932
- first -> col_offset , last -> end_lineno ,
933
- last -> end_col_offset , p -> arena );
934
- }
935
-
936
- return _PyPegen_FstringParser_Finish (p , & state , first , last );
937
-
938
- error :
939
- Py_XDECREF (bytes_str );
940
- _PyPegen_FstringParser_Dealloc (& state );
941
- if (PyErr_Occurred ()) {
942
- _Pypegen_raise_decode_error (p );
943
- }
944
- return NULL ;
945
- }
946
-
947
857
expr_ty
948
858
_PyPegen_ensure_imaginary (Parser * p , expr_ty exp )
949
859
{
@@ -1325,7 +1235,8 @@ _PyPegen_decode_fstring_part(Parser* p, int is_raw, expr_ty constant) {
1325
1235
len = strlen (bstr );
1326
1236
}
1327
1237
1328
- PyObject * str = _PyPegen_DecodeFstring (p , is_raw , bstr , len , NULL );
1238
+ is_raw = is_raw || strchr (bstr , '\\' ) == NULL ;
1239
+ PyObject * str = _PyPegen_decode_string (p , is_raw , bstr , len , NULL );
1329
1240
if (str == NULL ) {
1330
1241
_Pypegen_raise_decode_error (p );
1331
1242
return NULL ;
@@ -1380,7 +1291,7 @@ unpack_top_level_joined_strs(Parser *p, asdl_expr_seq *raw_expressions)
1380
1291
}
1381
1292
1382
1293
expr_ty
1383
- deal_with_gstring2 (Parser * p , Token * a , asdl_expr_seq * raw_expressions , Token * b ) {
1294
+ _PyPegen_joined_str (Parser * p , Token * a , asdl_expr_seq * raw_expressions , Token * b ) {
1384
1295
asdl_expr_seq * expr = unpack_top_level_joined_strs (p , raw_expressions );
1385
1296
Py_ssize_t n_items = asdl_seq_LEN (expr );
1386
1297
@@ -1411,8 +1322,7 @@ deal_with_gstring2(Parser *p, Token* a, asdl_expr_seq* raw_expressions, Token*b)
1411
1322
p -> arena );
1412
1323
}
1413
1324
1414
- // Hack: remove!
1415
- expr_ty _PyPegen_constant_from_token2 (Parser * p , Token * tok ) {
1325
+ expr_ty _PyPegen_constant_from_token (Parser * p , Token * tok ) {
1416
1326
char * bstr = PyBytes_AsString (tok -> bytes );
1417
1327
if (bstr == NULL ) {
1418
1328
return NULL ;
@@ -1430,18 +1340,13 @@ expr_ty _PyPegen_constant_from_token2(Parser* p, Token* tok) {
1430
1340
p -> arena );
1431
1341
}
1432
1342
1433
- // Hack: remove!
1434
- expr_ty _PyPegen_constant_from_token (Parser * p , Token * tok ) {
1343
+ expr_ty _PyPegen_constant_from_string (Parser * p , Token * tok ) {
1435
1344
char * the_str = PyBytes_AsString (tok -> bytes );
1436
1345
if (the_str == NULL ) {
1437
1346
return NULL ;
1438
1347
}
1439
- int this_bytesmode ;
1440
- int this_rawmode ;
1441
- PyObject * s ;
1442
- const char * fstr ;
1443
- Py_ssize_t fstrlen = -1 ;
1444
- if (_PyPegen_parsestr (p , & this_bytesmode , & this_rawmode , & s , & fstr , & fstrlen , tok ) != 0 ) {
1348
+ PyObject * s = _PyPegen_parse_string (p , tok );
1349
+ if (s == NULL ) {
1445
1350
_Pypegen_raise_decode_error (p );
1446
1351
return NULL ;
1447
1352
}
@@ -1514,7 +1419,7 @@ expr_ty _PyPegen_formatted_value(Parser *p, expr_ty expression, Token *debug, ex
1514
1419
}
1515
1420
1516
1421
expr_ty
1517
- _PyPegen_concatenate_strings2 (Parser * p , asdl_expr_seq * strings ,
1422
+ _PyPegen_concatenate_strings (Parser * p , asdl_expr_seq * strings ,
1518
1423
int lineno , int col_offset , int end_lineno ,
1519
1424
int end_col_offset , PyArena * arena )
1520
1425
{
0 commit comments