UNPKG

formkl

Version:
153 lines (152 loc) 3.56 kB
import { Formkl } from "@formkl/shared"; import { Tokenizer } from "./tokenizer"; import { Token } from "./types"; export declare class Parser { syntax: string; tokenizer: Tokenizer; private _lookahead; /** * Initializes the parser. */ constructor(); /** * Parse a Formkl syntax string into Formkl object */ parse(string: string): Formkl; /** * Stringify a Formkl object to a Formkl syntax string */ stringify(formkl: Formkl): string; /** * Main entry point. * * FormBlock * = SectionBlockList * ; */ private FormBlock; /** * SectionBlockList * = (SectionBlock)* * ; */ private SectionBlockList; /** * SectionBlock * = FieldStatementList * ; */ private SectionBlock; /** * FieldStatementList * : (FieldStatement)* * ; * */ private FieldStatementList; /** * FieldStatement * = (NUMBER) (REQUIRE) (StringLiteral) FieldExpression (as StringLiteral) ';' * | (REQUIRE) (MULTIPLE) (StringLiteral) FieldExpression (as StringLiteral) ';' * ; */ private FieldStatement; /** * FieldExpression * = 'FIELD' * | 'FIELDSELECTION' * | 'FIELDVALIDATED' * | 'FIELDDATETIME' * | FieldExpression ValidationExpression * ; */ private FieldExpression; private FieldDefaultExpression; private FieldCustomExpression; /** * FieldSelectionExpression * = 'FIELDSELECTION' StringLiteral '(' StringList ')' * | 'FIELDSELECTION' StringLiteral 'URL' '(' StringList ')' * | 'FIELDSELECTION' 'URL' '(' StringList ')' * | 'FIELDSELECTION' '(' StringList ')' * ; */ private FieldSelectionExpression; private FieldValidatedExpression; private FieldDatetimeExpression; /** * ValidationExpression * = 'VALID' '(' LogicalORExpression ')' * | 'VALID' '(' LogicalORExpression ')' 'REGEX' '(' StringLiteral ')' * | 'REGEX' '(' StringLiteral ')' * | 'REGEX' '(' StringLiteral ')' 'VALID' '(' LogicalORExpression ')' * ; */ private ValidationExpression; /** * LogicalORExpression * = LogicalANDExpression * | LogicalANDExpression OR LogicalANDExpression * ; */ private LogicalORExpression; /** * LogicalANDExpression * = RelationalExpression * | RelationalExpression AND RelationalExpression * ; */ private LogicalANDExpression; /** * RelationalExpression * = OPERATOR_RELATIONAL NumericLiteral * | OPERATOR_EQUALITY StringLiteral * | OPERATOR_EQUALITY NumericLiteral * | HAS StringLiteral * | HAS NumericLiteral * ; */ private RelationalExpression; /** * StringList * = StringLiteral * | StringList ',' StringLiteral * ; */ private StringList; /** * NaNLiteral * = 'NaN' * ; */ private NaNLiteral; private NumericLiteral; /** * StringLiteral * : STRING * ; */ private StringLiteral; /** * BooleanLiteral * = TRUE * | FALSE * ; */ private BooleanLiteral; /** * NullLiteral * = 'null' * ; */ private NullLiteral; /** * UndefinedLiteral * = 'undefined' * ; */ private UndefinedLiteral; /** * Expects a token of a given type. */ _eat(tokenType: Token["type"]): Token; }