We should separate loading the parser into its own function because loading the grammar takes some time. If there are multiple concurrent parse calls, it's faster to just wait for building the parser once and then use it for all subsequent calls. See expression.test.ts for an example.
This method is currently empty, but it could be used to provide instructions on the format of the input text.
string
Parses the given text. It first ensures the parser is loaded, then tries to parse the text. If the parsing fails, it throws an error. If the parsing is successful, it returns the parsed expression.
The text to be parsed.
The parsed expression
We need to be able to handle the following cases: ExpressionStatement CallExpression Identifier | MemberExpression ExpressionLiterals: [ CallExpression StringLiteral NumericLiteral ArrayLiteralExpression ExpressionLiterals ObjectLiteralExpression PropertyAssignment Identifier ExpressionLiterals ]