Example #1
0
        private TypeNode ValueType()
        {
            TypeNode           itsAST;
            SourceCodePosition itsPos = _currentToken.SourcePosition;

            if (_currentToken.Type == Token.TokenType.Int)
            {
                itsAST = new IntTypeNode(itsPos);
                Accept(Token.TokenType.Int);
            }
            else if (_currentToken.Type == Token.TokenType.Real)
            {
                itsAST = new RealTypeNode(itsPos);
                Accept(Token.TokenType.Real);
            }
            else if (_currentToken.Type == Token.TokenType.String)
            {
                itsAST = new StringTypeNode(itsPos);
                Accept(Token.TokenType.String);
            }
            else
            {
                itsAST = new BooleanTypeNode(itsPos);
                Accept(Token.TokenType.Boolean);
            }
            return(itsAST);
        }
Example #2
0
        public BitwiseOrExpressionNode(ExpressionNode leftExpression, ExpressionNode exclusiveOrExpression,
                                       Token token) :  base(leftExpression, exclusiveOrExpression, token)
        {
            var t = new IntTypeNode();

            rules[Utils.Char + "," + Utils.Char] = t;
            rules[Utils.Char + "," + Utils.Int]  = t;
            rules[Utils.Int + "," + Utils.Char]  = t;
            rules[Utils.Int + "," + Utils.Int]   = t;
        }
        public BitwiseAndExpressionNode(ExpressionNode leftExpression, ExpressionNode equalityExpression,
                                        Token token) : base(leftExpression, equalityExpression, token)
        {
            var t = new IntTypeNode();

            rules[Utils.Char + "," + Utils.Char] = t;
            rules[Utils.Char + "," + Utils.Int]  = t;
            rules[Utils.Int + "," + Utils.Char]  = t;
            rules[Utils.Int + "," + Utils.Int]   = t;
        }
        public ShiftExpressionNode(ExpressionNode leftExpression,
                                   ExpressionNode additiveExpression, Token token) : base(leftExpression, additiveExpression, token)
        {
            var t = new IntTypeNode();

            rules[Utils.Char + "," + Utils.Char] = t;
            rules[Utils.Char + "," + Utils.Int]  = t;
            rules[Utils.Int + "," + Utils.Char]  = t;
            rules[Utils.Int + "," + Utils.Int]   = t;
        }
Example #5
0
        public ExclusiveOrExpression(ExpressionNode leftExpression, ExpressionNode bitsAnd, Token token) :
            base(leftExpression, bitsAnd, token)
        {
            rules[Utils.Bool + "," + Utils.Bool] = new BoolTypeNode();
            var t = new IntTypeNode();

            rules[Utils.Char + "," + Utils.Char] = t;
            rules[Utils.Char + "," + Utils.Int]  = t;
            rules[Utils.Int + "," + Utils.Char]  = t;
            rules[Utils.Int + "," + Utils.Int]   = t;
        }
        public AdditiveExpressionNode(ExpressionNode leftExpression,
                                      ExpressionNode multExpression, Token token) : base(leftExpression, multExpression, token)
        {
            var tInt   = new IntTypeNode();
            var tFloat = new FloatTypeNode();

            rules[Utils.Int + "," + Utils.Int]   = tInt;
            rules[Utils.Int + "," + Utils.Char]  = tInt;
            rules[Utils.Char + "," + Utils.Int]  = tInt;
            rules[Utils.Char + "," + Utils.Char] = tInt;

            rules[Utils.Float + "," + Utils.Int]   = tFloat;
            rules[Utils.Int + "," + Utils.Float]   = tFloat;
            rules[Utils.Float + "," + Utils.Float] = tFloat;
            rules[Utils.Float + "," + Utils.Char]  = tFloat;
            rules[Utils.Char + "," + Utils.Float]  = tFloat;
        }
Example #7
0
        public MultipicativeExpressionNode(ExpressionNode leftExpression,
                                           UnaryExpressionNode unaryExpression, Token token) : base(leftExpression, unaryExpression, token)
        {
            var tInt   = new IntTypeNode();
            var tFloat = new FloatTypeNode();

            rules[Utils.Int + "," + Utils.Int]   = tInt;
            rules[Utils.Char + "," + Utils.Int]  = tInt;
            rules[Utils.Int + "," + Utils.Char]  = tInt;
            rules[Utils.Int + "," + Utils.Float] = tFloat;
            rules[Utils.Float + "," + Utils.Int] = tFloat;

            rules[Utils.Float + "," + Utils.Float] = tFloat;
            rules[Utils.Float + "," + Utils.Char]  = tFloat;
            rules[Utils.Char + "," + Utils.Float]  = tFloat;

            rules[Utils.Char + "," + Utils.Char] = tInt;
        }
Example #8
0
 public object Visit(IntTypeNode n, object o)
 {
     return(null);
 }
Example #9
0
 public object Visit(IntTypeNode n, object o)
 {
     Append("int");
     return(null);
 }