2.7 KiB
2.7 KiB
Jeene
Jeene is a compiled programming language designed for extensibility through macros and featuring a powerful type system.
Features
Current Features
- Pratt parser with operator precedence
- Support for arithmetic expressions, arrays, function calls, member access, and assignments
- Extensible grammar system
- Proper error reporting with line/column information
- Advanced type system with support for:
- Interfaces and custom types
- Union and intersection types
- Callable types
- Reference types
- Variance and uniqueness constraints
- Abstract types (containers, named types, shapes)
Planned Features
- Full compiler implementation
- Semantic analysis
- Macro system for language extensibility
- Extension/plugin architecture
- Enhanced parsing for control structures, classes, and modules
- Type inference and checking
- Code generation to multiple targets (JavaScript, WebAssembly, etc.)
- Runtime environment with garbage collection
- Standard library with common utilities
Usage
import { Grammar, Parser, Tokenizer } from './src/compiler';
const grammar = Grammar.createDefault();
const tokenizer = new Tokenizer(grammar);
const parser = new Parser(tokenizer, grammar);
const ast = parser.parse('1 + 2 * 3');
console.log(ast);
Supported Syntax
- Literals: numbers, strings, identifiers
- Arithmetic:
+,-,*,/ - Arrays:
[1, 2, 3] - Function calls:
func(1, 2) - Member access:
a.b.c - Assignment:
x = 42 - Grouping:
(1 + 2) - Object literals:
{ key: value } - Variable declarations with types:
const name: str = 'value' - Object instantiation:
new ClassName(args)
Installation
To install dependencies:
bun install
Development
To run the parser on the example file:
bun run test/example.ts
Project Structure
src/compiler/: Core compiler components (AST, parser, tokenizer, grammar)src/core/: Type system implementationsrc/grammars/: Grammar definitionstest/: Example files and test scripts
Roadmap
- Complete the compiler pipeline (lexer → parser → type checker → code generator)
- Implement macro system for compile-time metaprogramming
- Build extension/plugin system for language customization
- Add support for advanced language constructs (classes, modules, generics)
- Develop a standard library
- Create a runtime environment
- Add tooling (debugger, profiler, package manager)
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
License
This project is licensed under the UNLICENSE license.
This project was created using bun init in bun v1.3.5. Bun is a fast all-in-one JavaScript runtime.