nac3parser: add comment support #68
|
@ -164,4 +164,67 @@ class Foo(A, B):
|
||||||
let parse_ast = parse_expression(&source).unwrap();
|
let parse_ast = parse_expression(&source).unwrap();
|
||||||
insta::assert_debug_snapshot!(parse_ast);
|
insta::assert_debug_snapshot!(parse_ast);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_more_comment() {
|
||||||
|
let source = "\
|
||||||
|
a: int # nac3: sf1
|
||||||
|
# nac3: sdf4
|
||||||
|
for i in (1, '12'): # nac3: sf2
|
||||||
|
a: int
|
||||||
|
# nac3: 3
|
||||||
|
# nac3: 5
|
||||||
|
while i < 2: # nac3: 4
|
||||||
|
# nac3: real pass
|
||||||
|
pass
|
||||||
|
# nac3: expr1
|
||||||
|
# nac3: expr3
|
||||||
|
1 + 2 # nac3: expr2
|
||||||
|
# nac3: if3
|
||||||
|
# nac3: if1
|
||||||
|
if 1: # nac3: if2
|
||||||
|
3";
|
||||||
|
insta::assert_debug_snapshot!(parse_program(&source).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_sample_comment() {
|
||||||
|
let source = "\
|
||||||
|
# nac3: while1
|
||||||
|
# nac3: while2
|
||||||
|
# normal comment
|
||||||
|
while test: # nac3: while3
|
||||||
|
# nac3: simple assign0
|
||||||
|
a = 3 # nac3: simple assign1
|
||||||
|
";
|
||||||
|
insta::assert_debug_snapshot!(parse_program(&source).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_comment_ambiguity() {
|
||||||
|
let source = "\
|
||||||
|
if a: d; # nac3: for d
|
||||||
|
if b: c # nac3: for c
|
||||||
|
if d: # nac3: for if d
|
||||||
|
b; b + 3; # nac3: for b + 3
|
||||||
|
a = 3; a + 3; b = a; # nac3: notif
|
||||||
|
# nac3: smallsingle1
|
||||||
|
# nac3: smallsingle3
|
||||||
|
aa = 3 # nac3: smallsingle2
|
||||||
|
if a: # nac3: small2
|
||||||
|
a
|
||||||
|
for i in a: # nac3: for1
|
||||||
|
pass
|
||||||
|
";
|
||||||
|
insta::assert_debug_snapshot!(parse_program(&source).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_comment_should_fail() {
|
||||||
|
let source = "\
|
||||||
|
if a: # nac3: something
|
||||||
|
a = 3
|
||||||
|
";
|
||||||
|
assert!(parse_program(&source).is_err());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,448 @@
|
||||||
|
---
|
||||||
|
source: nac3parser/src/parser.rs
|
||||||
|
expression: parse_program(&source).unwrap()
|
||||||
|
|
||||||
|
---
|
||||||
|
[
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: If {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 4,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "d",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [
|
||||||
|
"for d",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 2,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: If {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 2,
|
||||||
|
column: 4,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "b",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 2,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 2,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "c",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [
|
||||||
|
"for c",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 3,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: If {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 3,
|
||||||
|
column: 4,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "d",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "b",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 8,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 10,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: BinOp {
|
||||||
|
left: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 8,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "b",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
op: Add,
|
||||||
|
right: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 12,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [
|
||||||
|
"for b + 3",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [
|
||||||
|
"for if d",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Assign {
|
||||||
|
targets: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type_comment: None,
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 8,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 10,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: BinOp {
|
||||||
|
left: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 8,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
op: Add,
|
||||||
|
right: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 12,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 15,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Assign {
|
||||||
|
targets: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 15,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "b",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 19,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type_comment: None,
|
||||||
|
config_comment: [
|
||||||
|
"notif",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 8,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Assign {
|
||||||
|
targets: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 8,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "aa",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 8,
|
||||||
|
column: 6,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type_comment: None,
|
||||||
|
config_comment: [
|
||||||
|
"smallsingle1",
|
||||||
|
"smallsingle3",
|
||||||
|
"smallsingle2",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 9,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: If {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 9,
|
||||||
|
column: 4,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 10,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 10,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [
|
||||||
|
"small2",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 11,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: For {
|
||||||
|
target: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 11,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "i",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
iter: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 11,
|
||||||
|
column: 10,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 12,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Pass {
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
type_comment: None,
|
||||||
|
config_comment: [
|
||||||
|
"for1",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
|
@ -0,0 +1,313 @@
|
||||||
|
---
|
||||||
|
source: nac3parser/src/parser.rs
|
||||||
|
expression: parse_program(&source).unwrap()
|
||||||
|
|
||||||
|
---
|
||||||
|
[
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: AnnAssign {
|
||||||
|
target: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
annotation: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 4,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "int",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
value: None,
|
||||||
|
simple: true,
|
||||||
|
config_comment: [
|
||||||
|
"sf1",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 2,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: For {
|
||||||
|
target: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 3,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "i",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
iter: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 3,
|
||||||
|
column: 11,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Tuple {
|
||||||
|
elts: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 3,
|
||||||
|
column: 11,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 3,
|
||||||
|
column: 15,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Str(
|
||||||
|
"12",
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: AnnAssign {
|
||||||
|
target: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
annotation: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 8,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "int",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
value: None,
|
||||||
|
simple: true,
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
type_comment: None,
|
||||||
|
config_comment: [
|
||||||
|
"sdf4",
|
||||||
|
"sf2",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 5,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: While {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 7,
|
||||||
|
column: 9,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Compare {
|
||||||
|
left: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 7,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "i",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ops: [
|
||||||
|
Lt,
|
||||||
|
],
|
||||||
|
comparators: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 7,
|
||||||
|
column: 11,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 9,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Pass {
|
||||||
|
config_comment: [
|
||||||
|
"real pass",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 12,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 12,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: BinOp {
|
||||||
|
left: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 12,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
op: Add,
|
||||||
|
right: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 12,
|
||||||
|
column: 9,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [
|
||||||
|
"expr1",
|
||||||
|
"expr3",
|
||||||
|
"expr2",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 13,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: If {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 15,
|
||||||
|
column: 8,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
1,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 16,
|
||||||
|
column: 9,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Expr {
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 16,
|
||||||
|
column: 9,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [
|
||||||
|
"if3",
|
||||||
|
"if1",
|
||||||
|
"if2",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [
|
||||||
|
"3",
|
||||||
|
"5",
|
||||||
|
"4",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_program(&source).unwrap()
|
expression: parse_program(&source).unwrap()
|
||||||
|
|
||||||
---
|
---
|
||||||
[
|
[
|
||||||
Located {
|
Located {
|
||||||
|
@ -74,12 +75,15 @@ expression: parse_program(&source).unwrap()
|
||||||
column: 3,
|
column: 3,
|
||||||
},
|
},
|
||||||
custom: (),
|
custom: (),
|
||||||
node: Pass,
|
node: Pass {
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
decorator_list: [],
|
decorator_list: [],
|
||||||
returns: None,
|
returns: None,
|
||||||
type_comment: None,
|
type_comment: None,
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Located {
|
Located {
|
||||||
|
@ -145,16 +149,20 @@ expression: parse_program(&source).unwrap()
|
||||||
column: 3,
|
column: 3,
|
||||||
},
|
},
|
||||||
custom: (),
|
custom: (),
|
||||||
node: Pass,
|
node: Pass {
|
||||||
|
config_comment: [],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
decorator_list: [],
|
decorator_list: [],
|
||||||
returns: None,
|
returns: None,
|
||||||
type_comment: None,
|
type_comment: None,
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
decorator_list: [],
|
decorator_list: [],
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_ast
|
expression: parse_ast
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -45,6 +45,7 @@ expression: parse_ast
|
||||||
kind: None,
|
kind: None,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -90,6 +91,7 @@ expression: parse_ast
|
||||||
kind: None,
|
kind: None,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -114,12 +116,15 @@ expression: parse_ast
|
||||||
kind: None,
|
kind: None,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_ast
|
expression: parse_ast
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -73,6 +73,7 @@ expression: parse_ast
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_ast
|
expression: parse_ast
|
||||||
|
|
||||||
---
|
---
|
||||||
[
|
[
|
||||||
Located {
|
Located {
|
||||||
|
@ -85,6 +86,7 @@ expression: parse_ast
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_ast
|
expression: parse_ast
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -60,6 +60,7 @@ expression: parse_ast
|
||||||
keywords: [],
|
keywords: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_ast
|
expression: parse_ast
|
||||||
|
|
||||||
---
|
---
|
||||||
[
|
[
|
||||||
Located {
|
Located {
|
||||||
|
@ -46,6 +47,7 @@ expression: parse_ast
|
||||||
keywords: [],
|
keywords: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
source: parser/src/parser.rs
|
source: nac3parser/src/parser.rs
|
||||||
expression: parse_program(&source).unwrap()
|
expression: parse_program(&source).unwrap()
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -86,6 +86,7 @@ expression: parse_program(&source).unwrap()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
type_comment: None,
|
type_comment: None,
|
||||||
|
config_comment: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
---
|
||||||
|
source: nac3parser/src/parser.rs
|
||||||
|
expression: parse_program(&source).unwrap()
|
||||||
|
|
||||||
|
---
|
||||||
|
[
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 1,
|
||||||
|
column: 1,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: While {
|
||||||
|
test: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 4,
|
||||||
|
column: 7,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "test",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 6,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Assign {
|
||||||
|
targets: [
|
||||||
|
Located {
|
||||||
|
location: Location {
|
||||||
|
row: 6,
|
||||||
|
column: 5,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Name {
|
||||||
|
id: "a",
|
||||||
|
ctx: Load,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
value: Located {
|
||||||
|
location: Location {
|
||||||
|
row: 6,
|
||||||
|
column: 9,
|
||||||
|
},
|
||||||
|
custom: (),
|
||||||
|
node: Constant {
|
||||||
|
value: Int(
|
||||||
|
3,
|
||||||
|
),
|
||||||
|
kind: None,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
type_comment: None,
|
||||||
|
config_comment: [
|
||||||
|
"simple assign0",
|
||||||
|
"simple assign1",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
orelse: [],
|
||||||
|
config_comment: [
|
||||||
|
"while1",
|
||||||
|
"while2",
|
||||||
|
"while3",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
Loading…
Reference in New Issue