Пример #1
0
 public bool ApplyBehaviour(List <ASTNode> nodes, int opIndex, OrderMethod caller)
 {
     if (this.m_isObj)
     {
         if (this.m_matchReqParenthesis)   // sizeof operator or something
         {
             throw new NotImplementedException();
         }
         else
         {
             nodes[opIndex] = new NewObjectNode((nodes[opIndex + 1] as IdentifierNode).ToTypeIdentifier(), nodes[opIndex + 2] as ExpressionNode, nodes[opIndex].Pos);
             nodes.RemoveRange(opIndex + 1, 2);
             return(true);
         }
     }
     else
     {
         var look = nodes[opIndex + 1] as LookupNode;
         nodes[opIndex] = new NewArrayNode(look.ToTypeIdentifier(), look.Index, nodes[opIndex].Pos);
         nodes.RemoveAt(opIndex + 1);
     }
     return(true);
 }
Пример #2
0
        /// <summary>
        /// new_array_line                              = "[" init_expr_block "]"
        /// </summary>
        private NewArrayNode parseNewArrayLine()
        {
            if (!check(LexemType.SquareOpen))
                return null;

            var node = new NewArrayNode();
            node.Expressions = parseInitExprLine().ToList();
            if (node.Expressions.Count == 0)
                error(ParserMessages.ArrayItem);

            ensure(LexemType.SquareClose, ParserMessages.SymbolExpected, "]");

            return node;
        }