Parselet
Parselets are small components that represents and builds special kind of syntax parts (e.g. Assignments, Function Calls, Class Declarations).
You can use predefined parselets to parse prefix/postfix, binary and ternary operators. You can specifiy the binding power (how strong will be the operator applied) and associativity (left->right or right->left).
To attach parselets to your parser you can use helper methods.
If a parselt is already registered it will replaced by the new parselet.
protected override void InitParser(ParserDefinition parserDefinition)
{
parserDefinition.Register(PredefinedSymbols.Name, new NameParselet());
parserDefinition.Register("(", new CallParselet(BindingPowers.Get("Call").Id));
parserDefinition.Ternary("?", ":", "Conditional");
parserDefinition.AddArithmeticOperators();
parserDefinition.AddBitOperators();
parserDefinition.AddLogicalOperators();
parserDefinition.AddCommonLiterals();
parserDefinition.AddCommonAssignmentOperators();
parserDefinition.Prefix("not");
parserDefinition.Postfix("!");
parserDefinition.InfixRight("^", "Exponent");
parserDefinition.InfixLeft("->", "Product");
parserDefinition.Block(PredefinedSymbols.SOF, PredefinedSymbols.EOF,
seperator: PredefinedSymbols.Semicolon);
}
The sample above uses several different helper methods. A Block
parses a list of expressions.
Last updated