tree-based source processing language
at main 56 lines 926 B view raw
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}