/// <exception cref="ArgumentNullException"><paramref name="context" /> is <c>null</c>.</exception> internal LSLStateScopeNode(LSLParser.DefinedStateContext context) { if (context == null) { throw new ArgumentNullException("context"); } StateName = context.state_name.Text; SourceRange = new LSLSourceCodeRange(context); SourceRangeOpenBrace = new LSLSourceCodeRange(context.open_brace); SourceRangeCloseBrace = new LSLSourceCodeRange(context.close_brace); SourceRangeStateName = new LSLSourceCodeRange(context.state_name); SourceRangeStateKeyword = new LSLSourceCodeRange(context.state_keyword); SourceRangesAvailable = true; }
/// <exception cref="ArgumentNullException"><paramref name="eventHandlers" /> is <c>null</c>.</exception> internal LSLStateScopeNode(LSLParser.DefinedStateContext context, IEnumerable <LSLEventHandlerNode> eventHandlers) : this(context) { if (eventHandlers == null) { throw new ArgumentNullException("eventHandlers"); } StateName = context.state_name.Text; foreach (var lslEventHandlerNode in eventHandlers) { Add(lslEventHandlerNode); } SourceRange = new LSLSourceCodeRange(context); SourceRangeOpenBrace = new LSLSourceCodeRange(context.open_brace); SourceRangeCloseBrace = new LSLSourceCodeRange(context.close_brace); SourceRangeStateName = new LSLSourceCodeRange(context.state_name); SourceRangeStateKeyword = new LSLSourceCodeRange(context.state_keyword); SourceRangesAvailable = true; }
public override bool VisitDefinedState(LSLParser.DefinedStateContext context) { if (context == null || Utility.AnyNull(context.children, context.state_name)) { throw LSLCodeValidatorInternalException.VisitContextInvalidState("VisitDefinedState", true); } if (context.state_name.Text == "default") { GenSyntaxError().RedefinedDefaultState( new LSLSourceCodeRange(context.state_name)); return(false); } if (_scopingManager.StatePreDefined(context.state_name.Text)) { GenSyntaxError().RedefinedStateName( new LSLSourceCodeRange(context.state_name), context.state_name.Text); return(false); } _scopingManager.PreDefineState(context.state_name.Text); if (!context.eventHandler().Any()) { GenSyntaxError().StateHasNoEventHandlers( new LSLSourceCodeRange(context.state_name), context.state_name.Text); return(false); } var eventHandlerNames = new HashSet <string>(); foreach (var ctx in context.eventHandler()) { if (ctx.handler_name == null) { throw LSLCodeValidatorInternalException .VisitContextInInvalidState("VisitDefinedState", typeof(LSLParser.EventHandlerContext), true); } if (eventHandlerNames.Contains(ctx.handler_name.Text)) { GenSyntaxError().RedefinedEventHandler( new LSLSourceCodeRange(ctx.handler_name), ctx.handler_name.Text, context.state_name.Text); return(false); } eventHandlerNames.Add(ctx.handler_name.Text); } return(true); }
/// <summary> /// Exit a parse tree produced by <see cref="LSLParser.definedState"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitDefinedState([NotNull] LSLParser.DefinedStateContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="LSLParser.definedState"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitDefinedState([NotNull] LSLParser.DefinedStateContext context) { return(VisitChildren(context)); }