summaryrefslogtreecommitdiffstats
path: root/src/Compiler/Statement.java
blob: a74009d16b7ff38c6ba4f45f923af41d5d8ff5a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package Compiler;

import java.util.List;

abstract class Statement {

    static class ExpressionStatement extends Statement{
        ExpressionStatement(Expression expr){
            this.expr = expr;
        }


        final Expression expr;

        @Override
        public String getStatmentType() {
            return "exprStmt";
        }
    }

    static class IfStatement extends Statement{
        IfStatement(Expression condition, List<Statement> statements,List<Statement> elseStatements){
            this.condition=condition;
            this.statements=statements;
            this.elseStatements=elseStatements;
        }

        final Expression condition;
        final List<Statement> statements;
        final List<Statement> elseStatements;

        @Override
        public String getStatmentType() {
            return "ifStmt";
        }
    }


    static class VariableDeclaration extends Statement{
        VariableDeclaration(Token name,String type){
            this.name=name;
            this.type=type;
        }


        final Token name;
        final String type;

        @Override
        public String getStatmentType() {
            return "vardec";
        }

    }

    static class PrintStatement extends Statement{
        PrintStatement(Expression expr){
            this.expr=expr;
        }
        final Expression expr;

        @Override
        public String getStatmentType() {
            return "print";
        }
    }


    public abstract String getStatmentType();
}