Skip to content

Commit 441d49b

Browse files
committed
Created batch file
1 parent 834cd22 commit 441d49b

File tree

20 files changed

+3535
-265
lines changed

20 files changed

+3535
-265
lines changed

Compiler/Demo.j

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,25 @@
44
.method static public main([Ljava/lang/String;)V
55
.limit stack 100
66
.limit locals 100
7-
new java/lang/StringBuilder
8-
dup
9-
invokespecial java/lang/StringBuilder/<init>()V
10-
ldc "h"
11-
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12-
ldc 9
13-
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
14-
ldc "p"
15-
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16-
ldc 0.9
17-
invokevirtual java/lang/StringBuilder/append(F)Ljava/lang/StringBuilder;
18-
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
19-
astore 0
20-
new java/lang/StringBuilder
21-
dup
22-
invokespecial java/lang/StringBuilder/<init>()V
23-
aload 0
24-
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25-
ldc "h"
26-
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27-
ldc 98
28-
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
29-
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
30-
astore 1
31-
getstatic java/lang/System/out Ljava/io/PrintStream;
32-
aload 0
33-
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
7+
ldc 6
8+
istore 0
349
getstatic java/lang/System/out Ljava/io/PrintStream;
35-
aload 1
36-
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
10+
iload 0
11+
invokevirtual java/io/PrintStream/println(I)V
12+
ldc 5.4
13+
fstore 1
14+
ldc "Hellow"
15+
astore 2
3716
getstatic java/lang/System/out Ljava/io/PrintStream;
3817
new java/lang/StringBuilder
3918
dup
4019
invokespecial java/lang/StringBuilder/<init>()V
41-
aload 0
42-
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43-
aload 1
20+
aload 2
4421
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22+
fload 1
23+
invokevirtual java/lang/StringBuilder/append(F)Ljava/lang/StringBuilder;
24+
iload 0
25+
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
4526
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
4627
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
4728
return

Compiler/code.pc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
e="h"+9+"p"+0.9
2-
r=e+"h"+98
3-
println(e)
4-
println(r)
5-
println(e+r)
1+
a=6
2+
println(a)
3+
f=5.4
4+
str="Hellow"
5+
println(str+f+a)

Compiler/src/pc/compiler/Compiler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public String visitStringAddVariable(StringAddVariableContext ctx) {
153153
type = "a";
154154
appendToFile("\nnew java/lang/StringBuilder");
155155
appendToFile("\ndup\ninvokespecial java/lang/StringBuilder/<init>()V");
156-
appendToFile("\naload " + tmp);
156+
appendToFile("\n" + type + "load " + tmp);
157157
appendToFile("\ninvokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;");
158158
visit(ctx.right);
159159
appendToFile("\ninvokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;");
@@ -184,7 +184,9 @@ public String visitStringAddVar(StringAddVarContext ctx) {
184184
if(symbolTable.get(ctx.var.getText())!=null) {
185185
SymbolTableNode tmp = symbolTable.get(ctx.var.getText());
186186
type = tmp.getType();
187-
appendToFile("\naload " + tmp);
187+
appendToFile("\n" + type + "load " + tmp);
188+
if(!type.equals("Ljava/lang/String;"))
189+
type = type.toUpperCase();
188190
appendToFile("\ninvokevirtual java/lang/StringBuilder/append(" + type + ")Ljava/lang/StringBuilder;");
189191
}
190192
return null;

Compiler/src/pc/compiler/Main.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static void main(String[] args) throws IOException {
2828
CommonTokenStream tokens = new CommonTokenStream(lexer);
2929
PCParser parser = new PCParser(tokens);
3030
ParseTree tree = parser.program();
31-
showTree(parser, tree);
31+
//showTree(parser, tree);
3232
new Compiler("Demo.j").visit(tree); //Begins the creation of .j File
3333
runProcess(compile);
3434
runProcess(run);

CompilerInJava.bat

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@ECHO OFF
2+
TITLE CompilerInJava
3+
IF NOT EXIST code.pc (
4+
cp Compiler/code.pc .)
5+
IF EXIST classes (
6+
rmdir classes /s /q)
7+
mkdir classes
8+
mkdir classes\src
9+
mkdir classes\lib
10+
javac -cp Parser/lib/antlr.jar -d classes/src/ Parser/src/pc/parser/*.java
11+
javac -cp Parser/lib/antlr.jar;Parser/src/;Compiler/src/ -d classes/src/ Compiler/src/pc/compiler/*.java
12+
cp code.pc classes/src/
13+
cp Compiler/lib/jasmin.jar classes/lib/
14+
cp Parser/lib/antlr.jar classes/lib/
15+
cd classes/src/
16+
java -cp .;../lib/antlr.jar pc.compiler.Main
17+
java -jar ../lib/jasmin.jar Demo.j
18+
java Demo
19+
PAUSE

Parser/bin/pc/parser/PC.tokens

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,42 @@ T__6=7
88
T__7=8
99
T__8=9
1010
T__9=10
11-
DIGIT=11
12-
DECIMAL=12
13-
STRING=13
14-
IDENTIFIER=14
15-
WHITESPACE=15
11+
T__10=11
12+
T__11=12
13+
T__12=13
14+
T__13=14
15+
T__14=15
16+
T__15=16
17+
T__16=17
18+
T__17=18
19+
T__18=19
20+
T__19=20
21+
T__20=21
22+
T__21=22
23+
DIGIT=23
24+
DECIMAL=24
25+
STRING=25
26+
IDENTIFIER=26
27+
WHITESPACE=27
1628
'print('=1
1729
')'=2
1830
'println('=3
1931
'='=4
2032
','=5
21-
'+'=6
22-
'*'=7
23-
'/'=8
24-
'-'=9
25-
'\n'=10
33+
'if '=6
34+
':'=7
35+
'else'=8
36+
'=='=9
37+
'== null'=10
38+
'!='=11
39+
'!= null'=12
40+
'<='=13
41+
'>='=14
42+
'<'=15
43+
'>'=16
44+
'!'=17
45+
'+'=18
46+
'*'=19
47+
'/'=20
48+
'-'=21
49+
'\n'=22

Parser/bin/pc/parser/PCLexer.tokens

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,42 @@ T__6=7
88
T__7=8
99
T__8=9
1010
T__9=10
11-
DIGIT=11
12-
DECIMAL=12
13-
STRING=13
14-
IDENTIFIER=14
15-
WHITESPACE=15
11+
T__10=11
12+
T__11=12
13+
T__12=13
14+
T__13=14
15+
T__14=15
16+
T__15=16
17+
T__16=17
18+
T__17=18
19+
T__18=19
20+
T__19=20
21+
T__20=21
22+
T__21=22
23+
DIGIT=23
24+
DECIMAL=24
25+
STRING=25
26+
IDENTIFIER=26
27+
WHITESPACE=27
1628
'print('=1
1729
')'=2
1830
'println('=3
1931
'='=4
2032
','=5
21-
'+'=6
22-
'*'=7
23-
'/'=8
24-
'-'=9
25-
'\n'=10
33+
'if '=6
34+
':'=7
35+
'else'=8
36+
'=='=9
37+
'== null'=10
38+
'!='=11
39+
'!= null'=12
40+
'<='=13
41+
'>='=14
42+
'<'=15
43+
'>'=16
44+
'!'=17
45+
'+'=18
46+
'*'=19
47+
'/'=20
48+
'-'=21
49+
'\n'=22

Parser/grammar/PC.g4

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ program : programPart+;
55
programPart : printStatement
66
| variableDefinition
77
| newLine
8+
| conditionStatement
89
;
910

1011
printStatement : 'print(' exp=expressions ')' #Print
@@ -15,10 +16,28 @@ variableDefinition : var=IDENTIFIER '=' exp=expressions ',' variableDefinition #
1516
| var=IDENTIFIER '=' exp=expressions #LastVariable
1617
;
1718

19+
conditionStatement : 'if ' exp=expressions ':' onTrue=block 'else' onFalse=block #IfElse
20+
;
21+
22+
block : programPart+
23+
;
24+
25+
conditionExpression : left=expression '==' right=expression #Equal
26+
| exp=expression '== null' #Null
27+
| left=expression '!=' right=expression #NotEqual
28+
| exp=expression '!= null' #NotNull
29+
| left=expression '<=' right=expression #LessEqual
30+
| left=expression '>=' right=expression #HighEqual
31+
| left=expression '<' right=expression #Less
32+
| left=expression '>' right=expression #High
33+
| '!' exp=expression #Not
34+
;
35+
1836
expressions : stringExpression+
1937
| expression+
38+
| conditionExpression+
2039
;
21-
40+
2241
stringExpression : stringRead
2342
| stringMultiply
2443
| stringConcat
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
T__0=1
2+
T__1=2
3+
T__2=3
4+
T__3=4
5+
T__4=5
6+
T__5=6
7+
T__6=7
8+
T__7=8
9+
T__8=9
10+
T__9=10
11+
T__10=11
12+
T__11=12
13+
T__12=13
14+
T__13=14
15+
T__14=15
16+
T__15=16
17+
T__16=17
18+
T__17=18
19+
T__18=19
20+
T__19=20
21+
T__20=21
22+
T__21=22
23+
DIGIT=23
24+
DECIMAL=24
25+
STRING=25
26+
IDENTIFIER=26
27+
WHITESPACE=27
28+
'print('=1
29+
')'=2
30+
'println('=3
31+
'='=4
32+
','=5
33+
'if '=6
34+
':'=7
35+
'else'=8
36+
'=='=9
37+
'== null'=10
38+
'!='=11
39+
'!= null'=12
40+
'<='=13
41+
'>='=14
42+
'<'=15
43+
'>'=16
44+
'!'=17
45+
'+'=18
46+
'*'=19
47+
'/'=20
48+
'-'=21
49+
'\n'=22

0 commit comments

Comments
 (0)