@@ -71,7 +71,7 @@ impl Production {
71
71
link_map : & HashMap < String , String > ,
72
72
md_link_map : & HashMap < String , String > ,
73
73
) -> Diagram < Box < dyn Node > > {
74
- let n = self . expression . render_railroad ( stack, link_map, false ) ;
74
+ let n = self . expression . render_railroad ( stack, link_map) ;
75
75
let dest = md_link_map
76
76
. get ( & self . name )
77
77
. map ( |path| path. to_string ( ) )
@@ -92,34 +92,29 @@ impl Expression {
92
92
& self ,
93
93
stack : bool ,
94
94
link_map : & HashMap < String , String > ,
95
- reverse : bool ,
96
95
) -> Option < Box < dyn Node > > {
97
96
let n: Box < dyn Node > = match & self . kind {
98
97
ExpressionKind :: Grouped ( e) => {
99
98
// I don't think this needs anything special. The grouped
100
99
// expression is usually an Alt or Optional or something like
101
100
// that which ends up as a distinct railroad node. But I'm not
102
101
// sure.
103
- e. render_railroad ( stack, link_map, reverse ) ?
102
+ e. render_railroad ( stack, link_map) ?
104
103
}
105
104
ExpressionKind :: Alt ( es) => {
106
105
let choices: Vec < _ > = es
107
106
. iter ( )
108
- . map ( |e| e. render_railroad ( stack, link_map, reverse ) )
107
+ . map ( |e| e. render_railroad ( stack, link_map) )
109
108
. filter_map ( |n| n)
110
109
. collect ( ) ;
111
110
Box :: new ( Choice :: < Box < dyn Node > > :: new ( choices) )
112
111
}
113
112
ExpressionKind :: Sequence ( es) => {
114
- let mut es: Vec < _ > = es. iter ( ) . collect ( ) ;
115
- // For reversing, see ::Repeat for an explanation.
116
- if reverse {
117
- es. reverse ( ) ;
118
- }
113
+ let es: Vec < _ > = es. iter ( ) . collect ( ) ;
119
114
let make_seq = |es : & [ & Expression ] | {
120
115
let seq: Vec < _ > = es
121
116
. iter ( )
122
- . map ( |e| e. render_railroad ( stack, link_map, reverse ) )
117
+ . map ( |e| e. render_railroad ( stack, link_map) )
123
118
. filter_map ( |n| n)
124
119
. collect ( ) ;
125
120
let seq: Sequence < Box < dyn Node > > = Sequence :: new ( seq) ;
@@ -159,31 +154,31 @@ impl Expression {
159
154
}
160
155
}
161
156
ExpressionKind :: Optional ( e) => {
162
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
157
+ let n = e. render_railroad ( stack, link_map) ?;
163
158
Box :: new ( Optional :: new ( n) )
164
159
}
165
160
ExpressionKind :: Repeat ( e) => {
166
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
161
+ let n = e. render_railroad ( stack, link_map) ?;
167
162
Box :: new ( Optional :: new ( Repeat :: new ( n, railroad:: Empty ) ) )
168
163
}
169
164
ExpressionKind :: RepeatNonGreedy ( e) => {
170
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
165
+ let n = e. render_railroad ( stack, link_map) ?;
171
166
let r = Box :: new ( Optional :: new ( Repeat :: new ( n, railroad:: Empty ) ) ) ;
172
167
let lbox = LabeledBox :: new ( r, Comment :: new ( "non-greedy" . to_string ( ) ) ) ;
173
168
Box :: new ( lbox)
174
169
}
175
170
ExpressionKind :: RepeatPlus ( e) => {
176
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
171
+ let n = e. render_railroad ( stack, link_map) ?;
177
172
Box :: new ( Repeat :: new ( n, railroad:: Empty ) )
178
173
}
179
174
ExpressionKind :: RepeatPlusNonGreedy ( e) => {
180
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
175
+ let n = e. render_railroad ( stack, link_map) ?;
181
176
let r = Repeat :: new ( n, railroad:: Empty ) ;
182
177
let lbox = LabeledBox :: new ( r, Comment :: new ( "non-greedy" . to_string ( ) ) ) ;
183
178
Box :: new ( lbox)
184
179
}
185
180
ExpressionKind :: RepeatRange ( e, a, b) => {
186
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
181
+ let n = e. render_railroad ( stack, link_map) ?;
187
182
let cmt = match ( a, b) {
188
183
( Some ( a) , Some ( b) ) => format ! ( "repeat between {a} and {b} times" ) ,
189
184
( None , Some ( b) ) => format ! ( "repeat at most {b} times" ) ,
@@ -202,7 +197,7 @@ impl Expression {
202
197
Box :: new ( Choice :: < Box < dyn Node > > :: new ( ns) )
203
198
}
204
199
ExpressionKind :: NegExpression ( e) => {
205
- let n = e. render_railroad ( stack, link_map, reverse ) ?;
200
+ let n = e. render_railroad ( stack, link_map) ?;
206
201
let ch = node_for_nt ( link_map, "CHAR" ) ;
207
202
Box :: new ( Except :: new ( Box :: new ( ch) , n) )
208
203
}
0 commit comments