Exemplo n.º 1
0
        private static bool NewDeclaration()
        {
            if (Tokens.GetToken().lexeme == "(")
            {
                if (semanticPass)
                {
                    SemanticActions.oPush(Tokens.GetToken());
                    SemanticActions.BAL();
                }
                Tokens.NextToken();
                Argument_List();
                if (Tokens.GetToken().lexeme != ")")
                {
                    SyntaxError(Tokens.GetToken(), ")");
                }
                if (semanticPass)
                {
                    SemanticActions.ShuntYardAll();
                    SemanticActions.EAL();
                    SemanticActions.NewObj();
                }
                Tokens.NextToken();
                return(true);
            }
            else if (Tokens.GetToken().lexeme == "[")
            {
                if (semanticPass)
                {
                    SemanticActions.oPush(Tokens.GetToken());
                }
                Tokens.NextToken();
                if (!Expression())
                {
                    SyntaxError(Tokens.GetToken(), "expression");
                }
                if (Tokens.GetToken().lexeme != "]")
                {
                    SyntaxError(Tokens.GetToken(), "]");
                }
                if (semanticPass)
                {
                    SemanticActions.ShuntYardAll();
                    SemanticActions.new_arr();
                }
                Tokens.NextToken();
                return(true);
            }

            return(false);
        }