コード例 #1
0
        public void process(VaribleDeclaration varibleDeclaration)
        {
            Token _identifier = (Token)varibleDeclaration.getTokensList()[0]; //рассказать про косяк сереге
            Type  type        = (Type)varibleDeclaration.getTokensList()[1];

            try //для массива
            {
                ArrayType arrayType = (ArrayType)type.getTokensList()[0];
                _isArray = true;
                _type    = (Token)arrayType.getTokensList()[0];
                _length  = (Token)arrayType.getTokensList()[1];
                SemanticAnalizer.checkIsDefineAgain(_identifier.value);
                SemanticAnalizer.checkInitEmptyArray(_identifier.value, Int32.Parse(_length.value));
                SemanticAnalizer.addVarible(_identifier.value, _type.value, Int32.Parse(_length.value));
            }
            catch  // для инта
            {
                IntegerType integerType = (IntegerType)type.getTokensList()[0];
                _isArray = false;
                _type    = (Token)integerType.getTokensList()[0];
                SemanticAnalizer.checkIsDefineAgain(_identifier.value);
                SemanticAnalizer.addVarible(_identifier.value, _type.value);
            }

            generate();
        }
コード例 #2
0
        List <Token> getArrayInitializtionList(ArrayAssignment arrayAssignmnent)
        {
            List <Token> tokens = new List <Token>();

            foreach (Token token in arrayAssignmnent.getTokensList())
            {
                tokens.Add(token);
            }
            SemanticAnalizer.checkVarible(_leftOp.value);
            SemanticAnalizer.checkInitEmptyArray(_leftOp.value, tokens.Count);
            SemanticAnalizer.checkIsLengthArrayEqual(_leftOp.value, tokens.Count);

            if (_isArrayElementLeft)
            {
                SemanticAnalizer.incompatibleTypes();
            }
            else
            {
                SemanticAnalizer.checkCompareTypes(_leftOp.value, Constants.INTARRAY);
            }

            return(tokens);
        }