4
4
from enum import Enum
5
5
import ast
6
6
import re
7
- from typing import List
7
+ from typing import List , Tuple
8
8
from antlr4 .Token import Token
9
9
10
10
@@ -1251,7 +1251,7 @@ def parse_table_constructor(self, render_last_hidden=True) -> Table or bool:
1251
1251
def parse_field_list (self ) -> List [Field ] or bool :
1252
1252
field_list = []
1253
1253
self .save ()
1254
- field = self .parse_field ()
1254
+ field , _ = self .parse_field ()
1255
1255
if field :
1256
1256
field_list .append (field )
1257
1257
while True :
@@ -1260,16 +1260,17 @@ def parse_field_list(self) -> List[Field] or bool:
1260
1260
inline_com = self .get_inline_comment ()
1261
1261
if inline_com :
1262
1262
field .comments .append (inline_com )
1263
- field = self .parse_field ()
1263
+ prev_field = field
1264
+ field , remaining_comments = self .parse_field ()
1264
1265
if field :
1265
1266
field_list .append (field )
1266
1267
self .success ()
1267
1268
else :
1269
+ prev_field .comments .extend (remaining_comments )
1268
1270
self .success ()
1269
1271
self .success ()
1270
1272
return field_list
1271
1273
else :
1272
-
1273
1274
field .comments .extend (self .get_comments ())
1274
1275
self .failure ()
1275
1276
break
@@ -1278,7 +1279,7 @@ def parse_field_list(self) -> List[Field] or bool:
1278
1279
return field_list
1279
1280
return self .failure ()
1280
1281
1281
- def parse_field (self ) -> Field or bool :
1282
+ def parse_field (self ) -> Tuple [ Field or bool , Comments ] :
1282
1283
self .save ()
1283
1284
1284
1285
if self .next_is_rc (Tokens .OBRACK ):
@@ -1289,7 +1290,7 @@ def parse_field(self) -> Field or bool:
1289
1290
value = self .parse_expr ()
1290
1291
if value :
1291
1292
self .success ()
1292
- return Field (key , value , comments , between_brackets = True )
1293
+ return Field (key , value , comments , between_brackets = True ), comments
1293
1294
1294
1295
self .failure_save ()
1295
1296
if self .next_is_rc (Tokens .NAME ):
@@ -1299,17 +1300,17 @@ def parse_field(self) -> Field or bool:
1299
1300
value = self .parse_expr ()
1300
1301
if value :
1301
1302
self .success ()
1302
- return Field (key , value , comments )
1303
+ return Field (key , value , comments ), comments
1303
1304
1304
1305
self .failure_save ()
1305
1306
comments = self .get_comments ()
1306
1307
value = self .parse_expr ()
1307
1308
if value :
1308
1309
self .success ()
1309
1310
# noinspection PyTypeChecker
1310
- return Field (None , value , comments ) # Key will be set in parse_table_constructor
1311
+ return Field (None , value , comments ), [] # Key will be set in parse_table_constructor
1311
1312
1312
- return self .failure ()
1313
+ return self .failure (), comments
1313
1314
1314
1315
def parse_field_sep (self ) -> bool :
1315
1316
self .save ()
0 commit comments