File size: 4,944 Bytes
ed6bec6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
☯️ Glyphic Language — BNF Grammar Specification (v1.0)
Formal Grammar for the Glyphic OS Interpreter
This grammar defines the canonical structure of a valid glyph sequence.
It is strict, deterministic, and reversible.


1. Top‑Level Grammar
Code
<glyph-sequence> ::= <actor-block> <action-block> <object-block> <modifier-block> <context-block>
A valid sequence must follow this order.
All blocks are optional except that at least one of:
    <actor-block>
    <action-block>
    <object-block>
must be present.


2. Actor Block
Code
<actor-block> ::= <actor> | ε
<actor>       ::= <glyph-actor>
Constraints:
    Only one actor allowed.
    If present, it must appear first.


3. Action Block
Code
<action-block> ::= <action> | ε
<action>       ::= <glyph-action>
Constraints:
    Only one action allowed.
    Must appear after actor, if actor exists.


4. Object Block
Code
<object-block> ::= <object> | ε
<object>       ::= <glyph-object>
Constraints:
    Only one primary object allowed.
    Must appear after action, if action exists.


5. Modifier Block
Code
<modifier-block> ::= <modifier-list> | ε
<modifier-list>  ::= <modifier> <modifier-list> | <modifier>
<modifier>       ::= <glyph-modifier>
Constraints:
    Zero or more modifiers allowed.
    Must appear after object, if object exists.
    Modifiers cannot appear after context.


6. Context Block
Code
<context-block> ::= <context-place-block>
                    <context-time-block>
                    <context-emotion-block>
                    <context-sensory-block>
                    <context-social-block>
Each context subtype is optional, but must appear in this order if present.


7. Context Subtypes
Place Context
Code
<context-place-block> ::= <context-place-list> | ε
<context-place-list>  ::= <context-place> <context-place-list> | <context-place>
<context-place>       ::= <glyph-context-place>
Time Context
Code
<context-time-block> ::= <context-time-list> | ε
<context-time-list>  ::= <context-time> <context-time-list> | <context-time>
<context-time>       ::= <glyph-context-time>
Emotional Context
Code
<context-emotion-block> ::= <context-emotion-list> | ε
<context-emotion-list>  ::= <context-emotion> <context-emotion-list> | <context-emotion>
<context-emotion>       ::= <glyph-context-emotion>
Sensory Context
Code
<context-sensory-block> ::= <context-sensory-list> | ε
<context-sensory-list>  ::= <context-sensory> <context-sensory-list> | <context-sensory>
<context-sensory>       ::= <glyph-context-sensory>
Social Context
Code
<context-social-block> ::= <context-social-list> | ε
<context-social-list>  ::= <context-social> <context-social-list> | <context-social>
<context-social>       ::= <glyph-context-social>


8. Glyph Terminals
These terminals correspond directly to dictionary roles.
Code
<glyph-actor>            ::= any glyph with role "actor"
<glyph-action>           ::= any glyph with role "action"
<glyph-object>           ::= any glyph with role "object"
<glyph-modifier>         ::= any glyph with role "modifier"
<glyph-context-place>    ::= any glyph in category "context_place.*"
<glyph-context-time>     ::= any glyph in category "context_time.*"
<glyph-context-emotion>  ::= any glyph in category "context_emotion.*"
<glyph-context-sensory>  ::= any glyph in category "context_sensory.*"
<glyph-context-social>   ::= any glyph in category "context_social.*"
These terminals are not literal characters — they are semantic classes defined by the dictionary.


9. Role Precedence (Disambiguation Rule)
If a glyph has multiple roles (rare but allowed), precedence is:
Code
actor > action > object > modifier > context
This ensures deterministic parsing.


10. Validity Constraints (Non‑BNF but Required)
These constraints are enforced by the interpreter:

10.1 Required Core Role
At least one of:
    actor
    action
    object
must be present.

10.2 Context Must Be Last
No context glyph may appear before:
    actor
    action
    object
    modifier

10.3 Single Actor / Action / Object
Only one of each is allowed.

10.4 Context Ordering
Context subtypes must appear in this order:
Code
place → time → emotion → sensory → social

10.5 Reversibility
All valid sequences must satisfy:
Code
encode(decode(sequence)) == sequence
This is guaranteed by the grammar.


11. Example Valid Sequences
Actor + Action + Object
Code
<actor> <action> <object>
Object + Modifier + Context
Code
<object> <modifier> <context-place> <context-time>
Action + Context
Code
<action> <context-emotion> <context-social>
Full Scene
Code
<actor> <action> <object> <modifier> <context-place> <context-time> <context-emotion> <context-sensory> <context-social>


12. Example Invalid Sequences
❌ Context before object
Code
<context-place> <object>
❌ Multiple actions
Code
<action> <action>
❌ Social context before sensory context
Code
<context-social> <context-sensory>
❌ No core role
Code
<modifier> <context-place>