How hen-mi/sunflower works
Sunflower is a small dynamically typed scripting language. Its demonstrated workflow reads the example program, tokenizes it, parses tokens into statement and expression ASTs, then evaluates that AST using runtime environments and callable functions; print statements write results to the console. The README documents declarations, expressions, control flow, functions, and returns, which are handled across parsing and evaluation. The resolver exists as a separate scope-analysis component, but the sampled entry point does not invoke it. Runtime wiring is based on sampled source; broader feature coverage follows the README.
Main entry points: Evaluator.cpp Evaluator · main.cpp Program Entry · Parser.cpp Parser · Lexer.cpp Tokenizer
Components 13
Language Front End
- Program Entry
src/main.cpp - Source Text
- Tokenizer
src/Lexer.cpp - Parser
src/Parser.cpp
Syntax Model
- Statement AST
src/AST/Statements.h - Expression AST
src/AST/Expressions.h
Runtime
- Evaluator
src/Evaluator.cpp - Environments
src/Environment.cpp - Function Calls
src/Callable.cpp - Scope Resolver
src/Resolver.cpp
Runtime Support
- File Utilities
src/Sunflower.cpp
Other components
- Program Runner
- Console Output
Connections 13
- Program Runner → Program Entry: runs
- Program Entry → File Utilities: reads source
- File Utilities → Source Text: returns text
- Program Entry → Tokenizer: tokenizes text
- Tokenizer → Parser: passes tokens
- Parser → Statement AST: builds statements
- Parser → Expression AST: builds expressions
- Program Entry → Evaluator: runs AST
- Evaluator → Statement AST: visits statements
- Evaluator → Expression AST: evaluates expressions
- Evaluator → Environments: reads and updates
- Evaluator → Function Calls: invokes functions
- Evaluator → Console Output: prints values