blob: 3e17a3b603addeada7a97690b8f2c226414204b2 (
plain)
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
|
include 'rust.lm'
parse P: program [stdin]
if P {
for FN: function in P {
print "function: [FN.id]
for CE: compound_expression in FN {
if match CE [assignment_expression compound_op compound_expression]
print " compound expression: [CE]
}
for AE: assignment_expression in FN {
if match AE [range_expression `= assignment_expression]
print " assignment expression: [AE]
}
for RE: range_expression in FN {
if !match RE [lazy_disjunction]
print " range expression: [RE]
}
for LD: lazy_disjunction in FN {
if !match LD [lazy_conjunction]
print " lazy disjunction: [LD]
}
for LC: lazy_conjunction in FN {
if !match LC [comparison]
print " lazy conjunction: [LC]
}
for C: comparison in FN {
if !match C [bitwise_or]
print " comparison: [C]
}
for P: pattern in FN {
print " pattern: [P]
}
for MA: match_arm in FN {
print " match_arm: [MA]
}
for CL: cons_list in FN {
print " construct list: [^CL]
}
for M: mult in FN {
if !match M [as]
print " mult: [^M]
}
for TP: tuple_pattern in FN {
print " tuple pattern: [TP]
}
for TP: grouped_pattern in FN {
print " grouped pattern: [TP]
}
for CP: closure_param in FN {
print " closure param: [CP]
}
}
for M: method in P {
print "method: [M.id]
}
for MR: macro_rule in P {
print " macro matcher: [MR.macro_matcher]
}
}
else {
send stderr "failed to parse input [error]
exit(1)
}
|