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>
|