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.
3 KiB
🚀 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
\pathas 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→γ\lamor\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.mdreference
Resolution Summary
All blockers have been resolved and incorporated into the specification:
- Comments:
--for single-line,{- ... -}for multi-line (nestable) - Strings:
"..."with escapes,"""..."""for raw multi-line - Paths: Both
🖫"..."and\path"..."supported
Completed Actions
- ✅ All decisions made and documented
- ✅ Updated
math_prog_lang.mdwith lexical rules - ✅ Updated
glyph-escapes.mdwith 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