internal void ParseMacroDeclarationHeader(DeclarationHeaderTerminatorType TerminatorType) { while (true) { if (TerminatorType == DeclarationHeaderTerminatorType.StreamEnd && Stream.AtEnd()) return; else if (Stream.Next().Type == TokenType.Colon) return; else if (TerminatorType == DeclarationHeaderTerminatorType.OpenBrace && Stream.Next().Type == TokenType.OpenBrace) return; else if (TerminatorType == DeclarationHeaderTerminatorType.OpenBraceOrWhen) { if (Stream.Next().Type == TokenType.OpenBrace) return; else if (Stream.Next().Value.ToUpper() == "WHEN") return; else if (Stream.Next().Value.ToUpper() == "WITH") return; else if (Stream.Next().Value.ToUpper() == "ORDER") return; } ParseDeclarationTerm(); } }
internal static List<DeclarationTerm> ParseMacroDeclarationHeader(TokenStream Stream, DeclarationHeaderTerminatorType TerminatorType) { var r = new List<DeclarationTerm>(); while (true) { if (TerminatorType == DeclarationHeaderTerminatorType.StreamEnd && Stream.AtEnd()) return r; else if (Stream.Next().Type == TokenType.Colon) return r; else if (TerminatorType == DeclarationHeaderTerminatorType.OpenBrace && Stream.Next().Type == TokenType.OpenBrace) return r; else if (TerminatorType == DeclarationHeaderTerminatorType.OpenBraceOrWhen) { if (Stream.Next().Type == TokenType.OpenBrace) return r; else if (Stream.Next().Value.ToUpper() == "WHEN") return r; else if (Stream.Next().Value.ToUpper() == "WITH") return r; else if (Stream.Next().Value.ToUpper() == "ORDER") return r; } r.Add(ParseDeclarationTerm(Stream)); } }