Commit graph

22 commits

Author SHA1 Message Date
developtheweb
2d1d17899a Record ratified rulings 2026-07-09 23:25:01 -04:00
developtheweb
ea66a2abda Gate CI on ratified conformance 2026-07-09 19:21:13 -04:00
developtheweb
bc298b528e Add differential fuzzer 2026-07-09 19:18:51 -04:00
developtheweb
42ade676db Add coverage corpus 2026-07-09 18:44:33 -04:00
developtheweb
6f1db6de95 Add conformance harness 2026-07-09 18:40:16 -04:00
developtheweb
5e984c6d38 Add ParseCheck CLI 2026-07-09 18:38:37 -04:00
developtheweb
94f9ba68bd State that the M0 core runs 2026-07-09 18:13:16 -04:00
developtheweb
e0dfbb4ec6 Run interpreter tests in CI 2026-07-09 18:13:04 -04:00
developtheweb
d9dd032441 Add interpreter test suite 2026-07-09 18:13:04 -04:00
developtheweb
f972046318 Add browser interpreter 2026-07-09 18:13:04 -04:00
developtheweb
468a8045c7 Sync all reference docs with the grammar
- precedence.csv regenerated to the actual 14-level chain (postfix and
  prefix levels, guarded alternatives, definition vs assignment)
- glyph-escapes.md regenerated from the lexer: 73 glyphs, exactly one
  ASCII escape each, verified code points; M1-deferred symbols listed
  separately; add \middot so every glyph has an escape
- math_prog_lang.md: M0/M1 symbol split, canonical handler arrow, one-role
  semicolon, real precedence table and brace-disambiguation rules; the ten
  example programs are now embedded verbatim and CI-parsed
- Whitepaper (md + tex + appendices): every mpl code block parses or is
  re-fenced as an explicitly-labelled M1+ design sketch; symbol tables
  replaced by a pointer to glyph-escapes.md; unbuilt tooling and unmeasured
  claims reworded as planned/envisioned
- docs/ARCHITECTURE.md: status preamble, real grammar excerpt, planned
  sections labelled as such
- DocumentationTest now also covers math_prog_lang.md and the whitepaper
- CHANGELOG and DECISIONS.md updated
2026-07-09 03:19:43 -04:00
developtheweb
96002ec1bf Make every README claim verifiable and every code block parse
- Rewrite all mpl code blocks in canonical syntax: ✎ output, guarded
  alternatives, f(a, b) calls, -- comments; remove 📤, ternary ?:, %, ∑,
  √, ², |x|, ranges, indexing/slicing and where (deferred to M1, and the
  README now says so explicitly)
- Add DocumentationTest: extracts every fenced mpl block from README.md
  and asserts it parses, preventing future drift
- Replace '1000+ test cases' and 'zero ambiguities' with claims CI
  actually checks (zero ANTLR errors/warnings, 10/10 examples, 200+
  syntax assertions)
- Remove unmeasured performance metrics section
- Mark type checking, code generation and non-escape input methods as
  planned/envisioned rather than existing
- Fix clone URL (github.com/developtheweb/mpl); replace the fictional
  Discord link with GitHub issues
2026-07-09 03:03:52 -04:00
developtheweb
b9a232667e Add Gradle wrapper and CI workflow
- Commit gradlew, gradlew.bat and gradle/wrapper so ./gradlew build works
  from a fresh clone as the README instructs (Gradle 8.7)
- Fix .gitignore rule order: *.jar came after the wrapper-jar negation and
  the last matching rule wins, so the wrapper jar was still ignored
- CI on push and pull request: build (grammar with -Werror), test, and
  parseExamples
2026-07-09 02:57:19 -04:00
developtheweb
acb98ae145 Fix examples so all ten parse
- 03: handler clause uses the canonical arrow (↯e ⟹ …, was ↯e ⇒ …)
- 05: give sin/cos a real placeholder body (⊥) — a comment-only body is
  empty and cannot parse
- Run parseExamples on the test runtime classpath; ParseExamples lives in
  the test source set and was never found on main.runtimeClasspath

./gradlew parseExamples now reports 10/10 PASS
2026-07-09 02:54:10 -04:00
developtheweb
f076a1dade Adopt canonical call syntax and wire in orphaned tokens
- Function calls are f(a, b) via a postfix argument list; juxtaposition
  application removed; nullary calls f() supported
- Wire DEFINITION (x ≜ e), ALLOC/RELEASE postfix (r ⊕ / r ⊖), channel
  operations (⇀_ch e / ↽_ch e), and qualified module access (M‧f)
- Delete tokens with no rule and no example: QUERY (?), EXISTS, IMPORT,
  ARROW, DOT; delete the unary ? prefix operator
- Canonical handler clause: ↯pattern ⟹ expr (pattern is an identifier or
  a string); clauses separated by semicolons
- SEMICOLON has one role: sequence separator with optional trailing use
- Disambiguate braces structurally: record ({a: e}), set ({a, b}), block
- IDENTIFIER no longer allows a leading underscore, so subscripts such as
  ⌉_db_lock and ↽_socket lex as UNDERSCORE + IDENTIFIER
- Add '/' as ASCII alias of ÷; add unary minus; pathLiteral accepts
  🖫identifier as well as 🖫"…"
- Exactly one ASCII escape per glyph (drop \lam, \gets, \ne, \le, \ge,
  \vee, \wedge, \cup alias forms, \N, \Z, \Q, \R, \C, \B)
- Replace deprecated ANTLRInputStream with CharStreams in the test
  harness: it fed UTF-16 units and could never tokenize the
  supplementary-plane glyphs 𝔹, 𝓜 and 🖫
- Update LexerTest/ParserTest to canonical syntax; add coverage for
  subscript lexing, channels, resources, module access, unary minus,
  nullary calls, and negative tests for juxtaposition and the ternary
2026-07-09 02:51:12 -04:00
developtheweb
5230273ab1 Fix grammar compilation errors and latent build breakers
- Restructure conditionals into a condExpr precedence level and exception
  handling into a postfix rule, removing the mutual left recursion through
  expr/atomExpr (ANTLR error 119)
- Rewrite pattern as patternAtom (COMMA patternAtom)*, removing left
  recursion with an empty-matchable tail (ANTLR error 148)
- Drop the LAMBDA token fully shadowed by LAMBDA_VAR (warning 184)
- Give \Rightarrow to EXPORT only; IMPLIES keeps \implies (warning 184)
- Remove @header package declaration that duplicated the -package argument
  and made the generated parser uncompilable
- Point the ANTLR source set at src/main/antlr4 so Gradle actually finds
  the grammar
- Treat ANTLR warnings as errors (-Werror)
- Record decisions in DECISIONS.md
2026-07-09 02:44:14 -04:00
developtheweb@protonmail.com
590762cad3 Remove test file 2025-07-26 22:04:23 -04:00
developtheweb@protonmail.com
ccb9c1cde7 Test new ruleset 2025-07-26 22:04:11 -04:00
developtheweb@protonmail.com
fa89dafd13 Replace non-existent images with ASCII diagrams
- Removed reference to fatima-test.png
- Replaced transformation-pipeline.gif with ASCII flow diagram
- Replaced input-methods.png with ASCII table showing input methods
- Removed reference to grammar-railroad.svg
2025-07-26 21:30:33 -04:00
developtheweb@protonmail.com
be1f6394fc Add CODEOWNERS file for repository protection 2025-07-26 19:47:46 -04:00
developtheweb@protonmail.com
eb2cdb1c91 Remove fictional donation links from FUNDING.yml 2025-07-26 18:45:34 -04:00
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