Uses new Rust 2021
|0.1.0||Nov 10, 2022|
#982 in Cryptography
52 downloads per month
Used in 3 crates (2 directly)
This crate contains the parser for AirScript.
The purpose of the parser is to parse the constraints written in the human-friendly AirScript language into an Abstract Syntax Tree.
Generating the Abstract Syntax Tree (AST)
To create an AST from a given AirScript module, pass your source to the public
parse function, which will return the AST or an
Error of type
parse function will first tokenize the source using the lexer, then map the resulting tokens to new tokens accepted by the parser, which are of type
(usize, Token, usize). Each invalid token will be stored as
ScanError. Finally, if no
parse feeds the tokens to the parser to generate a Result with the corresponding AST (or
// parse the source string to a Result containing the AST or an Error let ast = parse(source.as_str());
The AirScript AST (
Source) contains a vector of
SourceSection, each of which contains the result of parsing a section in an AirScript module.
SourceSection types are:
AirDef, which holds the name of the AIR.
TraceCols, which contains the parsed trace column information for the main and auxiliary execution traces. Each column is represented by its identifier.
PublicInputs, which is a vector of all of the public inputs defined in the module. Each public input is represented by its identifier and a fixed size.
PeriodicColumns, which is a vector of all of the periodic columns defined in the module. Each periodic column is represented by its identifier and a vector containing the pattern of its repeated (periodic) values.
BoundaryConstraints, which contains a vector of
BoundaryConstraintexpressions, each represented as an expression tree.
TransitionConstraints, which contains a vector of
TransitionConstraintexpressions, each represented as an expression tree.