# MemeLingua v1.5 Spec

## Scope
MemeLingua is a 100-root emoji-first language with fixed word order, productive compounding, and no punctuation-based grammar. Spaces separate words or phrase chunks. Line breaks separate clauses or frames. GitHub emoji shortcodes such as `:raising_hand:` are a tooling representation only; the colons inside shortcode names are not MemeLingua grammar.

## Surface Form
- The actual written form uses roots, compounds, spaces, and line breaks.
- Spaces separate root words, phrase chunks, or compounds.
- A line break marks a clause break or frame break.
- No punctuation marks are grammatical operators. Do not use brackets, arrows, slashes, colons, commas, or parentheses to mark roles or scope.
- Documentation may show shortcode spellings for stability, but the shortcode punctuation is not part of the language.

## Clause Order
- Basic clause order is `SUBJECT PREDICATE COMPLEMENT`.
- The first root or compound is normally the subject.
- The next root or compound is the predicate: an action, state, property, relation, or modal.
- Everything after the predicate is read as the object, complement, or relation phrase.
- A root in predicate position is applied as the event, state, or property of that root. Roots do not inflect for tense, person, number, or English agreement.
- Example: `:raising_hand: :magnet: :hamburger:` = SELF WANT FOOD, naturally "I want food."
- Example: `:bust_in_silhouette: :fearful: :fire:` = PERSON FEAR FIRE, naturally "the person fears fire."

## Clause Frames
- A frame root can appear before a clause.
- `:traffic_light:` before a clause marks IF / condition.
- Time compounds before a clause mark the time frame for that clause.
- When a frame has its own short condition or state, put it on its own line and put the result clause on the next line.
- Example:
```
:traffic_light: :index_pointing_at_the_viewer: :eyes: :fire:
:index_pointing_at_the_viewer: :ring_buoy: :raising_hand:
```
= if you see fire, help me.
- Example:
```
:alarm_clock::point_right: :white_check_mark:
:raising_hand: :tada:
```
= after done, I celebrate.

## Number Literals
- Arabic numerals `0`-`9` and standard multi-digit numerals are literal number tokens, not emoji roots.
- Numerals can stand alone (`1`, `2`, `100`) or modify an adjacent concept (`2 :bust_in_silhouette:` = two people).
- Number literals do not count against the root inventory.

## Core Relations
- :point_right: **TO / DESTINATION / RECIPIENT**
- :point_left: **FROM / SOURCE / ORIGIN**
- :handshake: **WITH / accompaniment / instrument phrase**
- :inbox_tray: **IN / INSIDE**
- :point_up_2: **ON / surface contact / attached**
- :paperclip: **OF / possession / association / component**
- :dart: **FOR / purpose / goal / beneficiary**
- :thought_balloon: **ABOUT / topic**

Relation roots attach the thing before them to the thing after them:
- `:hamburger: :inbox_tray: :bucket:` = food in container.
- `:runner: :point_right: :round_pushpin:` = move to place.
- `:wrench: :dart: :hammer_and_wrench:` = tool for doing.

## Time
Time is expressed with compounds using :alarm_clock:
- `:alarm_clock::point_left:` BEFORE / earlier / past
- `:alarm_clock::point_right:` AFTER / later / future / then
- `:alarm_clock::point_down:` NOW / this time / right now
- Time compounds before a clause modify that clause: `:alarm_clock::point_down: :index_pointing_at_the_viewer: :sleeping:` = now you sleep.
- A time compound plus a state on its own line modifies the next line: `:alarm_clock::point_right: :white_check_mark:` followed by `:raising_hand: :tada:` = after done, I celebrate.

## Modifiers
- Modifier roots come before the thing they modify.
- `:no_entry_sign: :magnet:` = not want.
- `:question:` before a clause marks a question about that clause.
- `:rotating_light:` before a clause marks urgency or alert framing.
- `:crossed_fingers:` before an event phrase marks CAN / possibility.

## Compounds
- Compounds are built by placing roots directly together as one chunk.
- In emoji form, tight compounds are written without spaces.
- In shortcode form, tight compounds are written as adjacent shortcodes with no space.
- Compounds are parsed by longest documented match first.
- Example: `:loud_sound::page_facing_up:` = music / sound content.
- Example: `:straight_ruler::point_up_2:` = height / vertical measure.

## Doubling
Identical doubling is productive and typed:
- Entities doubled = plural/collective (`:bust_in_silhouette::bust_in_silhouette:` people)
- Events doubled = repeated/ongoing (`:runner::runner:` keep moving)
- Properties doubled = intense (`:sparkles::sparkles:` very good)

## Direction Compounds
Pointer compound parsing uses longest match:
- `:point_left::point_left:` LEFT
- `:point_right::point_right:` RIGHT
- `:point_left::point_right:` ACROSS/APART
- `:point_right::point_left:` BETWEEN/CENTER
- `:point_up_2::point_up_2:` UP/ABOVE

## Key Categories
- :loud_sound: **SOUND**; `:loud_sound::page_facing_up:` = music
- :speaking_head: **SPEAK** (produce content)
- :page_facing_up: **CONTENT** (a message, document, statement)
- :pray: **POLITE/GRATITUDE/ACK** (position-dependent)
- :control_knobs: **CHOOSE/DECIDE**
- :ok_hand: **AGREE/COMMIT**
- :traffic_light: **IF**
- :bulb: **REASON / BECAUSE**
- :open_hands: **TRANSFER / give / take**
- :world_map: **ROUTE / PATH / THROUGH**
- :joy: **LAUGH/FUN**, :sob: **SAD/CRY**, :blush: **HAPPY**
- :rotating_light: **URGENT/ALERT**, :star: **IMPORTANT/SPECIAL**, :tada: **CELEBRATE**, :zap: **STRONG/EFFORT**

## Canonical Molecule Patterns
- `:label:` introduces a name or literal label. The label text follows the root in ordinary writing.
- `:paperclip:` creates association/component compounds such as part-of, owner-of, or made-of.
- Selector roots come before the selected thing: `:art: :fire:` color of fire; `:large_blue_diamond: :bucket:` shape of container; `:straight_ruler: :straight_ruler::point_up_2:` measure height.
- Compressed concepts: `:straight_ruler::point_up_2:` height; `:runner::heavy_plus_sign:` speed/fast; `:runner::heavy_minus_sign:` slow; `:standing_person::point_up_2:` head/upper body; `:bucket::point_up_2:` cover/lid; `:package::jigsaw:` material/component stuff.
- Connection targets use TO/destination: `:link: :wrench: :point_right: :package:` = connect tool to thing.
- Directional transfer: `:open_hands::point_right:` GIVE / transfer to a recipient; `:open_hands::point_left:` TAKE / transfer from a source.
- Taste compounds use MOUTH plus a quality: `:lips::no_entry_sign:` bitter/bad taste; `:lips::sparkles:` sweet/good taste; `:lips::fire:` spicy/hot taste; `:lips::droplet:` drink.

## Example
If you choose this, I will go there later.
```
:traffic_light: :index_pointing_at_the_viewer: :control_knobs: :point_down:
:alarm_clock::point_right: :raising_hand: :runner: :point_right: :round_pushpin:
```
