protected virtual CascadeMessageSequenceNode ParseCascadeMessageSequenceNode(ICascadeMessageSequenceParentNode parent, Token semicolon) { // PARSE: <cascaded messages> ::= (';' <messages>)* if (!Parser.IsCascadeDelimiter(semicolon)) { this.ResidueToken = semicolon; return(null); // Not a cascade message ... return null. } CascadeMessageSequenceNode result = new CascadeMessageSequenceNode(parent, (SpecialCharacterToken)semicolon); Token token = this.GetNextTokenxx(Preference.Default); MessageSequenceNode messages = this.ParseMessages(result, token); if (messages == null) { this.ReportParserError(result, SemanticErrors.MissingMessagePattern, token); return(result); } token = this.GetNextTokenxx(Preference.Default); CascadeMessageSequenceNode nextCascade = null; if (Parser.IsCascadeDelimiter(token)) { nextCascade = this.ParseCascadeMessageSequenceNode(result, (SpecialCharacterToken)token); } else { this.ResidueToken = token; } result.SetContents(messages, nextCascade); return(result); }
/// <summary> /// Create a new cascade message sequence. /// </summary> /// <param name="parent">Parent node that defines this cascade message node.</param> /// <param name="token">Token representing the semicolon used to delimit cascase message sequences.</param> protected internal CascadeMessageSequenceNode(ICascadeMessageSequenceParentNode parent, SpecialCharacterToken token) { #if DEBUG if (parent == null) throw new ArgumentNullException("parent"); if (token == null) throw new ArgumentNullException("token"); #endif this.Parent = parent; this.Semicolon = token; }
/// <summary> /// Create a new cascade message sequence. /// </summary> /// <param name="parent">Parent node that defines this cascade message node.</param> /// <param name="token">Token representing the semicolon used to delimit cascade message sequences.</param> protected internal CascadeMessageSequenceNode(ICascadeMessageSequenceParentNode parent, SpecialCharacterToken token) { #if DEBUG if (parent == null) { throw new ArgumentNullException("parent"); } if (token == null) { throw new ArgumentNullException("token"); } #endif this.Parent = parent; this.Semicolon = token; }
protected virtual CascadeMessageSequenceNode ParseCascadeMessageSequenceNode(ICascadeMessageSequenceParentNode parent, Token semicolon) { // PARSE: <cascaded messages> ::= (';' <messages>)* if (!Parser.IsCascadeDelimiter(semicolon)) { this.ResidueToken = semicolon; return null; // Not a cascade message ... return null. } CascadeMessageSequenceNode result = new CascadeMessageSequenceNode(parent, (SpecialCharacterToken)semicolon); Token token = this.GetNextTokenxx(Preference.Default); MessageSequenceNode messages = this.ParseMessages(result, token); if (messages == null) { this.ReportParserError(result, SemanticErrors.MissingMessagePattern, token); return result; } token = this.GetNextTokenxx(Preference.Default); CascadeMessageSequenceNode nextCascade = null; if (Parser.IsCascadeDelimiter(token)) nextCascade = this.ParseCascadeMessageSequenceNode(result, (SpecialCharacterToken)token); else this.ResidueToken = token; result.SetContents(messages, nextCascade); return result; }