The programming language where globals are truly global.
The Babble server, web interface, and node-based interpreter (in progress).
A Clojure-like LISP where define adds to the standard library, available to all other programmers immediately.
The project consists of four main components:
- Language: PEG.js grammar definition and executor
- Location:
/Parser/ - Files:
babble.pegjs- Grammar definitionbabble.parser.js- Generated parserbabble.executor.js- Runtime executorbabble.analyzer.js- AST analyzerbabble.code_emitter.js- AST to code converter
- Language: C# (.NET 9.0)
- Location:
/Server/ - Description: ASP.NET Core web application providing Babble execution environment and API
- Features:
- API for lexicon, used by both Server and Client
- Database for lexicon storage
- Web-based console interface
- Language: Node.js
- Location:
/Client/ - Description: Command line tool for running Babble code locally = NOTE: Still very much in progress, basically not functional atm
- Features:
- Command-line execution environment
- Parser integration
- Communicates with Babble Server to resolve terms and create new ones
- Language: ClojureScript
- Location:
/ClojureExecutor/ - Description: ClojureScript-based execution engine compiled to JavaScript
Warning
NOTE: If you make changes to the pegjs, you have to do a full build
- .NET 9.0 SDK
- Node.js (for client and ClojureScript executor)
- Java JDK 11+ (for ClojureScript compilation)
- Clojure CLI tools (optional, for ClojureScript development)
- Build and run the server:
cd Server dotnet run - Access the web interface:
Open your browser to
https://localhost:5043(or the port shown in terminal)
-
Install dependencies:
cd Client npm install -
Build entire solution:
# Build entire solution dotnet build Babble.sln # Run specific project dotnet run --project Server/Babble.csproj
The compiled JavaScript will be output to Server/wwwroot/executor/ and automatically served by the server.
The ClojureScript executor is automatically included in the main index.html page and provides safe, sandboxed ClojureScript evaluation accessible via babble.core.eval_clojure_safe().
MIT License - see LICENSE file for details.
Daniel Temkin - https://danieltemkin.com/Esolangs