diff --git a/src/ligo/ligo-parser/AST.ml b/src/ligo/ligo-parser/AST.ml index 9e123b43c..a57455fae 100644 --- a/src/ligo/ligo-parser/AST.ml +++ b/src/ligo/ligo-parser/AST.ml @@ -666,7 +666,8 @@ and pattern = | PTuple of (pattern, comma) nsepseq par reg and list_pattern = - Sugar of (pattern, semi) sepseq brackets reg + Sugar of pattern injection reg +| PNil of kwd_nil | Raw of (pattern * cons * pattern) par reg (* Projecting regions *) @@ -792,6 +793,7 @@ let pattern_to_region = function | PNone region | PSome {region; _} | PList Sugar {region; _} +| PList PNil region | PList Raw {region; _} | PTuple {region; _} -> region @@ -1482,14 +1484,9 @@ and print_patterns {value; _} = print_token rpar ")" and print_list_pattern = function - Sugar sugar -> print_sugar sugar -| Raw raw -> print_raw raw - -and print_sugar {value; _} = - let {lbracket; inside; rbracket} = value in - print_token lbracket "["; - print_sepseq "," print_pattern inside; - print_token rbracket "]" + Sugar sugar -> print_injection "list" print_pattern sugar +| PNil kwd_nil -> print_token kwd_nil "nil" +| Raw raw -> print_raw raw and print_raw {value; _} = let {lpar; inside; rpar} = value in diff --git a/src/ligo/ligo-parser/AST.mli b/src/ligo/ligo-parser/AST.mli index cfc3a3e69..a465e32a8 100644 --- a/src/ligo/ligo-parser/AST.mli +++ b/src/ligo/ligo-parser/AST.mli @@ -650,7 +650,8 @@ and pattern = | PTuple of (pattern, comma) nsepseq par reg and list_pattern = - Sugar of (pattern, semi) sepseq brackets reg + Sugar of pattern injection reg +| PNil of kwd_nil | Raw of (pattern * cons * pattern) par reg (* Projecting regions *) diff --git a/src/ligo/ligo-parser/Parser.mly b/src/ligo/ligo-parser/Parser.mly index 4d06c9c74..5539bff46 100644 --- a/src/ligo/ligo-parser/Parser.mly +++ b/src/ligo/ligo-parser/Parser.mly @@ -518,7 +518,7 @@ map_remove: in {region; value}} set_patch: - Patch path With injection(Set) { + Patch path With injection(Set,expr) { let region = cover $1 $4.region in let value = { kwd_patch = $1; @@ -537,8 +537,8 @@ map_patch: map_inj = $4} in {region; value}} -injection(Kind): - Kind series(expr,End) { +injection(Kind,element): + Kind series(element,End) { let first, (others, terminator, closing) = $2 in let region = cover $1 closing and value = { @@ -557,7 +557,7 @@ injection(Kind): closing = End $2} in {region; value} } -| Kind LBRACKET series(expr,RBRACKET) { +| Kind LBRACKET series(element,RBRACKET) { let first, (others, terminator, closing) = $3 in let region = cover $1 closing and value = { @@ -942,7 +942,7 @@ core_expr: EConstr (SomeApp {region; value = $1,$2})} set_expr: - injection(Set) { SetInj $1 } + injection(Set,expr) { SetInj $1 } map_expr: map_lookup { MapLookUp $1 } @@ -1010,8 +1010,8 @@ arguments: tuple_inj { $1 } list_expr: - injection(List) { List $1 } -| nil { Nil $1 } + injection(List,expr) { List $1 } +| nil { Nil $1 } nil: par(typed_empty_list) { $1 } @@ -1054,8 +1054,9 @@ core_pattern: in PSome {region; value = $1,$2}} list_patt: - brackets(sepseq(core_pattern,SEMI)) { Sugar $1 } -| par(cons_pattern) { Raw $1 } + injection(List,core_pattern) { Sugar $1 } +| Nil { PNil $1 } +| par(cons_pattern) { Raw $1 } cons_pattern: core_pattern CONS pattern { $1,$2,$3 }