Recursive-descent parser for the approval-script grammar (PRD §5).
parse/2 returns {:ok, %Script{}} or {:error, [%Error{}]} — parse
errors are a single-element list; static checks may report several.
Nothing partially parsed is ever returned (R5.8).
Summary
Functions
@spec parse( String.t(), keyword() ) :: {:ok, GenAI.Approval.Script.t()} | {:error, [GenAI.Approval.Error.t()]}