Rough draft of single-expr function syntax
This commit is contained in:
parent
60600a90fd
commit
8997155a57
@ -80,6 +80,7 @@ type t =
|
|||||||
| Down of Region.t (* "down" *)
|
| Down of Region.t (* "down" *)
|
||||||
| Else of Region.t (* "else" *)
|
| Else of Region.t (* "else" *)
|
||||||
| End of Region.t (* "end" *)
|
| End of Region.t (* "end" *)
|
||||||
|
| Expr of Region.t (* "expr" *)
|
||||||
| Fail of Region.t (* "fail" *)
|
| Fail of Region.t (* "fail" *)
|
||||||
| For of Region.t (* "for" *)
|
| For of Region.t (* "for" *)
|
||||||
| From of Region.t (* "from" *)
|
| From of Region.t (* "from" *)
|
||||||
|
@ -78,6 +78,7 @@ type t =
|
|||||||
| Down of Region.t (* "down" *)
|
| Down of Region.t (* "down" *)
|
||||||
| Else of Region.t (* "else" *)
|
| Else of Region.t (* "else" *)
|
||||||
| End of Region.t (* "end" *)
|
| End of Region.t (* "end" *)
|
||||||
|
| Expr of Region.t (* "expr" *)
|
||||||
| Fail of Region.t (* "fail" *)
|
| Fail of Region.t (* "fail" *)
|
||||||
| For of Region.t (* "for" *)
|
| For of Region.t (* "for" *)
|
||||||
| From of Region.t (* "from" *)
|
| From of Region.t (* "from" *)
|
||||||
@ -210,6 +211,7 @@ let proj_token = function
|
|||||||
| Down region -> region, "Down"
|
| Down region -> region, "Down"
|
||||||
| Else region -> region, "Else"
|
| Else region -> region, "Else"
|
||||||
| End region -> region, "End"
|
| End region -> region, "End"
|
||||||
|
| Expr region -> region, "Expr"
|
||||||
| Fail region -> region, "Fail"
|
| Fail region -> region, "Fail"
|
||||||
| For region -> region, "For"
|
| For region -> region, "For"
|
||||||
| From region -> region, "From"
|
| From region -> region, "From"
|
||||||
@ -303,6 +305,7 @@ let to_lexeme = function
|
|||||||
| Down _ -> "down"
|
| Down _ -> "down"
|
||||||
| Else _ -> "else"
|
| Else _ -> "else"
|
||||||
| End _ -> "end"
|
| End _ -> "end"
|
||||||
|
| Expr _ -> "expr"
|
||||||
| Fail _ -> "fail"
|
| Fail _ -> "fail"
|
||||||
| For _ -> "for"
|
| For _ -> "for"
|
||||||
| From _ -> "from"
|
| From _ -> "from"
|
||||||
@ -364,6 +367,7 @@ let keywords = [
|
|||||||
(fun reg -> Down reg);
|
(fun reg -> Down reg);
|
||||||
(fun reg -> Else reg);
|
(fun reg -> Else reg);
|
||||||
(fun reg -> End reg);
|
(fun reg -> End reg);
|
||||||
|
(fun reg -> Expr reg);
|
||||||
(fun reg -> For reg);
|
(fun reg -> For reg);
|
||||||
(fun reg -> From reg);
|
(fun reg -> From reg);
|
||||||
(fun reg -> Function reg);
|
(fun reg -> Function reg);
|
||||||
@ -588,6 +592,7 @@ let is_kwd = function
|
|||||||
| Down _
|
| Down _
|
||||||
| Else _
|
| Else _
|
||||||
| End _
|
| End _
|
||||||
|
| Expr _
|
||||||
| Fail _
|
| Fail _
|
||||||
| For _
|
| For _
|
||||||
| From _
|
| From _
|
||||||
|
@ -264,6 +264,25 @@ fun_decl:
|
|||||||
return = $10;
|
return = $10;
|
||||||
terminator = $11}
|
terminator = $11}
|
||||||
in {region; value}}
|
in {region; value}}
|
||||||
|
| Function fun_name parameters COLON type_expr Is
|
||||||
|
Expr expr option(SEMI) {
|
||||||
|
let stop =
|
||||||
|
match $9 with
|
||||||
|
Some region -> region
|
||||||
|
| None -> expr_to_region $8 in
|
||||||
|
let region = cover $1 stop
|
||||||
|
and value = {
|
||||||
|
kwd_function = $1;
|
||||||
|
name = $2;
|
||||||
|
param = $3;
|
||||||
|
colon = $4;
|
||||||
|
ret_type = $5;
|
||||||
|
kwd_is = $6;
|
||||||
|
kwd_expr = $7;
|
||||||
|
expr = $8;
|
||||||
|
terminator = $9;
|
||||||
|
}
|
||||||
|
in {region; value}}
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
par(nsepseq(param_decl,SEMI)) { $1 }
|
par(nsepseq(param_decl,SEMI)) { $1 }
|
||||||
|
Loading…
Reference in New Issue
Block a user