Commit graph

10 commits

Author SHA1 Message Date
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