Claude/wokelang ebnf grammar qoe vv#12
Merged
Merged
Conversation
Complete implementation of WokeLang with: Lexer (src/lexer/): - Token definitions for all keywords, operators, literals - Uses logos for fast tokenization - Handles comments, strings with escapes, numbers Parser (src/parser/): - Recursive descent parser - Full expression parsing with correct precedence - All statement types: remember, when/otherwise, repeat, attempt safely - Pattern matching with decide based on - Emote tags, consent blocks, gratitude declarations AST (src/ast/): - Complete type definitions for all language constructs - Spanned nodes for error reporting Interpreter (src/interpreter/): - Tree-walking interpreter - Scoped environments for variables - Built-in functions: print, len, toString, toInt - Consent system with interactive prompts - Pattern matching evaluation - All operators (arithmetic, comparison, logical) CLI (src/main.rs): - woke <file.woke> - run program - woke --tokenize <file> - show tokens - woke --parse <file> - show AST Examples: - examples/hello.woke - feature showcase - examples/demo.woke - runnable demo
REPL (src/repl.rs): - Interactive command-line interface with rustyline - Commands: :help, :quit, :clear, :reset, :load, :ast - Expression evaluation with automatic result printing - Start with `woke` or `woke --repl` WASM Compilation (src/codegen/): - Compile WokeLang to WebAssembly binary format - Uses wasm-encoder for proper WASM generation - Supports functions, expressions, loops, conditionals - Pattern matching compilation - CLI: `woke -c input.woke` outputs input.wasm Zig FFI (src/ffi/, zig/, include/): - C-compatible API for embedding WokeLang - Interpreter lifecycle: woke_interpreter_new/free - Code execution: woke_exec, woke_eval - Value operations: type checking, conversion, creation - Static library (libwokelang.a) and shared library (.so) - C header (include/wokelang.h) - Zig bindings (zig/wokelang.zig) with idiomatic wrapper - Example Zig program and build.zig Other: - examples/math.woke - math functions for WASM demo - Cargo.toml updated for cdylib/staticlib targets
Includes: - Project roadmap (ROADMAP.md) with version timeline through v1.0 - Wiki home page with table of contents - Getting Started guides: Installation, Hello World, Basic Syntax, REPL - Language Guide: Functions, Control Flow, Error Handling, Variables/Types - Core Concepts: Consent System, Gratitude, Emote Tags - Reference: CLI, Built-in Functions, Keywords, Operators, Language Spec - Internals: Architecture, Lexer, Parser, Interpreter, WASM, FFI - Tutorial: Building a CLI app
- Add Result types (Okay/Oops) with pattern matching support - Implement error propagation operator (?) for Result types - Add pattern matching destructuring with guard clauses - Implement module system with use/share keywords - Add new builtins: isOkay, isOops, getOkay, getOops - Update WASM compiler and FFI for new AST variants - Add example programs for Result types and modules
- Implement TypeChecker module with type inference - Support for basic types: Int, Float, String, Bool, Unit - Support for compound types: Array, Result, Maybe, Function - Implement unification algorithm for type constraints - Add built-in function type handling - Include comprehensive test suite for type checking
- Add async worker module with thread-based execution - Implement WorkerHandle, WorkerContext, WorkerPool - Add message passing: WorkerMessage enum with Value, Stop, Ping, etc. - Add cancellation tokens for task control - New lexer tokens: send, receive, channel, await, cancel, from - New AST nodes: SendMessage, ReceiveMessage, AwaitWorker, CancelWorker - Update parser for new worker syntax - Update interpreter with worker statement handling - Update WASM codegen and typechecker for new statements - Add worker tests (4 new tests) - Add workers.woke example demonstrating worker system - Update ROADMAP.md with Phase 2 completion status
…consent storage - Add CapabilityRegistry with support for FileRead, FileWrite, Execute, Network, Environment, Process, SystemInfo, Crypto, Clipboard, Notify capabilities - Implement wildcard capability matching (e.g., file:read:* grants all file reads) - Add audit logging for all capability requests, grants, denials, and revocations - Create ConsentStore for persistent storage of consent decisions - Support consent durations: Session, Day, Week, Forever, Once - Add security.woke example demonstrating superpower declarations
Add comprehensive standard library with the following modules: - std.math: Mathematical functions (abs, sqrt, pow, sin, cos, tan, floor, ceil, round, min, max, random, pi, e) - std.io: File I/O with consent-based access control (readFile, writeFile, appendFile, exists, delete, listDir, createDir, readLine) - std.json: JSON parsing and generation (parse, stringify, get, set) - std.time: Date/time handling (now, timestamp, format, parse, sleep, elapsed) - std.net: HTTP networking with consent (httpGet, httpPost, download) Key features: - StdlibRegistry for function registration and lookup - Capability-based security integration for I/O and network operations - Simple JSON parser/serializer without external dependencies - Basic HTTP client using TCP sockets (no TLS for now) - Elapsed timer with thread-local storage - Add Record variant to Value for JSON objects Includes stdlib_demo.woke example demonstrating all modules.
hyperpolymath
added a commit
that referenced
this pull request
Mar 22, 2026
All 13 sorry proofs are BLOCKED by incomplete Step relation in the small-step operational semantics. Each sorry is now numbered (#1-#12) with the exact missing Step constructor specified inline, plus a summary table in the file header. No sorry can be resolved without first extending the Step inductive type. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.