How nitrosaccharose/mini-rust-interpreter works
Mini Rust Interpreter accepts an expression in the Vue interface, sends it to a local Rust HTTP server, and displays the server’s result. The backend scans input into tokens, builds an AST, and evaluates it; assignments update variable memory, while the API returns a value only for expressions. The README describes a simple interpreter API, and the sampled source confirms arithmetic, assignments, variables, and trigonometric/logarithmic operators. Broader control-flow tokens exist, but their execution is not established by the sampled implementation.
Main entry points: main.rs TCP HTTP server · ast_builder.rs AST builder · request.js HTTP client · App.vue Expression UI
Components 12
Vue interface
- Vue mount
front_vue/src/main.js - Expression UI
front_vue/src/App.vue - HTTP client
front_vue/src/request.js
HTTP API
- TCP HTTP server
backend_rust/src/main.rs
Interpreter runtime
- Scanner
backend_rust/src/scanner.rs - Token model
backend_rust/src/token.rs - Token types
backend_rust/src/token_type.rs - AST builder
backend_rust/src/ast_builder.rs - AST nodes
backend_rust/src/ast.rs - Evaluator
backend_rust/src/actuator.rs - Variable memory
backend_rust/src/actuator.rs
Other components
- User
Connections 16
- User → Expression UI: enters expression
- Vue mount → Expression UI: mounts app
- Expression UI → HTTP client: sends input
- HTTP client → TCP HTTP server: HTTP request
- TCP HTTP server → Scanner: scans input
- Scanner → Token model: creates tokens
- Scanner → Token types: uses kinds
- TCP HTTP server → AST builder: passes tokens
- AST builder → Token model: reads tokens
- AST builder → Token types: checks kinds
- AST builder → AST nodes: builds nodes
- TCP HTTP server → Evaluator: passes AST
- Evaluator → AST nodes: evaluates tree
- Evaluator → Variable memory: reads or writes
- TCP HTTP server → HTTP client: returns JSON
- HTTP client → Expression UI: delivers result