@@ -491,7 +491,7 @@ class Query(Expr):
491
491
pattern = Field (type = BasePattern )
492
492
493
493
494
- class ArrowAssoc (LKQLNode ):
494
+ class ListCompAssoc (LKQLNode ):
495
495
"""
496
496
Arrow association of the form: id <- expr.
497
497
This construction is meant to be used a part of a list comprehension
@@ -508,7 +508,7 @@ class ListComprehension(Expr):
508
508
"""
509
509
510
510
expr = Field (type = Expr )
511
- generators = Field (type = ArrowAssoc .list )
511
+ generators = Field (type = ListCompAssoc .list )
512
512
guard = Field (type = Expr )
513
513
514
514
@@ -517,9 +517,11 @@ class BlockExpr(Expr):
517
517
Expression of the form: val id = value; expr
518
518
519
519
For instance::
520
+ {
520
521
val x = 40;
521
522
val y = 2;
522
523
x + y
524
+ }
523
525
"""
524
526
525
527
vals = Field (type = ValDecl .list )
@@ -1028,13 +1030,14 @@ def patterns():
1028
1030
Opt ("(" , c (), List (G .named_arg , sep = "," , empty_valid = False ), ")" )
1029
1031
),
1030
1032
1031
- arrow_assoc = ArrowAssoc (G .identifier , "<-" , G .expr ),
1032
-
1033
- listcomp = ListComprehension ("[" , G .expr , "|" ,
1034
- List (G .arrow_assoc ,
1035
- sep = "," , empty_valid = False ),
1036
- Opt ("," , G .expr ),
1037
- "]" ),
1033
+ listcomp = ListComprehension (
1034
+ "[" ,
1035
+ G .expr , "for" ,
1036
+ List (ListCompAssoc (G .identifier , "in" , G .expr ),
1037
+ sep = "," , empty_valid = False ),
1038
+ Opt ("if" , G .expr ),
1039
+ "]"
1040
+ ),
1038
1041
1039
1042
decl = Or (G .fun_decl ,
1040
1043
G .selector_decl ,
@@ -1103,7 +1106,8 @@ def patterns():
1103
1106
),
1104
1107
1105
1108
block_expr = BlockExpr (
1106
- "{" , c (), List (G .val_decl , sep = ";" , empty_valid = False ), ";" , G .expr , "}"
1109
+ "{" , c (), List (G .val_decl , sep = ";" , empty_valid = False ), ";" , G .expr ,
1110
+ "}"
1107
1111
),
1108
1112
1109
1113
val_decl = ValDecl ("val" , c (), G .identifier , "=" , G .expr ),
0 commit comments