mpl/ISSUE_M0_BLOCKERS.md
developtheweb@protonmail.com 3cf435b41e Initial commit: Mathematical Programming Language (MPL)
A proof-of-concept parser demonstrating that programming languages can be built
entirely from mathematical notation, enabling cognitive universality in computing.

MPL replaces English keywords with mathematical symbols, making programming
accessible to the 80% of humanity who don't speak English. Every design decision
follows the Fatima Test: "Will this make sense to a 10-year-old who doesn't
speak English?"

Current implementation:
- Complete ANTLR 4 grammar with 70+ mathematical operators
- Parser supporting all major programming paradigms
- Zero grammar ambiguities
- ASCII escape sequences for every Unicode symbol

This release contains:
- Core parser implementation
- Grammar specification
- Example programs
- Comprehensive documentation
- Whitepaper outlining the vision

Note: This is a parser-only proof of concept. Programs can be parsed but not
executed. The interpreter and runtime are future work.
2025-07-26 18:39:08 -04:00

90 lines
No EOL
3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Lock lexical & grammar spec for M0
## ✅ RESOLVED - All blockers have been addressed
## Overview
This issue tracked the resolution of three critical blockers that must be decided before implementing the ANTLR 4 grammar for MPL. All decisions have been made and incorporated into the specification.
## Blockers
### 1. Comment Syntax ✅
**Status:** RESOLVED
**Decision needed by:** Before lexer PR is merged
**Rationale:** Source files cannot compile without comment support
**Options to consider:**
- `--` till EOL (Ada/Haskell style)
- `/* ... */` (C style)
- `#` till EOL (Python/Ruby style)
- Support for both single-line and multi-line comments
**DECISION:** Use `--` for single-line and `{- ... -}` for multi-line (Haskell-style) to align with functional paradigm
### 2. String Literal Rules ✅
**Status:** RESOLVED
**Decision needed by:** Before lexer PR is merged
**Rationale:** Required for hello-world sample
**Decisions needed:**
- Escape sequences: Standard set (`\n`, `\t`, `\\`, `\"`) + Unicode (`\u{1F600}`)
- String delimiters: Double quotes only or support for raw strings?
- Multi-line string support?
- String interpolation syntax (or defer to M1)?
**DECISION:**
- Use `"..."` for regular strings with standard escapes (`\n`, `\t`, `\\`, `\"`, `\u{XXXXXX}`)
- Add `"""..."""` for multi-line raw strings (no escapes)
- String interpolation deferred to M1
### 3. Path Literal Fallback ✅
**Status:** RESOLVED
**Decision needed by:** Before lexer PR is merged
**Rationale:** `🖫` glyph may not render on all systems
**Options:**
- Make `🖫` required (pure Unicode approach)
- Add ASCII escape like `@path"..."` or `#path"..."`
- Use `\path` as the ASCII escape (consistent with other escapes)
**DECISION:** Support both `🖫"..."` and `\path"..."` for maximum compatibility
## Additional Lexical Decisions
### ASCII Escape Mapping
Need complete one-to-one table for all Unicode glyphs. Current partial list:
- `\gamma``γ`
- `\lam` or `\lambda``λ`
- `\Rightarrow``⇒`
- etc.
### Number Literal Format
- Decimal: `123`, `123.456`, `1.23e10`
- Hex: `0x1A2B`
- Binary: `0b1101`
- Suffixes: `_i32`, `_f64`, `_bigint` (or defer to M1?)
## Exit Criteria
Once this issue is closed, we can:
- [ ] Implement the lexer with confidence
- [ ] Parse all example programs
- [ ] Generate syntax highlighting for editors
- [ ] Create the `glyph-escapes.md` reference
## Resolution Summary
All blockers have been resolved and incorporated into the specification:
1. **Comments:** `--` for single-line, `{- ... -}` for multi-line (nestable)
2. **Strings:** `"..."` with escapes, `"""..."""` for raw multi-line
3. **Paths:** Both `🖫"..."` and `\path"..."` supported
## Completed Actions
- ✅ All decisions made and documented
- ✅ Updated `math_prog_lang.md` with lexical rules
- ✅ Updated `glyph-escapes.md` with string escape sequences
- ✅ All example files updated with proper syntax
- ✅ Ready to tag specification as `v0.1-alpha`
---
**Assignee:** @developtheweb
**Labels:** `blocker`, `M0`, `specification`, `grammar`