formkl
Version:
Form marKup Language
153 lines (152 loc) • 3.56 kB
TypeScript
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;
}