Files
Flee/Parsing/ExpressionAnalyzer.cs
2025-10-09 16:16:59 +08:00

1429 lines
40 KiB
C#

namespace Flee.Parsing
{
/// <summary>
/// A class providing callback methods for the parser.
/// </summary>
internal abstract class ExpressionAnalyzer : Analyzer
{
/// <summary>
/// Called when entering a parse tree node.
/// </summary>
/// <param name="node"></param>
public override void Enter(Node node)
{
switch (node.Id)
{
case (int)ExpressionConstants.ADD:
EnterAdd((Token)node);
break;
case (int)ExpressionConstants.SUB:
EnterSub((Token)node);
break;
case (int)ExpressionConstants.MUL:
EnterMul((Token)node);
break;
case (int)ExpressionConstants.DIV:
EnterDiv((Token)node);
break;
case (int)ExpressionConstants.POWER:
EnterPower((Token)node);
break;
case (int)ExpressionConstants.MOD:
EnterMod((Token)node);
break;
case (int)ExpressionConstants.LEFT_PAREN:
EnterLeftParen((Token)node);
break;
case (int)ExpressionConstants.RIGHT_PAREN:
EnterRightParen((Token)node);
break;
case (int)ExpressionConstants.LEFT_BRACE:
EnterLeftBrace((Token)node);
break;
case (int)ExpressionConstants.RIGHT_BRACE:
EnterRightBrace((Token)node);
break;
case (int)ExpressionConstants.EQ:
EnterEq((Token)node);
break;
case (int)ExpressionConstants.LT:
EnterLt((Token)node);
break;
case (int)ExpressionConstants.GT:
EnterGt((Token)node);
break;
case (int)ExpressionConstants.LTE:
EnterLte((Token)node);
break;
case (int)ExpressionConstants.GTE:
EnterGte((Token)node);
break;
case (int)ExpressionConstants.NE:
EnterNe((Token)node);
break;
case (int)ExpressionConstants.AND:
EnterAnd((Token)node);
break;
case (int)ExpressionConstants.OR:
EnterOr((Token)node);
break;
case (int)ExpressionConstants.XOR:
EnterXor((Token)node);
break;
case (int)ExpressionConstants.NOT:
EnterNot((Token)node);
break;
case (int)ExpressionConstants.IN:
EnterIn((Token)node);
break;
case (int)ExpressionConstants.DOT:
EnterDot((Token)node);
break;
case (int)ExpressionConstants.ARGUMENT_SEPARATOR:
EnterArgumentSeparator((Token)node);
break;
case (int)ExpressionConstants.ARRAY_BRACES:
EnterArrayBraces((Token)node);
break;
case (int)ExpressionConstants.LEFT_SHIFT:
EnterLeftShift((Token)node);
break;
case (int)ExpressionConstants.RIGHT_SHIFT:
EnterRightShift((Token)node);
break;
case (int)ExpressionConstants.INTEGER:
EnterInteger((Token)node);
break;
case (int)ExpressionConstants.REAL:
EnterReal((Token)node);
break;
case (int)ExpressionConstants.STRING_LITERAL:
EnterStringLiteral((Token)node);
break;
case (int)ExpressionConstants.CHAR_LITERAL:
EnterCharLiteral((Token)node);
break;
case (int)ExpressionConstants.TRUE:
EnterTrue((Token)node);
break;
case (int)ExpressionConstants.FALSE:
EnterFalse((Token)node);
break;
case (int)ExpressionConstants.IDENTIFIER:
EnterIdentifier((Token)node);
break;
case (int)ExpressionConstants.HEX_LITERAL:
EnterHexLiteral((Token)node);
break;
case (int)ExpressionConstants.NULL_LITERAL:
EnterNullLiteral((Token)node);
break;
case (int)ExpressionConstants.TIMESPAN:
EnterTimespan((Token)node);
break;
case (int)ExpressionConstants.DATETIME:
EnterDatetime((Token)node);
break;
case (int)ExpressionConstants.IF:
EnterIf((Token)node);
break;
case (int)ExpressionConstants.CAST:
EnterCast((Token)node);
break;
case (int)ExpressionConstants.EXPRESSION:
EnterExpression((Production)node);
break;
case (int)ExpressionConstants.XOR_EXPRESSION:
EnterXorExpression((Production)node);
break;
case (int)ExpressionConstants.OR_EXPRESSION:
EnterOrExpression((Production)node);
break;
case (int)ExpressionConstants.AND_EXPRESSION:
EnterAndExpression((Production)node);
break;
case (int)ExpressionConstants.NOT_EXPRESSION:
EnterNotExpression((Production)node);
break;
case (int)ExpressionConstants.IN_EXPRESSION:
EnterInExpression((Production)node);
break;
case (int)ExpressionConstants.IN_TARGET_EXPRESSION:
EnterInTargetExpression((Production)node);
break;
case (int)ExpressionConstants.IN_LIST_TARGET_EXPRESSION:
EnterInListTargetExpression((Production)node);
break;
case (int)ExpressionConstants.COMPARE_EXPRESSION:
EnterCompareExpression((Production)node);
break;
case (int)ExpressionConstants.SHIFT_EXPRESSION:
EnterShiftExpression((Production)node);
break;
case (int)ExpressionConstants.ADDITIVE_EXPRESSION:
EnterAdditiveExpression((Production)node);
break;
case (int)ExpressionConstants.MULTIPLICATIVE_EXPRESSION:
EnterMultiplicativeExpression((Production)node);
break;
case (int)ExpressionConstants.POWER_EXPRESSION:
EnterPowerExpression((Production)node);
break;
case (int)ExpressionConstants.NEGATE_EXPRESSION:
EnterNegateExpression((Production)node);
break;
case (int)ExpressionConstants.MEMBER_EXPRESSION:
EnterMemberExpression((Production)node);
break;
case (int)ExpressionConstants.MEMBER_ACCESS_EXPRESSION:
EnterMemberAccessExpression((Production)node);
break;
case (int)ExpressionConstants.BASIC_EXPRESSION:
EnterBasicExpression((Production)node);
break;
case (int)ExpressionConstants.MEMBER_FUNCTION_EXPRESSION:
EnterMemberFunctionExpression((Production)node);
break;
case (int)ExpressionConstants.FIELD_PROPERTY_EXPRESSION:
EnterFieldPropertyExpression((Production)node);
break;
case (int)ExpressionConstants.SPECIAL_FUNCTION_EXPRESSION:
EnterSpecialFunctionExpression((Production)node);
break;
case (int)ExpressionConstants.IF_EXPRESSION:
EnterIfExpression((Production)node);
break;
case (int)ExpressionConstants.CAST_EXPRESSION:
EnterCastExpression((Production)node);
break;
case (int)ExpressionConstants.CAST_TYPE_EXPRESSION:
EnterCastTypeExpression((Production)node);
break;
case (int)ExpressionConstants.INDEX_EXPRESSION:
EnterIndexExpression((Production)node);
break;
case (int)ExpressionConstants.FUNCTION_CALL_EXPRESSION:
EnterFunctionCallExpression((Production)node);
break;
case (int)ExpressionConstants.ARGUMENT_LIST:
EnterArgumentList((Production)node);
break;
case (int)ExpressionConstants.LITERAL_EXPRESSION:
EnterLiteralExpression((Production)node);
break;
case (int)ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION:
EnterBooleanLiteralExpression((Production)node);
break;
case (int)ExpressionConstants.EXPRESSION_GROUP:
EnterExpressionGroup((Production)node);
break;
case (int)ExpressionConstants.ASSIGNMENT_EXPRESSION:
EnterAssignmentExpression((Production)node);
break;
}
}
/// <summary>
/// Called when exiting a parse tree node.the node being exited the node to add to the parse tree, or null if no parse tree should be created<
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
public override Node Exit(Node node)
{
switch (node.Id)
{
case (int)ExpressionConstants.ADD:
return ExitAdd((Token)node);
case (int)ExpressionConstants.SUB:
return ExitSub((Token)node);
case (int)ExpressionConstants.MUL:
return ExitMul((Token)node);
case (int)ExpressionConstants.DIV:
return ExitDiv((Token)node);
case (int)ExpressionConstants.POWER:
return ExitPower((Token)node);
case (int)ExpressionConstants.MOD:
return ExitMod((Token)node);
case (int)ExpressionConstants.LEFT_PAREN:
return ExitLeftParen((Token)node);
case (int)ExpressionConstants.RIGHT_PAREN:
return ExitRightParen((Token)node);
case (int)ExpressionConstants.LEFT_BRACE:
return ExitLeftBrace((Token)node);
case (int)ExpressionConstants.RIGHT_BRACE:
return ExitRightBrace((Token)node);
case (int)ExpressionConstants.EQ:
return ExitEq((Token)node);
case (int)ExpressionConstants.LT:
return ExitLt((Token)node);
case (int)ExpressionConstants.GT:
return ExitGt((Token)node);
case (int)ExpressionConstants.LTE:
return ExitLte((Token)node);
case (int)ExpressionConstants.GTE:
return ExitGte((Token)node);
case (int)ExpressionConstants.NE:
return ExitNe((Token)node);
case (int)ExpressionConstants.AND:
return ExitAnd((Token)node);
case (int)ExpressionConstants.OR:
return ExitOr((Token)node);
case (int)ExpressionConstants.XOR:
return ExitXor((Token)node);
case (int)ExpressionConstants.NOT:
return ExitNot((Token)node);
case (int)ExpressionConstants.IN:
return ExitIn((Token)node);
case (int)ExpressionConstants.DOT:
return ExitDot((Token)node);
case (int)ExpressionConstants.ARGUMENT_SEPARATOR:
return ExitArgumentSeparator((Token)node);
case (int)ExpressionConstants.ARRAY_BRACES:
return ExitArrayBraces((Token)node);
case (int)ExpressionConstants.LEFT_SHIFT:
return ExitLeftShift((Token)node);
case (int)ExpressionConstants.RIGHT_SHIFT:
return ExitRightShift((Token)node);
case (int)ExpressionConstants.INTEGER:
return ExitInteger((Token)node);
case (int)ExpressionConstants.REAL:
return ExitReal((Token)node);
case (int)ExpressionConstants.STRING_LITERAL:
return ExitStringLiteral((Token)node);
case (int)ExpressionConstants.CHAR_LITERAL:
return ExitCharLiteral((Token)node);
case (int)ExpressionConstants.TRUE:
return ExitTrue((Token)node);
case (int)ExpressionConstants.FALSE:
return ExitFalse((Token)node);
case (int)ExpressionConstants.IDENTIFIER:
return ExitIdentifier((Token)node);
case (int)ExpressionConstants.HEX_LITERAL:
return ExitHexliteral((Token)node);
case (int)ExpressionConstants.NULL_LITERAL:
return ExitNullLiteral((Token)node);
case (int)ExpressionConstants.TIMESPAN:
return ExitTimespan((Token)node);
case (int)ExpressionConstants.DATETIME:
return ExitDatetime((Token)node);
case (int)ExpressionConstants.IF:
return ExitIf((Token)node);
case (int)ExpressionConstants.CAST:
return ExitCast((Token)node);
case (int)ExpressionConstants.ASSIGN:
return ExitAssign((Token)node);
case (int)ExpressionConstants.EXPRESSION:
return ExitExpression((Production)node);
case (int)ExpressionConstants.XOR_EXPRESSION:
return ExitXorExpression((Production)node);
case (int)ExpressionConstants.OR_EXPRESSION:
return ExitOrExpression((Production)node);
case (int)ExpressionConstants.AND_EXPRESSION:
return ExitAndExpression((Production)node);
case (int)ExpressionConstants.NOT_EXPRESSION:
return ExitNotExpression((Production)node);
case (int)ExpressionConstants.IN_EXPRESSION:
return ExitInExpression((Production)node);
case (int)ExpressionConstants.IN_TARGET_EXPRESSION:
return ExitInTargetExpression((Production)node);
case (int)ExpressionConstants.IN_LIST_TARGET_EXPRESSION:
return ExitInListTargetExpression((Production)node);
case (int)ExpressionConstants.COMPARE_EXPRESSION:
return ExitCompareExpression((Production)node);
case (int)ExpressionConstants.SHIFT_EXPRESSION:
return ExitShiftExpression((Production)node);
case (int)ExpressionConstants.ADDITIVE_EXPRESSION:
return ExitAdditiveExpression((Production)node);
case (int)ExpressionConstants.MULTIPLICATIVE_EXPRESSION:
return ExitMultiplicativeExpression((Production)node);
case (int)ExpressionConstants.POWER_EXPRESSION:
return ExitPowerExpression((Production)node);
case (int)ExpressionConstants.NEGATE_EXPRESSION:
return ExitNegateExpression((Production)node);
case (int)ExpressionConstants.MEMBER_EXPRESSION:
return ExitMemberExpression((Production)node);
case (int)ExpressionConstants.MEMBER_ACCESS_EXPRESSION:
return ExitMemberAccessExpression((Production)node);
case (int)ExpressionConstants.BASIC_EXPRESSION:
return ExitBasicExpression((Production)node);
case (int)ExpressionConstants.MEMBER_FUNCTION_EXPRESSION:
return ExitMemberFunctionExpression((Production)node);
case (int)ExpressionConstants.FIELD_PROPERTY_EXPRESSION:
return ExitFieldPropertyExpression((Production)node);
case (int)ExpressionConstants.SPECIAL_FUNCTION_EXPRESSION:
return ExitSpecialFunctionExpression((Production)node);
case (int)ExpressionConstants.IF_EXPRESSION:
return ExitIfExpression((Production)node);
case (int)ExpressionConstants.CAST_EXPRESSION:
return ExitCastExpression((Production)node);
case (int)ExpressionConstants.CAST_TYPE_EXPRESSION:
return ExitCastTypeExpression((Production)node);
case (int)ExpressionConstants.INDEX_EXPRESSION:
return ExitIndexExpression((Production)node);
case (int)ExpressionConstants.FUNCTION_CALL_EXPRESSION:
return ExitFunctionCallExpression((Production)node);
case (int)ExpressionConstants.ARGUMENT_LIST:
return ExitArgumentList((Production)node);
case (int)ExpressionConstants.LITERAL_EXPRESSION:
return ExitLiteralExpression((Production)node);
case (int)ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION:
return ExitBooleanLiteralExpression((Production)node);
case (int)ExpressionConstants.EXPRESSION_GROUP:
return ExitExpressionGroup((Production)node);
case (int)ExpressionConstants.ASSIGNMENT_EXPRESSION:
return ExitAssignmentExpression((Production)node);
}
return node;
}
/// <summary>
/// Called when adding a child to a parse tree node.
/// </summary>
/// <param name="node"></param>
/// <param name="child"></param>
public override void Child(Production node, Node child)
{
switch (node.Id)
{
case (int)ExpressionConstants.EXPRESSION:
ChildExpression(node, child);
break;
case (int)ExpressionConstants.XOR_EXPRESSION:
ChildXorExpression(node, child);
break;
case (int)ExpressionConstants.OR_EXPRESSION:
ChildOrExpression(node, child);
break;
case (int)ExpressionConstants.AND_EXPRESSION:
ChildAndExpression(node, child);
break;
case (int)ExpressionConstants.NOT_EXPRESSION:
ChildNotExpression(node, child);
break;
case (int)ExpressionConstants.IN_EXPRESSION:
ChildInExpression(node, child);
break;
case (int)ExpressionConstants.IN_TARGET_EXPRESSION:
ChildInTargetExpression(node, child);
break;
case (int)ExpressionConstants.IN_LIST_TARGET_EXPRESSION:
ChildInListTargetExpression(node, child);
break;
case (int)ExpressionConstants.COMPARE_EXPRESSION:
ChildCompareExpression(node, child);
break;
case (int)ExpressionConstants.SHIFT_EXPRESSION:
ChildShiftExpression(node, child);
break;
case (int)ExpressionConstants.ADDITIVE_EXPRESSION:
ChildAdditiveExpression(node, child);
break;
case (int)ExpressionConstants.MULTIPLICATIVE_EXPRESSION:
ChildMultiplicativeExpression(node, child);
break;
case (int)ExpressionConstants.POWER_EXPRESSION:
ChildPowerExpression(node, child);
break;
case (int)ExpressionConstants.NEGATE_EXPRESSION:
ChildNegateExpression(node, child);
break;
case (int)ExpressionConstants.MEMBER_EXPRESSION:
ChildMemberExpression(node, child);
break;
case (int)ExpressionConstants.MEMBER_ACCESS_EXPRESSION:
ChildMemberAccessExpression(node, child);
break;
case (int)ExpressionConstants.BASIC_EXPRESSION:
ChildBasicExpression(node, child);
break;
case (int)ExpressionConstants.MEMBER_FUNCTION_EXPRESSION:
ChildMemberFunctionExpression(node, child);
break;
case (int)ExpressionConstants.FIELD_PROPERTY_EXPRESSION:
ChildFieldPropertyExpression(node, child);
break;
case (int)ExpressionConstants.SPECIAL_FUNCTION_EXPRESSION:
ChildSpecialFunctionExpression(node, child);
break;
case (int)ExpressionConstants.IF_EXPRESSION:
ChildIfExpression(node, child);
break;
case (int)ExpressionConstants.CAST_EXPRESSION:
ChildCastExpression(node, child);
break;
case (int)ExpressionConstants.CAST_TYPE_EXPRESSION:
ChildCastTypeExpression(node, child);
break;
case (int)ExpressionConstants.INDEX_EXPRESSION:
ChildIndexExpression(node, child);
break;
case (int)ExpressionConstants.FUNCTION_CALL_EXPRESSION:
ChildFunctionCallExpression(node, child);
break;
case (int)ExpressionConstants.ARGUMENT_LIST:
ChildArgumentList(node, child);
break;
case (int)ExpressionConstants.LITERAL_EXPRESSION:
ChildLiteralExpression(node, child);
break;
case (int)ExpressionConstants.BOOLEAN_LITERAL_EXPRESSION:
ChildBooleanLiteralExpression(node, child);
break;
case (int)ExpressionConstants.EXPRESSION_GROUP:
ChildExpressionGroup(node, child);
break;
case (int)ExpressionConstants.ASSIGNMENT_EXPRESSION:
ChildAssignmentExpression(node, child);
break;
}
}
public virtual void EnterAdd(Token node)
{
}
public virtual Node ExitAdd(Token node)
{
return node;
}
public virtual void EnterSub(Token node)
{
}
public virtual Node ExitSub(Token node)
{
return node;
}
public virtual void EnterMul(Token node)
{
}
public virtual Node ExitMul(Token node)
{
return node;
}
public virtual void EnterDiv(Token node)
{
}
public virtual Node ExitDiv(Token node)
{
return node;
}
public virtual void EnterPower(Token node)
{
}
public virtual Node ExitPower(Token node)
{
return node;
}
public virtual void EnterMod(Token node)
{
}
public virtual Node ExitMod(Token node)
{
return node;
}
public virtual void EnterLeftParen(Token node)
{
}
public virtual Node ExitLeftParen(Token node)
{
return node;
}
public virtual void EnterRightParen(Token node)
{
}
public virtual Node ExitRightParen(Token node)
{
return node;
}
public virtual void EnterLeftBrace(Token node)
{
}
public virtual Node ExitLeftBrace(Token node)
{
return node;
}
public virtual void EnterRightBrace(Token node)
{
}
public virtual Node ExitRightBrace(Token node)
{
return node;
}
public virtual void EnterEq(Token node)
{
}
public virtual Node ExitEq(Token node)
{
return node;
}
public virtual void EnterLt(Token node)
{
}
public virtual Node ExitLt(Token node)
{
return node;
}
public virtual void EnterGt(Token node)
{
}
public virtual Node ExitGt(Token node)
{
return node;
}
public virtual void EnterLte(Token node)
{
}
public virtual Node ExitLte(Token node)
{
return node;
}
public virtual void EnterGte(Token node)
{
}
public virtual Node ExitGte(Token node)
{
return node;
}
public virtual void EnterNe(Token node)
{
}
public virtual Node ExitNe(Token node)
{
return node;
}
public virtual void EnterAnd(Token node)
{
}
public virtual Node ExitAnd(Token node)
{
return node;
}
public virtual void EnterOr(Token node)
{
}
public virtual Node ExitOr(Token node)
{
return node;
}
public virtual void EnterXor(Token node)
{
}
public virtual Node ExitXor(Token node)
{
return node;
}
public virtual void EnterNot(Token node)
{
}
public virtual Node ExitNot(Token node)
{
return node;
}
public virtual void EnterIn(Token node)
{
}
public virtual Node ExitIn(Token node)
{
return node;
}
public virtual void EnterDot(Token node)
{
}
public virtual Node ExitDot(Token node)
{
return node;
}
public virtual void EnterArgumentSeparator(Token node)
{
}
public virtual Node ExitArgumentSeparator(Token node)
{
return node;
}
public virtual void EnterArrayBraces(Token node)
{
}
public virtual Node ExitArrayBraces(Token node)
{
return node;
}
public virtual void EnterLeftShift(Token node)
{
}
public virtual Node ExitLeftShift(Token node)
{
return node;
}
public virtual void EnterRightShift(Token node)
{
}
public virtual Node ExitRightShift(Token node)
{
return node;
}
public virtual void EnterInteger(Token node)
{
}
public virtual Node ExitInteger(Token node)
{
return node;
}
public virtual void EnterReal(Token node)
{
}
public virtual Node ExitReal(Token node)
{
return node;
}
public virtual void EnterStringLiteral(Token node)
{
}
public virtual Node ExitStringLiteral(Token node)
{
return node;
}
public virtual void EnterCharLiteral(Token node)
{
}
public virtual Node ExitCharLiteral(Token node)
{
return node;
}
public virtual void EnterTrue(Token node)
{
}
public virtual Node ExitTrue(Token node)
{
return node;
}
public virtual void EnterFalse(Token node)
{
}
public virtual Node ExitFalse(Token node)
{
return node;
}
public virtual void EnterIdentifier(Token node)
{
}
public virtual Node ExitIdentifier(Token node)
{
return node;
}
public virtual void EnterHexLiteral(Token node)
{
}
public virtual Node ExitHexliteral(Token node)
{
return node;
}
public virtual void EnterNullLiteral(Token node)
{
}
public virtual Node ExitNullLiteral(Token node)
{
return node;
}
public virtual void EnterTimespan(Token node)
{
}
public virtual Node ExitTimespan(Token node)
{
return node;
}
public virtual void EnterDatetime(Token node)
{
}
public virtual Node ExitDatetime(Token node)
{
return node;
}
public virtual void EnterIf(Token node)
{
}
public virtual Node ExitIf(Token node)
{
return node;
}
public virtual void EnterCast(Token node)
{
}
public virtual Node ExitCast(Token node)
{
return node;
}
public virtual void EnterExpression(Production node)
{
}
public virtual Node ExitExpression(Production node)
{
return node;
}
public virtual void ChildExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterXorExpression(Production node)
{
}
public virtual Node ExitXorExpression(Production node)
{
return node;
}
public virtual void ChildXorExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterOrExpression(Production node)
{
}
public virtual Node ExitOrExpression(Production node)
{
return node;
}
public virtual void ChildOrExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterAndExpression(Production node)
{
}
public virtual Node ExitAndExpression(Production node)
{
return node;
}
public virtual void ChildAndExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterNotExpression(Production node)
{
}
public virtual Node ExitNotExpression(Production node)
{
return node;
}
public virtual void ChildNotExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterInExpression(Production node)
{
}
public virtual Node ExitInExpression(Production node)
{
return node;
}
public virtual void ChildInExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterInTargetExpression(Production node)
{
}
public virtual Node ExitInTargetExpression(Production node)
{
return node;
}
public virtual void ChildInTargetExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterInListTargetExpression(Production node)
{
}
public virtual Node ExitInListTargetExpression(Production node)
{
return node;
}
public virtual void ChildInListTargetExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterCompareExpression(Production node)
{
}
public virtual Node ExitCompareExpression(Production node)
{
return node;
}
public virtual void ChildCompareExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterShiftExpression(Production node)
{
}
public virtual Node ExitShiftExpression(Production node)
{
return node;
}
public virtual void ChildShiftExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterAdditiveExpression(Production node)
{
}
public virtual Node ExitAdditiveExpression(Production node)
{
return node;
}
public virtual void ChildAdditiveExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterMultiplicativeExpression(Production node)
{
}
public virtual Node ExitMultiplicativeExpression(Production node)
{
return node;
}
public virtual void ChildMultiplicativeExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterPowerExpression(Production node)
{
}
public virtual Node ExitPowerExpression(Production node)
{
return node;
}
public virtual void ChildPowerExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterNegateExpression(Production node)
{
}
public virtual Node ExitNegateExpression(Production node)
{
return node;
}
public virtual void ChildNegateExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterMemberExpression(Production node)
{
}
public virtual Node ExitMemberExpression(Production node)
{
return node;
}
public virtual void ChildMemberExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterMemberAccessExpression(Production node)
{
}
public virtual Node ExitMemberAccessExpression(Production node)
{
return node;
}
public virtual void ChildMemberAccessExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterBasicExpression(Production node)
{
}
public virtual Node ExitBasicExpression(Production node)
{
return node;
}
public virtual void ChildBasicExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterMemberFunctionExpression(Production node)
{
}
public virtual Node ExitMemberFunctionExpression(Production node)
{
return node;
}
public virtual void ChildMemberFunctionExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterFieldPropertyExpression(Production node)
{
}
public virtual Node ExitFieldPropertyExpression(Production node)
{
return node;
}
public virtual void ChildFieldPropertyExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterSpecialFunctionExpression(Production node)
{
}
public virtual Node ExitSpecialFunctionExpression(Production node)
{
return node;
}
public virtual void ChildSpecialFunctionExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterIfExpression(Production node)
{
}
public virtual Node ExitIfExpression(Production node)
{
return node;
}
public virtual void ChildIfExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterCastExpression(Production node)
{
}
public virtual Node ExitCastExpression(Production node)
{
return node;
}
public virtual void ChildCastExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterCastTypeExpression(Production node)
{
}
public virtual Node ExitCastTypeExpression(Production node)
{
return node;
}
public virtual void ChildCastTypeExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterIndexExpression(Production node)
{
}
public virtual Node ExitIndexExpression(Production node)
{
return node;
}
public virtual void ChildIndexExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterFunctionCallExpression(Production node)
{
}
public virtual Node ExitFunctionCallExpression(Production node)
{
return node;
}
public virtual void ChildFunctionCallExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterArgumentList(Production node)
{
}
public virtual Node ExitArgumentList(Production node)
{
return node;
}
public virtual void ChildArgumentList(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterLiteralExpression(Production node)
{
}
public virtual Node ExitLiteralExpression(Production node)
{
return node;
}
public virtual void ChildLiteralExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterBooleanLiteralExpression(Production node)
{
}
public virtual Node ExitBooleanLiteralExpression(Production node)
{
return node;
}
public virtual void ChildBooleanLiteralExpression(Production node, Node child)
{
node.AddChild(child);
}
public virtual void EnterExpressionGroup(Production node)
{
}
public virtual Node ExitExpressionGroup(Production node)
{
return node;
}
public virtual void ChildExpressionGroup(Production node, Node child)
{
node.AddChild(child);
}
public virtual Node ExitAssign(Token node)
{
return node;
}
public virtual void EnterAssignmentExpression(Production node)
{
}
public virtual Node ExitAssignmentExpression(Production node)
{
return node;
}
public virtual void ChildAssignmentExpression(Production node, Node child)
{
node.AddChild(child);
}
}
}