module
dev.fuzz
local Grammar = require "ion7.grammar"
local g = Grammar.from_enum("color", { "red", "green", "blue" })
local samples, seed = Grammar.fuzz(g, { count = 10, seed = 42 })
-- samples = { "green", "red", "blue", "red", ... }
-- Validate before using with the model
local ok, err = Grammar.fuzz_validate(g)
assert(ok, err)
Functions
Fuzzer.fuzz
Generate random valid strings from a grammar.
Fuzzer.fuzz(grammar, opts)
grammaranyGrammar_obj or Builder.
optstable?
→ tableArray of generated strings.
→ numberThe seed used (for reproduction).
Fuzzer.validate
Check that a grammar can produce non-empty valid strings.
Fuzzer.validate(grammar, opts)
grammarany
optstable?Same as fuzz(), plus opts.allow_empty (boolean).
→ booleanok
→ string?err
Fuzzer.one
Generate exactly one random valid string.
Fuzzer.one(grammar, opts)
grammarany
optstable?{ seed, max_depth, max_rep, root }
→ string