tree-based source processing language
1BEGIN {
2 int indent = 1;
3 string tab = " ";
4 string tree = "└╴";
5 print("module\n");
6}
7
8enter declaration_list {
9 indent += 1;
10}
11leave declaration_list {
12 indent -= 1;
13}
14
15enter block {
16 indent += 1;
17}
18leave block {
19 indent -= 1;
20}
21
22enter function_item {
23 print(tab * indent);
24 print(tree);
25 print("fn " + text(node.name) + "\n");
26}
27
28enter function_signature_item {
29 print(tab * indent);
30 print(tree);
31 print("fn " + text(node.name) + "\n");
32}
33
34enter struct_item {
35 print(tab * indent);
36 print(tree);
37 print("struct " + text(node.name) + "\n");
38}
39
40enter enum_item {
41 print(tab * indent);
42 print(tree);
43 print("enum " + text(node.name) + "\n");
44}
45
46enter mod_item {
47 print(tab * indent);
48 print(tree);
49 print("mod " + text(node.name) + "\n");
50}
51
52enter impl_item {
53 print(tab * indent);
54 print(tree);
55 print("trait " + text(node.type) + "\n");
56}