Syntax of Unicode encoding of Ancient Egyptian
Characters
vertical, horizontal, grouping
| U+13430 | | EGYPTIAN HIEROGLYPH VERTICAL JOINER |
| U+13431 | | EGYPTIAN HIEROGLYPH HORIZONTAL JOINER |
| U+13437 | | EGYPTIAN HIEROGLYPH BEGIN SEGMENT |
| U+13438 | | EGYPTIAN HIEROGLYPH END SEGMENT |
insertion and overlay
| U+13432 | | EGYPTIAN HIEROGLYPH INSERT AT TOP START |
| U+13433 | | EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START |
| U+13434 | | EGYPTIAN HIEROGLYPH INSERT AT TOP END |
| U+13435 | | EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END |
| U+13439 | | EGYPTIAN HIEROGLYPH INSERT AT MIDDLE |
| U+1343A | | EGYPTIAN HIEROGLYPH INSERT AT TOP |
| U+1343B | | EGYPTIAN HIEROGLYPH INSERT AT BOTTOM |
| U+13436 | | EGYPTIAN HIEROGLYPH OVERLAY MIDDLE |
enclosures
| U+1343C | | EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE |
| U+1343D | | EGYPTIAN HIEROGLYPH END ENCLOSURE |
| U+1343E | | EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE |
| U+1343F | | EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE |
| U+13258 | 𓉘 | EGYPTIAN HIEROGLYPH O006A |
| U+13259 | 𓉙 | EGYPTIAN HIEROGLYPH O006B |
| U+1325A | 𓉚 | EGYPTIAN HIEROGLYPH O006C |
| U+13379 | 𓍹 | EGYPTIAN HIEROGLYPH V011A |
| U+1342F | 𓐯 | EGYPTIAN HIEROGLYPH V011D |
| U+1325B | 𓉛 | EGYPTIAN HIEROGLYPH O006D |
| U+1325C | 𓉜 | EGYPTIAN HIEROGLYPH O006E |
| U+1325D | 𓉝 | EGYPTIAN HIEROGLYPH O006F |
| U+13282 | 𓊂 | EGYPTIAN HIEROGLYPH O033A |
| U+1337A | 𓍺 | EGYPTIAN HIEROGLYPH V011B |
| U+1337B | 𓍻 | EGYPTIAN HIEROGLYPH V011C |
| U+13286 | 𓊆 | EGYPTIAN HIEROGLYPH O036A |
| U+13288 | 𓊈 | EGYPTIAN HIEROGLYPH O036C |
| U+13287 | 𓊇 | EGYPTIAN HIEROGLYPH O036B |
| U+13289 | 𓊉 | EGYPTIAN HIEROGLYPH O036D |
mirroring and rotation
| U+13440 | 𓑀 | EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY |
| U+FE00 | ︀ | VARIATION SELECTOR-1 | 90° rotation and expanding lost |
| U+FE01 | ︁ | VARIATION SELECTOR-2 | 180° rotation |
| U+FE02 | ︂ | VARIATION SELECTOR-3 | 270° rotation |
| U+FE03 | ︃ | VARIATION SELECTOR-4 | (around) 45° rotation |
| U+FE04 | ︄ | VARIATION SELECTOR-5 | (around) 135° rotation |
| U+FE05 | ︅ | VARIATION SELECTOR-6 | (around) 225° rotation |
| U+FE06 | ︆ | VARIATION SELECTOR-7 | (around) 315° rotation |
blank and lost signs
| U+13441 | 𓑁 | EGYPTIAN HIEROGLYPH FULL BLANK |
| U+13442 | 𓑂 | EGYPTIAN HIEROGLYPH HALF BLANK |
| U+13443 | 𓑃 | EGYPTIAN HIEROGLYPH LOST SIGN |
| U+13444 | 𓑄 | EGYPTIAN HIEROGLYPH HALF LOST SIGN |
| U+13445 | 𓑅 | EGYPTIAN HIEROGLYPH TALL LOST SIGN |
| U+13446 | 𓑆 | EGYPTIAN HIEROGLYPH WIDE LOST SIGN |
damage
| U+13447 | 𓑇 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START |
| U+13448 | 𓑈 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START |
| U+13449 | 𓑉 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START |
| U+1344A | 𓑊 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END |
| U+1344B | 𓑋 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP |
| U+1344C | 𓑌 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END |
| U+1344D | 𓑍 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP |
| U+1344E | 𓑎 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END |
| U+1344F | 𓑏 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END |
| U+13450 | 𓑐 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM |
| U+13451 | 𓑑 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM |
| U+13452 | 𓑒 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END |
| U+13453 | 𓑓 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END |
| U+13454 | 𓑔 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END |
| U+13455 | 𓑕 | EGYPTIAN HIEROGLYPH MODIFIER DAMAGED |
brackets
| U+005B | [ | LEFT SQUARE BRACKET |
| U+005D | ] | RIGHT SQUARE BRACKET |
| U+007B | { | LEFT CURLY BRACKET |
| U+007D | } | RIGHT CURLY BRACKET |
| U+27E6 | ⟦ | MATHEMATICAL LEFT WHITE SQUARE BRACKET |
| U+27E7 | ⟧ | MATHEMATICAL RIGHT WHITE SQUARE BRACKET |
| U+27E8 | ⟨ | MATHEMATICAL LEFT ANGLE BRACKET |
| U+27E9 | ⟩ | MATHEMATICAL RIGHT ANGLE BRACKET |
| U+2E22 | ⸢ | TOP LEFT HALF BRACKET |
| U+2E23 | ⸣ | TOP RIGHT HALF BRACKET |
Grammar
fragment ::= ( top-group )*
top-group ::= group | singleton
group ::= vertical-group | horizontal-group | basic-group
vertical-group ::= vertical-subgroup ( vertical-subgroup )+
vertical-subgroup ::= horizontal-group | basic-group
horizontal-group ::=
open-bracket horizontal-subgroup [ close-bracket ] ( [ open-bracket ] horizontal-subgroup [ close-bracket ] )* |
horizontal-subgroup close-bracket ( [ open-bracket ] horizontal-subgroup [ close-bracket ] )* |
horizontal-subgroup ( [ open-bracket ] horizontal-subgroup [ close-bracket ] )+
horizontal-subgroup ::= vertical-group | basic-group
open-bracket ::= [ | { | ⟦ | ⟨ | ⸢
close-bracket ::= ] | } | ⟩ | ⟧ | ⸣
basic-group ::= core-group | insert-group | placeholder | enclosure
insert-group ::= core-group insertion
insertion ::=
in-group [ in-group ] [ in-group ] [ in-group ] [ in-group ] [ in-group ] [ in-group ] |
in-group [ in-group ] [ in-group ] [ in-group ] [ in-group ] [ in-group ] |
in-group [ in-group ] [ in-group ] [ in-group ] [ in-group ] |
in-group [ in-group ] [ in-group ] [ in-group ] |
in-group [ in-group ] [ in-group ] |
in-group [ in-group ] |
in-group
in-group ::= vertical-group | horizontal-group | insert-group | core-group | placeholder | enclosure
core-group ::= flat-horizontal-group flat-vertical-group | literal
flat-horizontal-group ::= literal ( literal )+ | literal
flat-vertical-group ::= literal ( literal )+ | literal
literal ::= sign [ ︀ | ︁ | ︂ | ︃ | ︄ | ︅ | ︆ ] [ 𓑀 ] [ damaged ]
sign ::= 𓀀 | etc.
placeholder ::= 𓑁 | 𓑂 | ( 𓑃 | 𓑄 | 𓑅 | 𓑆 ) [ ︀ ]
enclosure ::=
[ plain-opening ] ( group )* [ plain-closing ] |
[ walled-opening ] ( group )* [ walled-closing ]
singleton ::= plain-opening | plain-closing | walled-opening | walled-closing
plain-opening ::= plain-opening-delimiter [ damaged ]
plain-closing ::= plain-closing-delimiter [ damaged ]
walled-opening ::= walled-opening-delimiter [ damaged ]
walled-closing ::= walled-closing-delimiter [ damaged ]
plain-opening-delimiter ::= 𓉘 | 𓉙 | 𓉚 | 𓍹 | 𓐯
plain-closing-delimiter ::= 𓉛 | 𓉜 | 𓉝 | 𓊂 | 𓍺 | 𓍻
walled-opening-delimiter ::= 𓊆 | 𓊈
walled-closing-delimiter ::= 𓊇 | 𓊉
damaged ::= 𓑇 | 𓑈 | 𓑉 | 𓑊 | 𓑋 | 𓑌 | 𓑍 | 𓑎 | 𓑏 | 𓑐 | 𓑑 | 𓑒 | 𓑓 | 𓑔 | 𓑕
Ambiguity in the grammar is resolved as follows:
- A plain-opening or walled-opening just before
or
is considered to be part of an enclosure
rather than a singleton.
- A plain-closing or walled-closing just after
or is considered to be part of an
enclosure rather than a singleton.
This can be achieved by lexical analysis with a longest-match strategy.
LALR(1) Grammar
An alternative formulation of the same syntax is given as LALR(1) grammar below,
for use with parser generators.
fragment ::= top-groups
top-groups ::= ε | group top-groups | singleton top-groups
groups ::= ε | group groups
group ::= vertical-group | horizontal-group | basic-group | literal
vertical-group ::= vertical-subgroup rest-vertical-group
opt-rest-vertical-group ::= ε | rest-vertical-group
rest-vertical-group :: vertical-subgroup opt-rest-vertical-group
bracketed-vertical-group :: vertical-subgroup rest-bracketed-vertical-group
opt-rest-bracketed-vertical-group ::= ε | rest-bracketed-vertical-group
rest-bracketed-vertical-group :: vertical-subgroup opt-rest-bracketed-vertical-group
bracketed-flat-vertical-group :: literal rest-bracketed-flat-vertical-group
rest-bracketed-flat-vertical-group :: literal rest-bracketed-flat-vertical-group | literal
vertical-subgroup ::= horizontal-group | basic-group | literal
horizontal-group ::=
horizontal-subgroup rest-horizontal-group |
literal rest-horizontal-group |
open-bracket horizontal-subgroup opt-close-bracket opt-rest-horizontal-group |
open-bracket literal opt-close-bracket opt-rest-horizontal-group |
horizontal-subgroup close-bracket opt-rest-horizontal-group |
literal close-bracket opt-rest-horizontal-group
opt-rest-horizontal-group ::= ε | rest-horizontal-group
rest-horizontal-group ::=
horizontal-subgroup opt-rest-horizontal-group |
literal opt-rest-horizontal-group |
open-bracket horizontal-subgroup opt-close-bracket opt-rest-horizontal-group |
open-bracket literal opt-close-bracket opt-rest-horizontal-group |
horizontal-subgroup close-bracket opt-rest-horizontal-group |
literal close-bracket opt-rest-horizontal-group
bracketed-horizontal-group ::=
horizontal-subgroup rest-bracketed-horizontal-group |
literal rest-bracketed-horizontal-group |
open-bracket horizontal-subgroup opt-close-bracket opt-rest-bracketed-horizontal-group |
open-bracket literal opt-close-bracket opt-rest-bracketed-horizontal-group |
horizontal-subgroup close-bracket opt-rest-bracketed-horizontal-group |
literal close-bracket opt-rest-bracketed-horizontal-group
opt-rest-bracketed-horizontal-group ::= | rest-bracketed-horizontal-group
rest-bracketed-horizontal-group ::=
horizontal-subgroup opt-rest-bracketed-horizontal-group |
literal opt-rest-bracketed-horizontal-group |
open-bracket horizontal-subgroup opt-close-bracket opt-rest-bracketed-horizontal-group |
open-bracket literal opt-close-bracket opt-rest-bracketed-horizontal-group |
horizontal-subgroup close-bracket opt-rest-bracketed-horizontal-group |
literal close-bracket opt-rest-bracketed-horizontal-group
bracketed-flat-horizontal-group ::= literal rest-bracketed-flat-horizontal-group
rest-bracketed-flat-horizontal-group :: literal rest-bracketed-flat-horizontal-group | literal
horizontal-subgroup ::= bracketed-vertical-group | basic-group
basic-group ::= core-group | insert-group | placeholder | enclosure
insert-group ::= core-group insertion | literal insertion
bracketed-insert-group ::= core-group insertion | literal insertion
insertion ::=
in-group opt-bs-ins opt-te-ins opt-be-ins opt-m-ins opt-t-ins opt-b-ins |
in-group opt-te-ins opt-be-ins opt-m-ins opt-t-ins opt-b-ins |
in-group opt-be-ins opt-m-ins opt-t-ins opt-b-ins |
in-group opt-m-ins opt-t-ins opt-b-ins |
in-group opt-t-ins opt-b-ins |
in-group opt-b-ins |
in-group
opt-bs-ins ::= ε | in-group
opt-te-ins ::= ε | in-group
opt-be-ins ::= ε | in-group
opt-m-ins ::= ε | in-group
opt-t-ins ::= ε | in-group
opt-b-ins ::= ε | in-group
in-group ::= bracketed-vertical-group | bracketed-horizontal-group | bracketed-insert-group | core-group | literal | placeholder | enclosure
core-group ::= flat-horizontal-group flat-vertical-group
flat-horizontal-group ::= bracketed-flat-horizontal-group | literal
flat-vertical-group ::= bracketed-flat-vertical-group | literal
opt-close-bracket ::= ε | close-bracket
literal ::= sign opt-vs opt-mirror opt-damaged
opt-vs ::= ε | vs
opt-mirror ::= ε | 𓑀
opt-damaged ::= ε | damaged
placeholder ::= 𓑁 | 𓑂 | 𓑃 opt-vs | 𓑄 opt-vs | 𓑅 opt-vs | 𓑆 opt-vs
enclosure ::= plain-open groups plain-close | walled-open groups walled-close
If there is a variation selector in a placeholder, then this must be ︀. This could be checked following initial lexical and syntactic analysis.
The following would typically be implemented by the lexical analyzer, again with a longest-match
strategy to disambiguate between a part of an enclosure and a singleton.
open-bracket ::= [ | { | ⟦ | ⟨ | ⸢
close-bracket ::= ] | } | ⟩ | ⟧ | ⸣
sign ::= 𓀀 | etc.
vs ::= ︀ | ︁ | ︂ | ︃ | ︄ | ︅ | ︆
plain-open ::= [ plain-opening-delimiter [ damaged ] ]
plain-close ::= [ plain-closing-delimiter [ damaged ] ]
walled-open ::= [ walled-opening-delimiter [ damaged ] ]
walled-close ::= [ walled-closing-delimiter [ damaged ] ]
singleton ::=
plain-opening-delimiter [ damaged ] |
plain-closing-delimiter [ damaged ] |
walled-opening-delimiter [ damaged ] |
walled-closing-delimiter [ damaged ]
plain-opening-delimiter ::= 𓉘 | 𓉙 | 𓉚 | 𓍹 | 𓐯
plain-closing-delimiter ::= 𓉛 | 𓉜 | 𓉝 | 𓊂 | 𓍺 | 𓍻
walled-opening-delimiter ::= 𓊆 | 𓊈
walled-closing-delimiter ::= 𓊇 | 𓊉
damaged ::= 𓑇 | 𓑈 | 𓑉 | 𓑊 | 𓑋 | 𓑌 | 𓑍 | 𓑎 | 𓑏 | 𓑐 | 𓑑 | 𓑒 | 𓑓 | 𓑔 | 𓑕
Links