예제 #1
0
 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);
 }