|
7 | 7 | */ |
8 | 8 |
|
9 | 9 | script = _{sys_script | multi_script | query_script} |
10 | | -query_script = {SOI ~ (option | rule | const_rule | algo_rule)+ ~ EOI} |
11 | | -query_script_inner = {"{" ~ (option | rule | const_rule | algo_rule)+ ~ "}"} |
| 10 | +query_script = {SOI ~ (option | rule | const_rule | fixed_rule)+ ~ EOI} |
| 11 | +query_script_inner = {"{" ~ (option | rule | const_rule | fixed_rule)+ ~ "}"} |
12 | 12 | multi_script = {SOI ~ query_script_inner+ ~ EOI} |
13 | 13 | sys_script = {SOI ~ "::" ~ (compact_op | list_relations_op | list_relation_op | remove_relations_op | trigger_relation_op | |
14 | 14 | trigger_relation_show_op | rename_relations_op | running_op | kill_op | explain_op | access_level_op) ~ EOI} |
@@ -48,19 +48,19 @@ compound_ident = @{ident ~ ("." ~ ident)?} |
48 | 48 |
|
49 | 49 | rule = {rule_head ~ ":=" ~ rule_body ~ ";"?} |
50 | 50 | const_rule = {rule_head ~ "<-" ~ expr ~ ";"?} |
51 | | -algo_rule = {rule_head ~ "<~" ~ ident ~ algo_args_list ~ ";"?} |
52 | | -algo_args_list = {"(" ~ (algo_arg ~ ",")* ~ algo_arg? ~ ")"} |
| 51 | +fixed_rule = {rule_head ~ "<~" ~ ident ~ fixed_args_list ~ ";"?} |
| 52 | +fixed_args_list = {"(" ~ (fixed_arg ~ ",")* ~ fixed_arg? ~ ")"} |
53 | 53 |
|
54 | 54 | rule_head = {(prog_entry | ident) ~ "[" ~ (head_arg ~ ",")* ~ head_arg? ~ "]"} |
55 | 55 | head_arg = {aggr_arg | var} |
56 | 56 | aggr_arg = {ident ~ "(" ~ var ~ ("," ~ expr)* ~ ")"} |
57 | | -algo_arg = _{algo_rel | algo_opt_pair} |
58 | | -algo_opt_pair = {ident ~ ":" ~ expr} |
59 | | -algo_rel = {algo_rule_rel | algo_relation_rel | algo_named_relation_rel } |
60 | | -algo_rule_rel = {ident ~ "[" ~ (var ~ ",")* ~ var? ~ "]"} |
61 | | -algo_relation_rel = {relation_ident ~ "[" ~ (var ~ ",")* ~ var? ~ "]"} |
62 | | -algo_named_relation_rel = {relation_ident ~ "{" ~ (algo_named_relation_arg_pair ~ ",")* ~ algo_named_relation_arg_pair? ~ "}"} |
63 | | -algo_named_relation_arg_pair = {ident ~ (":" ~ ident)?} |
| 57 | +fixed_arg = _{fixed_rel | fixed_opt_pair} |
| 58 | +fixed_opt_pair = {ident ~ ":" ~ expr} |
| 59 | +fixed_rel = {fixed_rule_rel | fixed_relation_rel | fixed_named_relation_rel } |
| 60 | +fixed_rule_rel = {ident ~ "[" ~ (var ~ ",")* ~ var? ~ "]"} |
| 61 | +fixed_relation_rel = {relation_ident ~ "[" ~ (var ~ ",")* ~ var? ~ "]"} |
| 62 | +fixed_named_relation_rel = {relation_ident ~ "{" ~ (fixed_named_relation_arg_pair ~ ",")* ~ fixed_named_relation_arg_pair? ~ "}"} |
| 63 | +fixed_named_relation_arg_pair = {ident ~ (":" ~ ident)?} |
64 | 64 |
|
65 | 65 | rule_body = {(disjunction ~ ",")* ~ disjunction?} |
66 | 66 | rule_apply = {underscore_ident ~ "[" ~ apply_args ~ "]"} |
|
0 commit comments