コード例 #1
0
ファイル: Expression.cs プロジェクト: hbarve1/Cobalt
        private static SyntaxNode ParseLevel0BinOperation(CobaltParser parser)
        {
            SyntaxNode left = ParseLevel1BinOperation(parser);

            if (parser.PeekToken() != null && parser.PeekToken().Class == TokenClass.BIN_OP
                && getPrecedence(parser.PeekToken().Value.ToString()) == 0)
            {
                string oper = parser.ReadToken().Value.ToString();
                BinOp ret = new BinOp(BinaryOperation.BOOL_OR);
                ret.AddLeave(left);
                ret.AddLeave(ParseLevel0BinOperation(parser));
                return ret;
            }

            return left;
        }
コード例 #2
0
ファイル: Expression.cs プロジェクト: hbarve1/Cobalt
        private static SyntaxNode ParseLevel6BinOperation(CobaltParser parser)
        {
            SyntaxNode left = ParseValue(parser);
            if (parser.PeekToken() != null && parser.PeekToken().Class == TokenClass.BIN_OP
                && getPrecedence(parser.PeekToken().Value.ToString()) == 6)
            {

                string oper = parser.ReadToken().Value.ToString();
                Console.WriteLine(oper);
                BinOp ret = new BinOp(oper == "*" ? BinaryOperation.MUL : BinaryOperation.DIV);
                ret.AddLeave(left);
                ret.AddLeave(ParseLevel6BinOperation(parser));
                return ret;
            }
            return left;
        }
コード例 #3
0
ファイル: Expression.cs プロジェクト: hbarve1/Cobalt
        private static SyntaxNode ParseLevel2BinOperation(CobaltParser parser)
        {
            SyntaxNode left = ParseLevel3BinOperation(parser);

            if (parser.PeekToken() != null && parser.PeekToken().Class == TokenClass.BIN_OP
                && getPrecedence(parser.PeekToken().Value.ToString()) == 2)
            {
                string oper = parser.ReadToken().Value.ToString();
                BinOp ret = new BinOp(oper == "==" ? BinaryOperation.EQUAL : BinaryOperation.NOT_EQUAL);
                ret.AddLeave(left);
                ret.AddLeave(ParseLevel2BinOperation(parser));
                return ret;
            }

            return left;
        }