1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312
|
let ella_rules =
% : (print_rule list) %
[
((`ella`,(Print_metavar
((Const_name `name`),
[(Patt_child (Print_metavar ((Var_name `string`),[])))])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_leaf (`string`,(\s.s))))])));
((`ella`,(Print_metavar
((Const_name `fnname`),
[(Patt_child (Print_metavar ((Var_name `string`),[])))])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_leaf (`string`,(\s.s))))])));
((`ella`,(Print_metavar
((Const_name `type`),
[(Patt_child (Print_metavar ((Var_name `string`),[])))])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_leaf (`string`,(\s.s))))])));
((`ella`,
(Print_metavar ((Const_name `text`),[(Var_children `decls`)])),
(\x y. true)),
(PF (V_box [(((Abs 0),(Nat 1)),
(PO_expand (H_box [((Nat 0),(PO_subcall (`decls`,[])));
((Nat 0),(PO_constant `.`))])))])));
((`ella`,(Print_metavar
((Const_name `typedec`),[(Var_child `name`);
(Var_child `firstname`);
(Var_children `othernames`)])),
(\x y. true)),
(PF
(HV_box
[(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `TYPE`));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box
[((Nat 1),(PO_subcall (`name`,[])));
((Nat 1),(PO_constant `=`))]))));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box
[((Nat 0),(PO_constant `NEW(`));
((Nat 0),
(PO_format
(PF (HoV_box
[(((Nat 1),
(Abs (-2)),(Nat 0)),
(PO_subcall
(`firstname`,[])));
(((Nat 1),(Abs (-2)),
(Nat 0)),
(PO_expand
(H_box
[((Nat 1),
(PO_constant
`|`));
((Nat 1),
(PO_subcall
(`othernames`,
[])))])))]))));
((Nat 0),(PO_constant `)`))]))))]))))])));
((`ella`,
(Print_metavar ((Const_name `inputitem`),[(Var_child `type`)])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`type`,[])))])));
((`ella`,(Print_metavar ((Const_name `inputitem`),
[(Var_child `type`);(Var_children `names`)])),
(\x y. true)),
(PF
(HV_box [(((Nat 1),(Abs 3),(Nat 0)),
(PO_format (PF (H_box [((Nat 0),(PO_subcall (`type`,[])));
((Nat 0),(PO_constant `:`))]))));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
(PO_subcall (`names`,[])))]))))])));
((`ella`,(Print_metavar ((Const_name `inputitem_list`),
[(Var_children `items`);(Var_child `item`)])),
(\x y. true)),
(PF (H_box [((Nat 0),(PO_constant `(`));
((Nat 0),
(PO_format
(PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
(PO_expand
(H_box
[((Nat 0),(PO_subcall (`items`,[])));
((Nat 0),(PO_constant `,`))])));
(((Nat 1),(Abs 0),(Nat 0)),
(PO_subcall (`item`,[])))]))));
((Nat 0),(PO_constant `)`))])));
((`ella`,(Print_metavar ((Const_name `fndec`),[(Var_child `fnname`);
(Var_child `items`);
(Var_child `type`);
(Var_child `fnbody`)])),
(\x y. true)),
(PF (V_box [(((Abs 1),(Nat 0)),
(PO_format
(PF (HV_box
[(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box [((Nat 1),(PO_constant `FN`));
((Nat 1),
(PO_subcall (`fnname`,[])));
((Nat 1),(PO_constant `=`))]))));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box
[((Nat 0),
(PO_format
(PF
(HV_box
[(((Nat 1),(Abs 3),
(Nat 0)),
(PO_subcall
(`items`,[])));
(((Nat 1),(Abs 3),
(Nat 0)),
(PO_format
(PF
(H_box
[((Nat
1),
(PO_constant
`->`));
((Nat 1),
(PO_subcall
(`type`,
[])))]))))]))));
((Nat 0),(PO_constant `:`))]))))]))));
(((Abs 1),(Nat 0)),(PO_subcall (`fnbody`,[])))])));
((`ella`,
(Print_metavar ((Const_name `fnbody`),[(Var_child `fnbody`)])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`fnbody`,[])))])));
((`ella`,
(Print_metavar
((Const_name `delay`),[(Var_child `name`);(Var_child `int`)])),
(\x y. true)),
(PF (HV_box
[(((Nat 0),(Abs 3),(Nat 0)),(PO_constant `DELAY`));
(((Nat 0),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box [((Nat 0),(PO_constant `(`));
((Nat 0),
(PO_format
(PF (HV_box
[(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box
[((Nat 0),
(PO_subcall
(`name`,[])));
((Nat 0),
(PO_constant `,`))]))));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_subcall (`int`,[])))]))));
((Nat 0),(PO_constant `)`))]))))])));
((`ella`,(Print_metavar ((Const_name `unit`),[(Var_child `unit`)])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`unit`,[])))])));
((`ella`,(Print_metavar ((Const_name `tuple`),
[(Var_children `units`);(Var_child `unit`)])),
(\x y. true)),
(PF (H_box [((Nat 0),(PO_constant `(`));
((Nat 0),
(PO_format
(PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
(PO_expand
(H_box
[((Nat 0),(PO_subcall (`units`,[])));
((Nat 0),(PO_constant `,`))])));
(((Nat 1),(Abs 0),(Nat 0)),
(PO_subcall (`unit`,[])))]))));
((Nat 0),(PO_constant `)`))])));
((`ella`,
(Print_metavar ((Const_name `choosers`),[(Var_child `name`)])),
(\x y. true)),(PF (H_box [((Nat 0),(PO_subcall (`name`,[])))])));
((`ella`,(Print_metavar ((Const_name `choosers`),
[(Var_children `names`);(Var_child `name`)])),
(\x y. true)),
(PF (H_box [((Nat 0),(PO_constant `(`));
((Nat 0),
(PO_format
(PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
(PO_expand
(H_box
[((Nat 0),(PO_subcall (`names`,[])));
((Nat 0),(PO_constant `,`))])));
(((Nat 1),(Abs 0),(Nat 0)),
(PO_subcall (`name`,[])))]))));
((Nat 0),(PO_constant `)`))])));
((`ella`,(Print_metavar ((Const_name `choices`),
[(Var_child `choosers`);(Var_child `unit`)])),
(\x y. true)),
(PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (H_box [((Nat 0),(PO_subcall (`choosers`,[])));
((Nat 0),(PO_constant `:`))]))));
(((Nat 1),(Abs 3),(Nat 0)),(PO_subcall (`unit`,[])))])));
((`ella`,
(Print_metavar ((Const_name `choices_list`),
[(Var_children `choices`);(Var_child `choice`)])),
(\x y. true)),
(PF
(HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
(PO_expand (H_box [((Nat 0),(PO_subcall (`choices`,[])));
((Nat 0),(PO_constant `,`))])));
(((Nat 1),(Abs 0),(Nat 0)),(PO_subcall (`choice`,[])))])));
((`ella`,(Print_metavar ((Const_name `else_clause`),[])),(\x y. true)),
PF_empty);
((`ella`,
(Print_metavar ((Const_name `else_clause`),[(Var_child `unit`)])),
(\x y. true)),
(PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `ELSE`));
(((Nat 1),(Abs 3),(Nat 0)),(PO_subcall (`unit`,[])))])));
((`ella`,(Print_metavar
((Const_name `caseclause`),[(Var_child `unit`);
(Var_child `choices_list`);
(Var_child `else_clause`)])),
(\x y. true)),
(PF (V_box
[(((Abs 0),(Nat 0)),
(PO_format
(PF (HV_box
[(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `CASE`));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_subcall (`unit`,[])))]))));
(((Abs 0),(Nat 0)),
(PO_format
(PF (H_box [((Nat 1),(PO_constant `OF`));
((Nat 1),(PO_subcall (`choices_list`,[])))]))));
(((Abs 0),(Nat 0)),(PO_subcall (`else_clause`,[])));
(((Abs 0),(Nat 0)),(PO_constant `ESAC`))])));
((`ella`,(Print_metavar
((Const_name `series`),
[(Patt_child
(Print_metavar
((Const_name `step_list`),[(Var_children `steps`)])));
(Var_child `unit`)])),(\x y. true)),
(PF (V_box [(((Abs 0),(Nat 0)),(PO_constant `BEGIN`));
(((Abs 3),(Nat 0)),
(PO_expand (H_box [((Nat 0),(PO_subcall (`steps`,[])));
((Nat 0),(PO_constant `.`))])));
(((Abs 3),(Nat 0)),
(PO_format (PF (HV_box [(((Nat 1),(Abs 3),(Nat 0)),
(PO_constant `OUTPUT`));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_subcall (`unit`,[])))]))));
(((Abs 0),(Nat 0)),(PO_constant `END`))])));
((`ella`,
(Print_metavar
((Const_name `makeitem`),
[(Var_child `fnname`);
(Patt_child
(Print_metavar
((Const_name `name_list`),[(Var_children `names`)])))])),
(\x y. true)),
(PF (HV_box
[(((Nat 1),(Abs 3),(Nat 0)),
(PO_format (PF (H_box [((Nat 0),(PO_subcall (`fnname`,[])));
((Nat 0),(PO_constant `:`))]))));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format (PF (HoV_box [(((Nat 1),(Abs 0),(Nat 0)),
(PO_subcall (`names`,[])))]))))])));
((`ella`,(Print_metavar
((Const_name `make`),
[(Var_children `makeitems`);(Var_child `makeitem`)])),
(\x y. true)),
(PF
(HV_box
[(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `MAKE`));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (V_box
[(((Abs 0),(Nat 0)),
(PO_expand
(H_box
[((Nat 0),(PO_subcall (`makeitems`,[])));
((Nat 0),(PO_constant `,`))])));
(((Abs 0),(Nat 0)),(PO_subcall (`makeitem`,[])))]))))])));
((`ella`,
(Print_metavar
((Const_name `joinitem`),[(Var_child `unit`);(Var_child `name`)])),
(\x y. true)),
(PF
(HV_box
[(((Nat 1),(Abs 3),(Nat 0)),(PO_subcall (`unit`,[])));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format (PF (H_box [((Nat 1),(PO_constant `->`));
((Nat 1),(PO_subcall (`name`,[])))]))))])));
((`ella`,(Print_metavar
((Const_name `join`),
[(Var_children `joinitems`);(Var_child `joinitem`)])),
(\x y. true)),
(PF
(HV_box
[(((Nat 1),(Abs 3),(Nat 0)),(PO_constant `JOIN`));
(((Nat 1),(Abs 3),(Nat 0)),
(PO_format
(PF (V_box
[(((Abs 0),(Nat 0)),
(PO_expand
(H_box
[((Nat 0),(PO_subcall (`joinitems`,[])));
((Nat 0),(PO_constant `,`))])));
(((Abs 0),(Nat 0)),(PO_subcall (`joinitem`,[])))]))))])))
] : print_rule list;;
let ella_rules_fun =
% : (print_rule_function) %
print_rule_fun ella_rules;;
|