Hi Eric,
I have tried the action plan suggested by you in your last comment, but below are my logs and still I am unable to get lineno for else statement.
----The respective line no for each line are below ----
1
2 if num > 0:
3 print("Positive number")
4 elif num == 0:
5 print("Zero")
6 else:
7 print("Negative number")
>The re-formatted dump is as below and doesn't have lineno for else statement
Module(body=[If(test=Compare(left=Name(id='num', ctx=Load(), lineno=2, col_offset=3, end_lineno=2, end_col_offset=6),
ops=[Gt()], comparators=[Constant(value=0, kind=None, lineno=2, col_offset=9, end_lineno=2, end_col_offset=10)], lineno=2, col_offset=3, end_lineno=2, end_col_offset=10),
body=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=3, col_offset=4, end_lineno=3, end_col_offset=9), args=[Constant(value='Positive number', kind=None, lineno=3, col_offset=10, end_lineno=3,
end_col_offset=27)],
keywords=[], lineno=3, col_offset=4, end_lineno=3, end_col_offset=28),
lineno=3, col_offset=4, end_lineno=3, end_col_offset=28)],
orelse=[If(test=Compare(left=Name(id='num', ctx=Load(), lineno=4, col_offset=5, end_lineno=4, end_col_offset=8),
ops=[Eq()],
comparators=[Constant(value=0, kind=None, lineno=4, col_offset=12, end_lineno=4,
end_col_offset=13)], lineno=4, col_offset=5, end_lineno=4, end_col_offset=13),
body=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=5, col_offset=4, end_lineno=5, end_col_offset=9),
args=[Constant(value='Zero', kind=None, lineno=5, col_offset=10, end_lineno=5,
end_col_offset=16)],
keywords=[], lineno=5, col_offset=4, end_lineno=5, end_col_offset=17), lineno=5, col_offset=4, end_lineno=5, end_col_offset=17)],
orelse=[Expr(value=Call(func=Name(id='print', ctx=Load(), lineno=7, col_offset=4, end_lineno=7, end_col_offset=9),
args=[Constant(value='Negative number', kind=None, lineno=7, col_offset=10, end_lineno=7, end_col_offset=27)],
keywords=[], lineno=7, col_offset=4, end_lineno=7, end_col_offset=28),
lineno=7, col_offset=4, end_lineno=7, end_col_offset=28)], lineno=4, col_offset=0, end_lineno=7,
end_col_offset=28)],
lineno=2, col_offset=0, end_lineno=7, end_col_offset=28)], type_ignores=[])
> If we use tree to get the lineno then its giving as below
tree.body[0].orelse[0].orelse[0].lineno
7
Here the lineno 7 denotes to the body of else statement not the else lineno.
Could you please help me out where you can show the respective line no of else statement i.e. 6 in above example.
Thanks and Best Regards,
Bikram |