Skip to content

Commit 3144cb5

Browse files
Revised language grammar and fib example
1 parent c3f5ce5 commit 3144cb5

File tree

4 files changed

+35
-27
lines changed

4 files changed

+35
-27
lines changed

antlr-parser/examples/all-features.lang

+12
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,15 @@ func main() {
3636
else
3737
print(3)
3838
}
39+
func fib(n: Int)->Int {
40+
var f1=1
41+
var f2=1
42+
var i=n
43+
while( i>1 ){
44+
var temp = f1+f2
45+
f1=f2
46+
f2=temp
47+
i=i-1
48+
}
49+
return f2
50+
}

antlr-parser/src/main/antlr4/com/compilerprogramming/ezlang/antlr/EZLanguage.g4

+5-4
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,17 @@ varDeclaration
2222
;
2323

2424
typeName
25-
: simpleType
25+
: nominalType
2626
| arrayType
2727
;
2828

29-
simpleType
30-
: IDENTIFIER ('?')?
29+
nominalType
30+
: 'Int'
31+
| IDENTIFIER ('?')?
3132
;
3233

3334
arrayType
34-
: '[' simpleType ']' ('?')?
35+
: '[' nominalType ']' ('?')?
3536
;
3637

3738
functionDeclaration

optvm/src/test/java/com/compilerprogramming/ezlang/interpreter/TestInterpreter.java

+9-12
Original file line numberDiff line numberDiff line change
@@ -173,22 +173,19 @@ func foo()->Int {
173173
public void testFunction9() {
174174
String src = """
175175
func fib(n: Int)->Int {
176-
var i: Int;
177-
var temp: Int;
178-
var f1=1;
179-
var f2=1;
180-
i=n;
176+
var f1=1
177+
var f2=1
178+
var i=n
181179
while( i>1 ){
182-
temp = f1+f2;
183-
f1=f2;
184-
f2=temp;
185-
i=i-1;
180+
var temp = f1+f2
181+
f1=f2
182+
f2=temp
183+
i=i-1
186184
}
187-
return f2;
185+
return f2
188186
}
189-
190187
func foo()->Int {
191-
return fib(10);
188+
return fib(10)
192189
}
193190
""";
194191
var value = compileAndRun(src, "foo", Options.OPT);

seaofnodes/src/test/cases/fib/fib.ez

+9-11
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
func fib(n: Int)->Int {
2-
var i: Int;
3-
var temp=0;
4-
var f1=1;
5-
var f2=1;
6-
i=n;
2+
var f1=1
3+
var f2=1
4+
var i=n
75
while( i>1 ){
8-
temp = f1+f2;
9-
f1=f2;
10-
f2=temp;
11-
i=i-1;
6+
var temp = f1+f2
7+
f1=f2
8+
f2=temp
9+
i=i-1
1210
}
13-
return f2;
11+
return f2
1412
}
1513

1614
func foo()->Int {
17-
return fib(10);
15+
return fib(10)
1816
}

0 commit comments

Comments
 (0)