ion7-grammar / dev.fuzz

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