1{
2  "name": "ledger",
3  "rules": {
4    "source_file": {
5      "type": "REPEAT",
6      "content": {
7        "type": "CHOICE",
8        "members": [
9          {
10            "type": "SYMBOL",
11            "name": "journal_item"
12          },
13          {
14            "type": "STRING",
15            "value": "\n"
16          }
17        ]
18      }
19    },
20    "journal_item": {
21      "type": "CHOICE",
22      "members": [
23        {
24          "type": "SYMBOL",
25          "name": "comment"
26        },
27        {
28          "type": "SYMBOL",
29          "name": "directive"
30        },
31        {
32          "type": "SYMBOL",
33          "name": "xact"
34        }
35      ]
36    },
37    "comment": {
38      "type": "SEQ",
39      "members": [
40        {
41          "type": "CHOICE",
42          "members": [
43            {
44              "type": "STRING",
45              "value": ";"
46            },
47            {
48              "type": "STRING",
49              "value": "*"
50            }
51          ]
52        },
53        {
54          "type": "PATTERN",
55          "value": ".*\\n"
56        }
57      ]
58    },
59    "indented_line": {
60      "type": "SEQ",
61      "members": [
62        {
63          "type": "SYMBOL",
64          "name": "whitespace"
65        },
66        {
67          "type": "PATTERN",
68          "value": "[^\\n]+\\n"
69        }
70      ]
71    },
72    "directive": {
73      "type": "CHOICE",
74      "members": [
75        {
76          "type": "SYMBOL",
77          "name": "account_directive"
78        },
79        {
80          "type": "SYMBOL",
81          "name": "commodity_directive"
82        },
83        {
84          "type": "SYMBOL",
85          "name": "tag_directive"
86        },
87        {
88          "type": "SEQ",
89          "members": [
90            {
91              "type": "SYMBOL",
92              "name": "word_directive"
93            },
94            {
95              "type": "STRING",
96              "value": "\n"
97            }
98          ]
99        },
100        {
101          "type": "SEQ",
102          "members": [
103            {
104              "type": "SYMBOL",
105              "name": "char_directive"
106            },
107            {
108              "type": "STRING",
109              "value": "\n"
110            }
111          ]
112        }
113      ]
114    },
115    "account_directive": {
116      "type": "SEQ",
117      "members": [
118        {
119          "type": "SEQ",
120          "members": [
121            {
122              "type": "STRING",
123              "value": "account"
124            },
125            {
126              "type": "SYMBOL",
127              "name": "whitespace"
128            },
129            {
130              "type": "SYMBOL",
131              "name": "account"
132            },
133            {
134              "type": "STRING",
135              "value": "\n"
136            }
137          ]
138        },
139        {
140          "type": "REPEAT",
141          "content": {
142            "type": "SYMBOL",
143            "name": "account_subdirective"
144          }
145        }
146      ]
147    },
148    "account_subdirective": {
149      "type": "CHOICE",
150      "members": [
151        {
152          "type": "SYMBOL",
153          "name": "alias_subdirective"
154        },
155        {
156          "type": "SYMBOL",
157          "name": "default_subdirective"
158        },
159        {
160          "type": "SYMBOL",
161          "name": "note_subdirective"
162        },
163        {
164          "type": "SYMBOL",
165          "name": "assert_subdirective"
166        },
167        {
168          "type": "SYMBOL",
169          "name": "check_subdirective"
170        },
171        {
172          "type": "SEQ",
173          "members": [
174            {
175              "type": "SYMBOL",
176              "name": "whitespace"
177            },
178            {
179              "type": "STRING",
180              "value": "eval"
181            },
182            {
183              "type": "SYMBOL",
184              "name": "whitespace"
185            },
186            {
187              "type": "PATTERN",
188              "value": ".+\\n"
189            }
190          ]
191        },
192        {
193          "type": "SEQ",
194          "members": [
195            {
196              "type": "SYMBOL",
197              "name": "whitespace"
198            },
199            {
200              "type": "STRING",
201              "value": "payee"
202            },
203            {
204              "type": "SYMBOL",
205              "name": "whitespace"
206            },
207            {
208              "type": "PATTERN",
209              "value": ".+\\n"
210            }
211          ]
212        }
213      ]
214    },
215    "commodity_directive": {
216      "type": "SEQ",
217      "members": [
218        {
219          "type": "SEQ",
220          "members": [
221            {
222              "type": "STRING",
223              "value": "commodity"
224            },
225            {
226              "type": "SYMBOL",
227              "name": "whitespace"
228            },
229            {
230              "type": "SYMBOL",
231              "name": "commodity"
232            },
233            {
234              "type": "STRING",
235              "value": "\n"
236            }
237          ]
238        },
239        {
240          "type": "REPEAT",
241          "content": {
242            "type": "SYMBOL",
243            "name": "commodity_subdirective"
244          }
245        }
246      ]
247    },
248    "commodity_subdirective": {
249      "type": "CHOICE",
250      "members": [
251        {
252          "type": "SYMBOL",
253          "name": "alias_subdirective"
254        },
255        {
256          "type": "SYMBOL",
257          "name": "default_subdirective"
258        },
259        {
260          "type": "SYMBOL",
261          "name": "format_subdirective"
262        },
263        {
264          "type": "SYMBOL",
265          "name": "note_subdirective"
266        },
267        {
268          "type": "SEQ",
269          "members": [
270            {
271              "type": "SYMBOL",
272              "name": "whitespace"
273            },
274            {
275              "type": "STRING",
276              "value": "nomarket"
277            },
278            {
279              "type": "STRING",
280              "value": "\n"
281            }
282          ]
283        }
284      ]
285    },
286    "tag_directive": {
287      "type": "SEQ",
288      "members": [
289        {
290          "type": "SEQ",
291          "members": [
292            {
293              "type": "STRING",
294              "value": "tag"
295            },
296            {
297              "type": "SYMBOL",
298              "name": "whitespace"
299            },
300            {
301              "type": "PATTERN",
302              "value": "\\p{L}+\\n"
303            }
304          ]
305        },
306        {
307          "type": "REPEAT",
308          "content": {
309            "type": "CHOICE",
310            "members": [
311              {
312                "type": "SYMBOL",
313                "name": "assert_subdirective"
314              },
315              {
316                "type": "SYMBOL",
317                "name": "check_subdirective"
318              }
319            ]
320          }
321        }
322      ]
323    },
324    "word_directive": {
325      "type": "CHOICE",
326      "members": [
327        {
328          "type": "SEQ",
329          "members": [
330            {
331              "type": "STRING",
332              "value": "include"
333            },
334            {
335              "type": "SYMBOL",
336              "name": "whitespace"
337            },
338            {
339              "type": "SYMBOL",
340              "name": "filename"
341            }
342          ]
343        },
344        {
345          "type": "STRING",
346          "value": "end"
347        },
348        {
349          "type": "SEQ",
350          "members": [
351            {
352              "type": "STRING",
353              "value": "alias"
354            },
355            {
356              "type": "SYMBOL",
357              "name": "whitespace"
358            },
359            {
360              "type": "PATTERN",
361              "value": "[^=]+"
362            },
363            {
364              "type": "STRING",
365              "value": "="
366            },
367            {
368              "type": "PATTERN",
369              "value": ".+"
370            }
371          ]
372        },
373        {
374          "type": "SEQ",
375          "members": [
376            {
377              "type": "STRING",
378              "value": "def"
379            },
380            {
381              "type": "SYMBOL",
382              "name": "whitespace"
383            },
384            {
385              "type": "PATTERN",
386              "value": ".+"
387            }
388          ]
389        },
390        {
391          "type": "SEQ",
392          "members": [
393            {
394              "type": "STRING",
395              "value": "year"
396            },
397            {
398              "type": "SYMBOL",
399              "name": "whitespace"
400            },
401            {
402              "type": "PATTERN",
403              "value": "\\d{4}"
404            }
405          ]
406        },
407        {
408          "type": "SEQ",
409          "members": [
410            {
411              "type": "STRING",
412              "value": "bucket"
413            },
414            {
415              "type": "SYMBOL",
416              "name": "whitespace"
417            },
418            {
419              "type": "SYMBOL",
420              "name": "account"
421            }
422          ]
423        }
424      ]
425    },
426    "filename": {
427      "type": "PATTERN",
428      "value": ".+"
429    },
430    "char_directive": {
431      "type": "CHOICE",
432      "members": [
433        {
434          "type": "SYMBOL",
435          "name": "check_in"
436        },
437        {
438          "type": "SYMBOL",
439          "name": "check_out"
440        },
441        {
442          "type": "SEQ",
443          "members": [
444            {
445              "type": "STRING",
446              "value": "A"
447            },
448            {
449              "type": "SYMBOL",
450              "name": "whitespace"
451            },
452            {
453              "type": "SYMBOL",
454              "name": "account"
455            }
456          ]
457        },
458        {
459          "type": "SEQ",
460          "members": [
461            {
462              "type": "STRING",
463              "value": "Y"
464            },
465            {
466              "type": "SYMBOL",
467              "name": "whitespace"
468            },
469            {
470              "type": "PATTERN",
471              "value": "\\d{4}"
472            }
473          ]
474        },
475        {
476          "type": "SEQ",
477          "members": [
478            {
479              "type": "STRING",
480              "value": "N"
481            },
482            {
483              "type": "SYMBOL",
484              "name": "whitespace"
485            },
486            {
487              "type": "SYMBOL",
488              "name": "commodity"
489            }
490          ]
491        },
492        {
493          "type": "SEQ",
494          "members": [
495            {
496              "type": "STRING",
497              "value": "D"
498            },
499            {
500              "type": "SYMBOL",
501              "name": "whitespace"
502            },
503            {
504              "type": "SYMBOL",
505              "name": "amount"
506            }
507          ]
508        },
509        {
510          "type": "SEQ",
511          "members": [
512            {
513              "type": "STRING",
514              "value": "C"
515            },
516            {
517              "type": "SYMBOL",
518              "name": "whitespace"
519            },
520            {
521              "type": "SEQ",
522              "members": [
523                {
524                  "type": "SYMBOL",
525                  "name": "commodity"
526                },
527                {
528                  "type": "CHOICE",
529                  "members": [
530                    {
531                      "type": "SYMBOL",
532                      "name": "whitespace"
533                    },
534                    {
535                      "type": "BLANK"
536                    }
537                  ]
538                },
539                {
540                  "type": "STRING",
541                  "value": "="
542                },
543                {
544                  "type": "CHOICE",
545                  "members": [
546                    {
547                      "type": "SYMBOL",
548                      "name": "whitespace"
549                    },
550                    {
551                      "type": "BLANK"
552                    }
553                  ]
554                },
555                {
556                  "type": "SYMBOL",
557                  "name": "amount"
558                }
559              ]
560            }
561          ]
562        },
563        {
564          "type": "SEQ",
565          "members": [
566            {
567              "type": "STRING",
568              "value": "P"
569            },
570            {
571              "type": "SYMBOL",
572              "name": "whitespace"
573            },
574            {
575              "type": "SEQ",
576              "members": [
577                {
578                  "type": "SYMBOL",
579                  "name": "date"
580                },
581                {
582                  "type": "SYMBOL",
583                  "name": "whitespace"
584                },
585                {
586                  "type": "SYMBOL",
587                  "name": "commodity"
588                },
589                {
590                  "type": "CHOICE",
591                  "members": [
592                    {
593                      "type": "SYMBOL",
594                      "name": "whitespace"
595                    },
596                    {
597                      "type": "BLANK"
598                    }
599                  ]
600                },
601                {
602                  "type": "SYMBOL",
603                  "name": "amount"
604                }
605              ]
606            }
607          ]
608        }
609      ]
610    },
611    "alias_subdirective": {
612      "type": "SEQ",
613      "members": [
614        {
615          "type": "SYMBOL",
616          "name": "whitespace"
617        },
618        {
619          "type": "STRING",
620          "value": "alias"
621        },
622        {
623          "type": "SYMBOL",
624          "name": "whitespace"
625        },
626        {
627          "type": "PATTERN",
628          "value": ".+\\n"
629        }
630      ]
631    },
632    "default_subdirective": {
633      "type": "SEQ",
634      "members": [
635        {
636          "type": "SYMBOL",
637          "name": "whitespace"
638        },
639        {
640          "type": "STRING",
641          "value": "default"
642        },
643        {
644          "type": "STRING",
645          "value": "\n"
646        }
647      ]
648    },
649    "format_subdirective": {
650      "type": "SEQ",
651      "members": [
652        {
653          "type": "SYMBOL",
654          "name": "whitespace"
655        },
656        {
657          "type": "STRING",
658          "value": "format"
659        },
660        {
661          "type": "SYMBOL",
662          "name": "whitespace"
663        },
664        {
665          "type": "SYMBOL",
666          "name": "amount"
667        }
668      ]
669    },
670    "note_subdirective": {
671      "type": "SEQ",
672      "members": [
673        {
674          "type": "SYMBOL",
675          "name": "whitespace"
676        },
677        {
678          "type": "STRING",
679          "value": "note"
680        },
681        {
682          "type": "SYMBOL",
683          "name": "whitespace"
684        },
685        {
686          "type": "PATTERN",
687          "value": ".+\\n"
688        }
689      ]
690    },
691    "assert_subdirective": {
692      "type": "SEQ",
693      "members": [
694        {
695          "type": "SYMBOL",
696          "name": "whitespace"
697        },
698        {
699          "type": "STRING",
700          "value": "assert"
701        },
702        {
703          "type": "SYMBOL",
704          "name": "whitespace"
705        },
706        {
707          "type": "PATTERN",
708          "value": ".+\\n"
709        }
710      ]
711    },
712    "check_subdirective": {
713      "type": "SEQ",
714      "members": [
715        {
716          "type": "SYMBOL",
717          "name": "whitespace"
718        },
719        {
720          "type": "STRING",
721          "value": "check"
722        },
723        {
724          "type": "SYMBOL",
725          "name": "whitespace"
726        },
727        {
728          "type": "PATTERN",
729          "value": ".+\\n"
730        }
731      ]
732    },
733    "check_in": {
734      "type": "SEQ",
735      "members": [
736        {
737          "type": "CHOICE",
738          "members": [
739            {
740              "type": "STRING",
741              "value": "i"
742            },
743            {
744              "type": "STRING",
745              "value": "I"
746            }
747          ]
748        },
749        {
750          "type": "CHOICE",
751          "members": [
752            {
753              "type": "SYMBOL",
754              "name": "whitespace"
755            },
756            {
757              "type": "BLANK"
758            }
759          ]
760        },
761        {
762          "type": "SYMBOL",
763          "name": "date"
764        },
765        {
766          "type": "CHOICE",
767          "members": [
768            {
769              "type": "SYMBOL",
770              "name": "whitespace"
771            },
772            {
773              "type": "BLANK"
774            }
775          ]
776        },
777        {
778          "type": "SYMBOL",
779          "name": "time"
780        },
781        {
782          "type": "CHOICE",
783          "members": [
784            {
785              "type": "SYMBOL",
786              "name": "whitespace"
787            },
788            {
789              "type": "BLANK"
790            }
791          ]
792        },
793        {
794          "type": "SYMBOL",
795          "name": "account"
796        },
797        {
798          "type": "CHOICE",
799          "members": [
800            {
801              "type": "SEQ",
802              "members": [
803                {
804                  "type": "SYMBOL",
805                  "name": "spacer"
806                },
807                {
808                  "type": "CHOICE",
809                  "members": [
810                    {
811                      "type": "SYMBOL",
812                      "name": "whitespace"
813                    },
814                    {
815                      "type": "BLANK"
816                    }
817                  ]
818                },
819                {
820                  "type": "SYMBOL",
821                  "name": "payee"
822                }
823              ]
824            },
825            {
826              "type": "BLANK"
827            }
828          ]
829        }
830      ]
831    },
832    "check_out": {
833      "type": "SEQ",
834      "members": [
835        {
836          "type": "CHOICE",
837          "members": [
838            {
839              "type": "STRING",
840              "value": "o"
841            },
842            {
843              "type": "STRING",
844              "value": "O"
845            }
846          ]
847        },
848        {
849          "type": "CHOICE",
850          "members": [
851            {
852              "type": "SYMBOL",
853              "name": "whitespace"
854            },
855            {
856              "type": "BLANK"
857            }
858          ]
859        },
860        {
861          "type": "SYMBOL",
862          "name": "date"
863        },
864        {
865          "type": "CHOICE",
866          "members": [
867            {
868              "type": "SYMBOL",
869              "name": "whitespace"
870            },
871            {
872              "type": "BLANK"
873            }
874          ]
875        },
876        {
877          "type": "SYMBOL",
878          "name": "time"
879        }
880      ]
881    },
882    "xact": {
883      "type": "CHOICE",
884      "members": [
885        {
886          "type": "SYMBOL",
887          "name": "plain_xact"
888        },
889        {
890          "type": "SYMBOL",
891          "name": "periodic_xact"
892        }
893      ]
894    },
895    "plain_xact": {
896      "type": "SEQ",
897      "members": [
898        {
899          "type": "SEQ",
900          "members": [
901            {
902              "type": "SYMBOL",
903              "name": "date"
904            },
905            {
906              "type": "CHOICE",
907              "members": [
908                {
909                  "type": "SEQ",
910                  "members": [
911                    {
912                      "type": "SYMBOL",
913                      "name": "whitespace"
914                    },
915                    {
916                      "type": "SYMBOL",
917                      "name": "status"
918                    }
919                  ]
920                },
921                {
922                  "type": "BLANK"
923                }
924              ]
925            },
926            {
927              "type": "CHOICE",
928              "members": [
929                {
930                  "type": "SEQ",
931                  "members": [
932                    {
933                      "type": "SYMBOL",
934                      "name": "whitespace"
935                    },
936                    {
937                      "type": "SYMBOL",
938                      "name": "code"
939                    }
940                  ]
941                },
942                {
943                  "type": "BLANK"
944                }
945              ]
946            },
947            {
948              "type": "CHOICE",
949              "members": [
950                {
951                  "type": "SEQ",
952                  "members": [
953                    {
954                      "type": "SYMBOL",
955                      "name": "whitespace"
956                    },
957                    {
958                      "type": "SYMBOL",
959                      "name": "payee"
960                    }
961                  ]
962                },
963                {
964                  "type": "BLANK"
965                }
966              ]
967            },
968            {
969              "type": "STRING",
970              "value": "\n"
971            }
972          ]
973        },
974        {
975          "type": "REPEAT1",
976          "content": {
977            "type": "CHOICE",
978            "members": [
979              {
980                "type": "SYMBOL",
981                "name": "posting"
982              },
983              {
984                "type": "SEQ",
985                "members": [
986                  {
987                    "type": "SYMBOL",
988                    "name": "whitespace"
989                  },
990                  {
991                    "type": "SYMBOL",
992                    "name": "note"
993                  },
994                  {
995                    "type": "STRING",
996                    "value": "\n"
997                  }
998                ]
999              }
1000            ]
1001          }
1002        }
1003      ]
1004    },
1005    "periodic_xact": {
1006      "type": "SEQ",
1007      "members": [
1008        {
1009          "type": "SEQ",
1010          "members": [
1011            {
1012              "type": "STRING",
1013              "value": "~"
1014            },
1015            {
1016              "type": "SYMBOL",
1017              "name": "whitespace"
1018            },
1019            {
1020              "type": "SYMBOL",
1021              "name": "interval"
1022            },
1023            {
1024              "type": "STRING",
1025              "value": "\n"
1026            }
1027          ]
1028        },
1029        {
1030          "type": "REPEAT1",
1031          "content": {
1032            "type": "CHOICE",
1033            "members": [
1034              {
1035                "type": "SYMBOL",
1036                "name": "posting"
1037              },
1038              {
1039                "type": "SEQ",
1040                "members": [
1041                  {
1042                    "type": "SYMBOL",
1043                    "name": "whitespace"
1044                  },
1045                  {
1046                    "type": "SYMBOL",
1047                    "name": "note"
1048                  },
1049                  {
1050                    "type": "STRING",
1051                    "value": "\n"
1052                  }
1053                ]
1054              }
1055            ]
1056          }
1057        }
1058      ]
1059    },
1060    "interval": {
1061      "type": "CHOICE",
1062      "members": [
1063        {
1064          "type": "PATTERN",
1065          "value": "[eE][vV][eE][rR][yY][  ][dD][aA][yY]"
1066        },
1067        {
1068          "type": "PATTERN",
1069          "value": "[eE][vV][eE][rR][yY][  ][wW][eE][eE][kK]"
1070        },
1071        {
1072          "type": "PATTERN",
1073          "value": "[eE][vV][eE][rR][yY][  ][mM][oO][nN][tT][hH]"
1074        },
1075        {
1076          "type": "PATTERN",
1077          "value": "[eE][vV][eE][rR][yY][  ][qQ][uU][aA][rR][tT][eE][rR]"
1078        },
1079        {
1080          "type": "PATTERN",
1081          "value": "[eE][vV][eE][rR][yY][  ][yY][eE][aA][rR]"
1082        },
1083        {
1084          "type": "PATTERN",
1085          "value": "[eE][vV][eE][rR][yY] \\d+ [dD][aA][yY][sS]"
1086        },
1087        {
1088          "type": "PATTERN",
1089          "value": "[eE][vV][eE][rR][yY] \\d+ [wW][eE][eE][kK][sS]"
1090        },
1091        {
1092          "type": "PATTERN",
1093          "value": "[eE][vV][eE][rR][yY] \\d+ [mM][oO][nN][tT][hH][sS]"
1094        },
1095        {
1096          "type": "PATTERN",
1097          "value": "[eE][vV][eE][rR][yY] \\d+ [qQ][uU][aA][rR][tT][eE][rR][sS]"
1098        },
1099        {
1100          "type": "PATTERN",
1101          "value": "[eE][vV][eE][rR][yY] \\d+ [yY][eE][aA][rR][sS]"
1102        },
1103        {
1104          "type": "PATTERN",
1105          "value": "[dD][aA][iI][lL][yY]"
1106        },
1107        {
1108          "type": "PATTERN",
1109          "value": "[wW][eE][eE][kK][lL][yY]"
1110        },
1111        {
1112          "type": "PATTERN",
1113          "value": "[bB][iI][wW][eE][eE][kK][lL][yY]"
1114        },
1115        {
1116          "type": "PATTERN",
1117          "value": "[mM][oO][nN][tT][hH][lL][yY]"
1118        },
1119        {
1120          "type": "PATTERN",
1121          "value": "[bB][iI][mM][oO][nN][tT][hH][lL][yY]"
1122        },
1123        {
1124          "type": "PATTERN",
1125          "value": "[qQ][uU][aA][rR][tT][eE][rR][lL][yY]"
1126        },
1127        {
1128          "type": "PATTERN",
1129          "value": "[yY][eE][aA][rR][lL][yY]"
1130        }
1131      ]
1132    },
1133    "date": {
1134      "type": "SEQ",
1135      "members": [
1136        {
1137          "type": "SYMBOL",
1138          "name": "_single_date"
1139        },
1140        {
1141          "type": "CHOICE",
1142          "members": [
1143            {
1144              "type": "SEQ",
1145              "members": [
1146                {
1147                  "type": "STRING",
1148                  "value": "="
1149                },
1150                {
1151                  "type": "SYMBOL",
1152                  "name": "_single_date"
1153                }
1154              ]
1155            },
1156            {
1157              "type": "BLANK"
1158            }
1159          ]
1160        }
1161      ]
1162    },
1163    "_dsep": {
1164      "type": "PATTERN",
1165      "value": "[-\\.\\/]"
1166    },
1167    "_2d": {
1168      "type": "PATTERN",
1169      "value": "\\d{2}"
1170    },
1171    "_4d": {
1172      "type": "PATTERN",
1173      "value": "\\d{4}"
1174    },
1175    "_single_date": {
1176      "type": "CHOICE",
1177      "members": [
1178        {
1179          "type": "SEQ",
1180          "members": [
1181            {
1182              "type": "SYMBOL",
1183              "name": "_4d"
1184            },
1185            {
1186              "type": "SYMBOL",
1187              "name": "_dsep"
1188            },
1189            {
1190              "type": "SYMBOL",
1191              "name": "_2d"
1192            },
1193            {
1194              "type": "SYMBOL",
1195              "name": "_dsep"
1196            },
1197            {
1198              "type": "SYMBOL",
1199              "name": "_2d"
1200            }
1201          ]
1202        },
1203        {
1204          "type": "SEQ",
1205          "members": [
1206            {
1207              "type": "SYMBOL",
1208              "name": "_2d"
1209            },
1210            {
1211              "type": "SYMBOL",
1212              "name": "_dsep"
1213            },
1214            {
1215              "type": "SYMBOL",
1216              "name": "_2d"
1217            },
1218            {
1219              "type": "SYMBOL",
1220              "name": "_dsep"
1221            },
1222            {
1223              "type": "SYMBOL",
1224              "name": "_2d"
1225            }
1226          ]
1227        },
1228        {
1229          "type": "SEQ",
1230          "members": [
1231            {
1232              "type": "SYMBOL",
1233              "name": "_2d"
1234            },
1235            {
1236              "type": "SYMBOL",
1237              "name": "_dsep"
1238            },
1239            {
1240              "type": "SYMBOL",
1241              "name": "_2d"
1242            }
1243          ]
1244        }
1245      ]
1246    },
1247    "time": {
1248      "type": "PATTERN",
1249      "value": "\\d{2}:\\d{2}:\\d{2}"
1250    },
1251    "status": {
1252      "type": "CHOICE",
1253      "members": [
1254        {
1255          "type": "STRING",
1256          "value": "*"
1257        },
1258        {
1259          "type": "STRING",
1260          "value": "!"
1261        }
1262      ]
1263    },
1264    "code": {
1265      "type": "SEQ",
1266      "members": [
1267        {
1268          "type": "STRING",
1269          "value": "("
1270        },
1271        {
1272          "type": "PATTERN",
1273          "value": "[^)]*"
1274        },
1275        {
1276          "type": "STRING",
1277          "value": ")"
1278        }
1279      ]
1280    },
1281    "payee": {
1282      "type": "PATTERN",
1283      "value": "[^(*!\\n][^*!\\n]*"
1284    },
1285    "note": {
1286      "type": "SEQ",
1287      "members": [
1288        {
1289          "type": "STRING",
1290          "value": ";"
1291        },
1292        {
1293          "type": "PATTERN",
1294          "value": ".*"
1295        }
1296      ]
1297    },
1298    "posting": {
1299      "type": "SEQ",
1300      "members": [
1301        {
1302          "type": "SYMBOL",
1303          "name": "whitespace"
1304        },
1305        {
1306          "type": "CHOICE",
1307          "members": [
1308            {
1309              "type": "SEQ",
1310              "members": [
1311                {
1312                  "type": "SYMBOL",
1313                  "name": "status"
1314                },
1315                {
1316                  "type": "CHOICE",
1317                  "members": [
1318                    {
1319                      "type": "SYMBOL",
1320                      "name": "whitespace"
1321                    },
1322                    {
1323                      "type": "BLANK"
1324                    }
1325                  ]
1326                }
1327              ]
1328            },
1329            {
1330              "type": "BLANK"
1331            }
1332          ]
1333        },
1334        {
1335          "type": "SYMBOL",
1336          "name": "account"
1337        },
1338        {
1339          "type": "CHOICE",
1340          "members": [
1341            {
1342              "type": "SEQ",
1343              "members": [
1344                {
1345                  "type": "SYMBOL",
1346                  "name": "spacer"
1347                },
1348                {
1349                  "type": "CHOICE",
1350                  "members": [
1351                    {
1352                      "type": "SEQ",
1353                      "members": [
1354                        {
1355                          "type": "CHOICE",
1356                          "members": [
1357                            {
1358                              "type": "SYMBOL",
1359                              "name": "whitespace"
1360                            },
1361                            {
1362                              "type": "BLANK"
1363                            }
1364                          ]
1365                        },
1366                        {
1367                          "type": "SYMBOL",
1368                          "name": "amount"
1369                        }
1370                      ]
1371                    },
1372                    {
1373                      "type": "BLANK"
1374                    }
1375                  ]
1376                },
1377                {
1378                  "type": "CHOICE",
1379                  "members": [
1380                    {
1381                      "type": "SEQ",
1382                      "members": [
1383                        {
1384                          "type": "CHOICE",
1385                          "members": [
1386                            {
1387                              "type": "SYMBOL",
1388                              "name": "whitespace"
1389                            },
1390                            {
1391                              "type": "BLANK"
1392                            }
1393                          ]
1394                        },
1395                        {
1396                          "type": "SYMBOL",
1397                          "name": "price"
1398                        }
1399                      ]
1400                    },
1401                    {
1402                      "type": "BLANK"
1403                    }
1404                  ]
1405                },
1406                {
1407                  "type": "CHOICE",
1408                  "members": [
1409                    {
1410                      "type": "SEQ",
1411                      "members": [
1412                        {
1413                          "type": "CHOICE",
1414                          "members": [
1415                            {
1416                              "type": "SYMBOL",
1417                              "name": "whitespace"
1418                            },
1419                            {
1420                              "type": "BLANK"
1421                            }
1422                          ]
1423                        },
1424                        {
1425                          "type": "SYMBOL",
1426                          "name": "balance_assertion"
1427                        }
1428                      ]
1429                    },
1430                    {
1431                      "type": "BLANK"
1432                    }
1433                  ]
1434                },
1435                {
1436                  "type": "CHOICE",
1437                  "members": [
1438                    {
1439                      "type": "SEQ",
1440                      "members": [
1441                        {
1442                          "type": "CHOICE",
1443                          "members": [
1444                            {
1445                              "type": "SYMBOL",
1446                              "name": "whitespace"
1447                            },
1448                            {
1449                              "type": "BLANK"
1450                            }
1451                          ]
1452                        },
1453                        {
1454                          "type": "SYMBOL",
1455                          "name": "note"
1456                        }
1457                      ]
1458                    },
1459                    {
1460                      "type": "BLANK"
1461                    }
1462                  ]
1463                }
1464              ]
1465            },
1466            {
1467              "type": "BLANK"
1468            }
1469          ]
1470        },
1471        {
1472          "type": "STRING",
1473          "value": "\n"
1474        }
1475      ]
1476    },
1477    "account": {
1478      "type": "ALIAS",
1479      "content": {
1480        "type": "CHOICE",
1481        "members": [
1482          {
1483            "type": "SYMBOL",
1484            "name": "account_name"
1485          },
1486          {
1487            "type": "SEQ",
1488            "members": [
1489              {
1490                "type": "STRING",
1491                "value": "("
1492              },
1493              {
1494                "type": "SYMBOL",
1495                "name": "account_name"
1496              },
1497              {
1498                "type": "STRING",
1499                "value": ")"
1500              }
1501            ]
1502          },
1503          {
1504            "type": "SEQ",
1505            "members": [
1506              {
1507                "type": "STRING",
1508                "value": "["
1509              },
1510              {
1511                "type": "SYMBOL",
1512                "name": "account_name"
1513              },
1514              {
1515                "type": "STRING",
1516                "value": "]"
1517              }
1518            ]
1519          }
1520        ]
1521      },
1522      "named": false,
1523      "value": ""
1524    },
1525    "account_name": {
1526      "type": "PATTERN",
1527      "value": "[^ ;](\\S \\S|\\S)*"
1528    },
1529    "amount": {
1530      "type": "CHOICE",
1531      "members": [
1532        {
1533          "type": "SEQ",
1534          "members": [
1535            {
1536              "type": "SYMBOL",
1537              "name": "quantity"
1538            },
1539            {
1540              "type": "CHOICE",
1541              "members": [
1542                {
1543                  "type": "SYMBOL",
1544                  "name": "whitespace"
1545                },
1546                {
1547                  "type": "BLANK"
1548                }
1549              ]
1550            },
1551            {
1552              "type": "SYMBOL",
1553              "name": "commodity"
1554            }
1555          ]
1556        },
1557        {
1558          "type": "SEQ",
1559          "members": [
1560            {
1561              "type": "SYMBOL",
1562              "name": "commodity"
1563            },
1564            {
1565              "type": "CHOICE",
1566              "members": [
1567                {
1568                  "type": "SYMBOL",
1569                  "name": "whitespace"
1570                },
1571                {
1572                  "type": "BLANK"
1573                }
1574              ]
1575            },
1576            {
1577              "type": "SYMBOL",
1578              "name": "quantity"
1579            }
1580          ]
1581        }
1582      ]
1583    },
1584    "quantity": {
1585      "type": "SEQ",
1586      "members": [
1587        {
1588          "type": "CHOICE",
1589          "members": [
1590            {
1591              "type": "STRING",
1592              "value": "-"
1593            },
1594            {
1595              "type": "BLANK"
1596            }
1597          ]
1598        },
1599        {
1600          "type": "PATTERN",
1601          "value": "\\d([\\d., ]*\\d)?"
1602        }
1603      ]
1604    },
1605    "commodity": {
1606      "type": "CHOICE",
1607      "members": [
1608        {
1609          "type": "PATTERN",
1610          "value": "\\p{L}+"
1611        },
1612        {
1613          "type": "PATTERN",
1614          "value": "\\p{Sc}"
1615        },
1616        {
1617          "type": "PATTERN",
1618          "value": "\"[^\"\\n]*\""
1619        }
1620      ]
1621    },
1622    "price": {
1623      "type": "SEQ",
1624      "members": [
1625        {
1626          "type": "CHOICE",
1627          "members": [
1628            {
1629              "type": "STRING",
1630              "value": "@"
1631            },
1632            {
1633              "type": "STRING",
1634              "value": "@@"
1635            }
1636          ]
1637        },
1638        {
1639          "type": "CHOICE",
1640          "members": [
1641            {
1642              "type": "SYMBOL",
1643              "name": "whitespace"
1644            },
1645            {
1646              "type": "BLANK"
1647            }
1648          ]
1649        },
1650        {
1651          "type": "SYMBOL",
1652          "name": "amount"
1653        }
1654      ]
1655    },
1656    "balance_assertion": {
1657      "type": "SEQ",
1658      "members": [
1659        {
1660          "type": "STRING",
1661          "value": "="
1662        },
1663        {
1664          "type": "CHOICE",
1665          "members": [
1666            {
1667              "type": "SYMBOL",
1668              "name": "whitespace"
1669            },
1670            {
1671              "type": "BLANK"
1672            }
1673          ]
1674        },
1675        {
1676          "type": "CHOICE",
1677          "members": [
1678            {
1679              "type": "SYMBOL",
1680              "name": "amount"
1681            }
1682          ]
1683        }
1684      ]
1685    },
1686    "whitespace": {
1687      "type": "REPEAT1",
1688      "content": {
1689        "type": "CHOICE",
1690        "members": [
1691          {
1692            "type": "STRING",
1693            "value": " "
1694          },
1695          {
1696            "type": "STRING",
1697            "value": "\t"
1698          }
1699        ]
1700      }
1701    },
1702    "spacer": {
1703      "type": "CHOICE",
1704      "members": [
1705        {
1706          "type": "STRING",
1707          "value": "  "
1708        },
1709        {
1710          "type": "STRING",
1711          "value": "\t"
1712        },
1713        {
1714          "type": "STRING",
1715          "value": " \t"
1716        }
1717      ]
1718    }
1719  },
1720  "extras": [],
1721  "conflicts": [],
1722  "precedences": [],
1723  "externals": [],
1724  "inline": [
1725    "indented_line",
1726    "spacer",
1727    "whitespace"
1728  ],
1729  "supertypes": []
1730}
1731
1732