@artemis-lang/interpreter
v0.3.4
Published
The artemis language interpreter
Maintainers
Readme
@artemis-lang/interpreter
Code interpreter and execution engine for the Artemis programming language.
Installation
npm install @artemis-lang/interpreterUsage
import Interpreter from '@artemis-lang/interpreter';
// Interpret code
Interpreter.interpret('(println "Hello, World!")');
// Get AST
const ast = Interpreter.ast('(def x 42)');
console.log(ast);
// Get tokens
const tokens = Interpreter.tokens('(+ 1 2)');
console.log(tokens);Features
- Code Execution: Interprets and executes Artemis code
- AST Generation: Converts code to Abstract Syntax Tree
- Tokenization: Lexical analysis and token generation
- Built-in Functions: 80+ native functions
- JavaScript Interop: Execute JavaScript code within Artemis
- Global Access: Access Node.js globals and environment
Built-in Functions
The interpreter includes comprehensive built-in functions:
- I/O: print, println, log
- Type Conversion: int
- List Operations: push, pop, shift, unshift, slice, splice, concat, reverse, sort, join, map, filter, reduce
- String Operations: split, trim, replace, toUpperCase, toLowerCase, repeat
- Map Operations: get, set, has, del, keys, values
- File I/O: readFile, writeFile
- Math: sqrt, and access to Math object
- Assertions: assert, assertEq, assertGt, assertLt, and more
API
Interpreter.interpret(code: string)
Interprets and executes Artemis code.
Interpreter.interpret('(def x 10) (println x)');
// Output: 10Interpreter.ast(code: string)
Generates an Abstract Syntax Tree from the code.
const ast = Interpreter.ast('(+ 1 2)');
// Returns AST objectInterpreter.tokens(code: string)
Generates tokens from the code.
const tokens = Interpreter.tokens('(def x 42)');
// Returns array of tokensVersion
Current version: 0.3.4
Changes in v0.3.4
- Fixed while loop variable scoping
- Fixed empty string handling in Map operations
- Added Math object to global environment
- Fixed Array get() function
- Improved error handling
Documentation
For complete language documentation, see the main README.
