Open molnaredom opened 1 year ago
Preserved Comments
Az adat megvan hogy melyik sorból lett kivéve a comment egy comments
dict ben van tarolva.
[x] Meg kell tudni az új sor hogyan azonosítható a régi sorral
[x] A transzformált kódnak hanyadik sora a régi kód x edik sora?
[x] megszamolni hany ast sor van
[x] tudni melyik ast sor melyik kifejezes
[x] !!! Ki kellene iratni közvelteln egymás után hogy egy ast sor miből lett átalakítva
Ha megvan melyik ast sor melyik
[x] Inline komment
[x] különálló egysoros komment
[x] Különálló egysoros komment blokk
BUGOK
def teszt(obj, a): # komment 1
# k2
if a == 1: # k3
# k4
return obj.copy() # k5
# k6
# k7
elif a == 2:
# k8
# k9
return obj.copy()# k10
elif a == 3:
# k11
return obj.copy() # k12
# k13
# k14
Nem tudom ellenőrizni , hogy belső ifben van-e return, continue stb, mivel a már kilapított ast fában nem látszódik, hogy mennyi nestelt if volt. HA mindenképp ezt kellene később, akkor lapítás előtt kellene ellenőrizni
HELYETTE: a lapított kódot már rögtön transzofmálás után ellenőrzöm, hogy unparse aztán megint parse , ode vissza alakítás után nem keletkezik-e Syntax error.
ÁTláthatatlan kód
beágyazott if ben lévő kommentek
Azért van, mert először a belső ifen végigmegy
def teszt(obj, a): # komment 1
# k2
if 4==4:
if a == 1: # k3
# k4
return obj.copy() # k5
# k6
# k7
elif a == 2:
# k8
# k9
return obj.copy()# k10
elif a == 3:
# k11
return obj.copy() # k12
# k13
# k14
először a k3,k4,...k13 értékelődik ki
majd ezt elfelejti, és ujracsinálja az egészet a 4==4 es iftől
Megoldás : addig ne számolja az ast sorokat, amíg nem számolja a normális sorokat
Megoldás amikor már elkészítette az összes ast sort újra végig kell menni egy for ciklussal és csak akkor kell belehelyezni a kommenteket.
Indentálási probléma
def teszt(obj, a, b, c): # k1
if a == 1: # k2
match b:
# k3
# k4
case 2:
return 2 # k5
case 3:
if c == 4: # k6
print(4)
elif c == 5:
print(5)
return obj.copy()
# k7
# k8
case 6:
# k9
return obj.copy()
case 7: # k10
# k11
return obj.copy()
# k11
Középen lévő Match
Mivel nem az első sor a match így minden komment félretolódik 1 el
Az ast sorok felreszamolasa miatt dupázódhat az utolsó komment mert az utolso()
fuggveny is felrecsuzsik
def teszt(obj, a, b, c): # k1
if a == 1: # k2
if b == 2:
print("2")
# k3
# k4
return 2
elif b == 3:# k5
if c == 4:
print(4) # k6
elif c == 5:
print(5)
return obj.copy()
elif b == 6:
# k7
# k8
return obj.copy()
elif b == 7: # utols # utols
# utols1
return obj.copy() # k102
# k113
def teszt(obj, a, b, c): # k1
if a == 1: # k2
match b:
case 2:
# k3
# k4
print('2')
return 2 # k5
case 3:
if c == 4: # k6
print(4)
elif c == 5:
print(5)
return obj.copy()
# k7
# k8
case 6:
return obj.copy() # utols # utols
# utols1
case 7: # k102
# k113
return obj.copy()
# k113
Megoldás --> feltétel szabása
if "match" not in sor:
ast_sorok += 1