public void DefineEventHandler(IToken stateIdToken, IToken idToken, int nargs, int nlocals) { int stateId; if (!_states.TryGetValue(stateIdToken.Text, out stateId)) { throw new GenerationException(String.Format("line {0}:{1} Invalid state {2}", stateIdToken.Line, stateIdToken.CharPositionInLine, stateIdToken.Text)); } if (_events.ContainsKey(stateIdToken.Text + "." + idToken.Text)) { throw new GenerationException(String.Format("line {0}:{1} Event '{2}.{3}' already defined", idToken.Line, idToken.CharPositionInLine, stateIdToken.Text, idToken.Text)); } else { EventSymbol evt = new EventSymbol(stateId, idToken.Text, _ip, nargs, nlocals); _events.Add(stateIdToken.Text + "." + idToken.Text, evt); } }