-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrammar-simplified
116 lines (83 loc) · 2.39 KB
/
grammar-simplified
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Khi grammar (simplified)
# Simplified for readability, but ambiguous
## Document
<value-document> = *
| *<value>*
<dictionary-document> = *
| *<dictionary>*
<list-document> = *
| *<list>*
## Value
<value> = <block>
| "|" <block>
| <tuple>
| "|" <tuple>
| <tagged-value>
<block> = <term>
| <term> <block>
| "~"
| "~" <block>
<term> = <text>
| <bracketed-value>
| <bracketed-dictionary>
| <bracketed-list>
| <tagged-arguments>
<text> = <string>
| <string> <text>
<text'> = <string>
| <string> <text'>
| "~" <text'>
<tuple> = <block> "|" <block>
| <block> "|" <tuple>
<tagged-value> = <tag>":"_<value>
<bracketed-value> = "{" <value> "}"
## Dictionary
<dictionary> = <delimited-dictionary>
| <aligned-dictionary>
<delimited-dictionary> = <entry>
| <entry> ";"
| <entry> ";" <delimited-dictionary>
<aligned-dictionary> = <entry>
| <entry> <aligned-dictionary>
<entry> = <string>":" <value>
<bracketed-dictionary> = "{" "}"
| "{" <dictionary> "}"
## List
<list> = <delimited-list>
| <aligned-list>
| <tabular-list>
<delimited-list> = <value>
| <value> ";"
| <value> ";" <delimited-list>
<aligned-list> = ">" <value>
| ">" <value> <aligned-list>
| <tagged-value>
| <tagged-value> <aligned-list>
<tabular-list> = "|" <block> "|"
| "|" <block> "|" <tabular-list>
| "|" <tuple> "|"
| "|" <tuple> "|" <tabular-list>
<bracketed-list> = "[" "]"
| "[" <list> "]"
## Tagged arguments
<tagged-arguments> = <tag>
| <tag><arguments>
<arguments> = ":"<simple-argument>
| ":"<simple-argument><arguments>
| ":"<tagged-arguments>
<simple-argument> = <string>
| <bracketed-value>
| <bracketed-dictionary>
| <bracketed-list>
## Tag
<tag> = "<"<word>">"
| "<"<word> <attributes> ">"
| "<>"
<attributes> = <word>
| <word> <attributes>
| <word>":"<string>
| <word>":"<string> <attributes>
## String
<string> = word
| transcription
| text-block