コード例 #1
0
ファイル: Parser.cs プロジェクト: Metallicruz/CompVM
 private static bool Fn_Arr_Member()
 {
     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.func();
         }
         Tokens.NextToken();
         return(true);
     }
     else if (Tokens.GetToken().lexeme == "[")
     {
         if (semanticPass)
         {
             SemanticActions.oPush(Tokens.GetToken());
         }
         currentType = "@" + currentType;
         Tokens.NextToken();
         if (!Expression())
         {
             SyntaxError(Tokens.GetToken(), "an expression");
         }
         if (Tokens.GetToken().lexeme != "]")
         {
             SyntaxError(Tokens.GetToken(), "]");
         }
         if (semanticPass)
         {
             SemanticActions.ShuntYardAll();
             SemanticActions.arr();
         }
         Tokens.NextToken();
         return(true);
     }
     return(false);
 }
コード例 #2
0
ファイル: Parser.cs プロジェクト: Metallicruz/CompVM
        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);
        }