| 262 | | keys.keys().sort(cmp = lambda a, b: \ |
|---|
| 263 | | type(grammar[a]) is dict and ORDER in grammar[a] \ |
|---|
| 264 | | and type(grammar[b]) is dict and ORDER in grammar[b] \ |
|---|
| 265 | | and cmp(grammar[a][ORDER], grammar[b][ORDER]) \ |
|---|
| 266 | | or cmp(a, b)) |
|---|
| 267 | | return keys |
|---|
| | 262 | def key_sort(a, b): |
|---|
| | 263 | l = [9999, 9999, a] |
|---|
| | 264 | r = [9999, 9999, b] |
|---|
| | 265 | if type(grammar[a]) is dict: |
|---|
| | 266 | if GROUP in grammar[a]: |
|---|
| | 267 | if type(grammar[a][GROUP]) is tuple: |
|---|
| | 268 | l[0] = gramar[a][GROUP][0] |
|---|
| | 269 | elif type(grammar[a][GROUP]) is int: |
|---|
| | 270 | l[0] = grammar[a][GROUP] |
|---|
| | 271 | if ORDER in grammar[a]: |
|---|
| | 272 | l[1] = grammar[a][ORDER] |
|---|
| | 273 | |
|---|
| | 274 | if type(grammar[b]) is dict: |
|---|
| | 275 | if GROUP in grammar[b]: |
|---|
| | 276 | if type(grammar[b][GROUP]) is tuple: |
|---|
| | 277 | r[0] = gramar[b][GROUP][0] |
|---|
| | 278 | elif type(grammar[b][GROUP]) is int: |
|---|
| | 279 | r[0] = grammar[b][GROUP] |
|---|
| | 280 | if ORDER in grammar[b]: |
|---|
| | 281 | r[1] = grammar[b][ORDER] |
|---|
| | 282 | return cmp(l, r) |
|---|
| | 283 | |
|---|
| | 284 | k = keys.keys() |
|---|
| | 285 | k.sort(cmp = key_sort) |
|---|
| | 286 | return k |
|---|