Skip to content

v3.eval

fn create #

fn create() Eval

create returns a capturing evaluator convenient for tests.

fn new #

fn new(prefs_ &pref.Preferences) Eval

new returns a new evaluator configured for direct execution.

fn FlowKind.from #

fn FlowKind.from[W](input W) !FlowKind

type Value #

type Value = ArrayValue
	| EnumValue
	| FnValue
	| MapValue
	| ModuleValue
	| RangeValue
	| StructValue
	| SumValue
	| TupleValue
	| TypeValue
	| VoidValue
	| bool
	| f64
	| i64
	| string

struct ArrayValue #

struct ArrayValue {
pub mut:
	elem_type_name string
	values         []Value
}

struct EnumValue #

struct EnumValue {
pub:
	type_name string
	value     i64
}

struct Eval #

struct Eval {
pub mut:
	capture_output bool
	prefs          pref.Preferences
mut:
	a                 &flat.FlatAst = unsafe { nil }
	stdout_data       string
	stderr_data       string
	functions         map[string]map[string]FunctionDef
	consts            map[string]map[string]ConstEntry
	globals           map[string]map[string]Value
	global_types      map[string]map[string]string
	global_inits      []GlobalEntry
	enum_inits        []EnumInitEntry
	implicit_main     []TopLevelStmt
	structs           map[string]StructInfo
	enum_fields       map[string][]string
	sum_types         map[string][]string
	type_aliases      map[string]TypeAliasInfo
	type_names        map[string]map[string]bool
	module_imports    map[string][]string
	module_order      []string
	file_import_alias map[string]map[string]string
	modules           map[string]bool
	scopes            []ScopeFrame
	call_stack        []CallFrame
}

Eval interprets v3 flat AST nodes directly for a practical subset of V.

fn (Eval) stdout #

fn (e &Eval) stdout() string

stdout returns the captured stdout stream.

fn (Eval) stderr #

fn (e &Eval) stderr() string

stderr returns the captured stderr stream.

fn (Eval) run_text #

fn (mut e Eval) run_text(code string) ![]Value

run_text parses and executes a single V source string.

fn (Eval) run_files #

fn (mut e Eval) run_files(a &flat.FlatAst) ![]Value

run_files executes parsed flat AST files and invokes main.main.

struct FnValue #

struct FnValue {
	node          flat.NodeId
	module_name   string
	file_name     string
	captures      map[string]Value
	capture_types map[string]string
}

struct MapEntry #

struct MapEntry {
pub:
	key Value
pub mut:
	value Value
}

struct MapValue #

struct MapValue {
pub mut:
	key_type_name   string
	value_type_name string
	default_value   Value
	entries         []MapEntry
}

struct ModuleValue #

struct ModuleValue {
pub:
	name string
}

struct RangeValue #

struct RangeValue {
pub:
	start     i64
	end       i64
	inclusive bool
}

struct StructValue #

struct StructValue {
pub:
	type_name string
pub mut:
	fields map[string]Value
}

struct SumValue #

struct SumValue {
pub:
	type_name    string
	variant_name string
pub mut:
	payload Value
}

struct TupleValue #

struct TupleValue {
pub:
	values []Value
}

struct TypeValue #

struct TypeValue {
pub:
	name string
}

struct VoidValue #

struct VoidValue {}