Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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));
            }
        }