Skip to content

Commit

Permalink
Add tests for lexer
Browse files Browse the repository at this point in the history
  • Loading branch information
XChy committed Aug 6, 2023
1 parent 1dcc98c commit a77e70d
Show file tree
Hide file tree
Showing 19 changed files with 951 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ testcases/string.xsharp.bc
testcases/string.xsharp.o
LLVMIR/test/temp
XSharp/test/Parser/temp
XSharp/test/Lexer/temp
22 changes: 22 additions & 0 deletions XSharp/test/Lexer/arithmetic.xsharp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
void main()
{
i32 n;
n = inputI32();

i32 i=0;
i32 a=1;
i32 b=1;
i32 c=1;
u8 d = 0;
while (i<n){
a = c = (-a)+b*c/66;
a = b % 3 / 2 + 4 + (b = 4);
b = c;
i=i+1;
}
print(a);
print(b);
print(c);
print(-c);
print(!(c == -1));
}
121 changes: 121 additions & 0 deletions XSharp/test/Lexer/arithmetic.xsharp_tokens.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
1:5 Identifier:'void',
1:10 Identifier:'main',
1:10 OpenParenthesis:'(',
1:11 CloseParenthesis:')',
2:1 OpenBrace:'{',
3:8 Identifier:'i32',
3:10 Identifier:'n',
3:10 SentenceEnd:';',
4:6 Identifier:'n',
4:8 Operator:'=',
4:17 Identifier:'inputI32',
4:17 OpenParenthesis:'(',
4:18 CloseParenthesis:')',
4:19 SentenceEnd:';',
6:8 Identifier:'i32',
6:10 Identifier:'i',
6:11 Operator:'=',
6:12 Integer:'0',
6:12 SentenceEnd:';',
7:8 Identifier:'i32',
7:10 Identifier:'a',
7:11 Operator:'=',
7:12 Integer:'1',
7:12 SentenceEnd:';',
8:8 Identifier:'i32',
8:10 Identifier:'b',
8:11 Operator:'=',
8:12 Integer:'1',
8:12 SentenceEnd:';',
9:8 Identifier:'i32',
9:10 Identifier:'c',
9:11 Operator:'=',
9:12 Integer:'1',
9:12 SentenceEnd:';',
10:7 Identifier:'u8',
10:9 Identifier:'d',
10:11 Operator:'=',
10:13 Integer:'0',
10:13 SentenceEnd:';',
11:10 Keyword:'while',
11:11 OpenParenthesis:'(',
11:13 Identifier:'i',
11:14 Operator:'<',
11:15 Identifier:'n',
11:15 CloseParenthesis:')',
11:16 OpenBrace:'{',
12:10 Identifier:'a',
12:12 Operator:'=',
12:14 Identifier:'c',
12:16 Operator:'=',
12:17 OpenParenthesis:'(',
12:19 Operator:'-',
12:20 Identifier:'a',
12:20 CloseParenthesis:')',
12:22 Operator:'+',
12:23 Identifier:'b',
12:24 Operator:'*',
12:25 Identifier:'c',
12:26 Operator:'/',
12:28 Integer:'66',
12:28 SentenceEnd:';',
13:10 Identifier:'a',
13:12 Operator:'=',
13:14 Identifier:'b',
13:16 Operator:'%',
13:18 Integer:'3',
13:20 Operator:'/',
13:22 Integer:'2',
13:24 Operator:'+',
13:26 Integer:'4',
13:28 Operator:'+',
13:29 OpenParenthesis:'(',
13:31 Identifier:'b',
13:33 Operator:'=',
13:35 Integer:'4',
13:35 CloseParenthesis:')',
13:36 SentenceEnd:';',
14:10 Identifier:'b',
14:12 Operator:'=',
14:14 Identifier:'c',
14:14 SentenceEnd:';',
15:10 Identifier:'i',
15:11 Operator:'=',
15:12 Identifier:'i',
15:13 Operator:'+',
15:14 Integer:'1',
15:14 SentenceEnd:';',
16:5 CloseBrace:'}',
17:10 Identifier:'print',
17:10 OpenParenthesis:'(',
17:12 Identifier:'a',
17:12 CloseParenthesis:')',
17:13 SentenceEnd:';',
18:10 Identifier:'print',
18:10 OpenParenthesis:'(',
18:12 Identifier:'b',
18:12 CloseParenthesis:')',
18:13 SentenceEnd:';',
19:10 Identifier:'print',
19:10 OpenParenthesis:'(',
19:12 Identifier:'c',
19:12 CloseParenthesis:')',
19:13 SentenceEnd:';',
20:10 Identifier:'print',
20:10 OpenParenthesis:'(',
20:12 Operator:'-',
20:13 Identifier:'c',
20:13 CloseParenthesis:')',
20:14 SentenceEnd:';',
21:10 Identifier:'print',
21:10 OpenParenthesis:'(',
21:12 Operator:'!',
21:12 OpenParenthesis:'(',
21:14 Identifier:'c',
21:17 Operator:'==',
21:19 Operator:'-',
21:20 Integer:'1',
21:20 CloseParenthesis:')',
21:21 CloseParenthesis:')',
21:22 SentenceEnd:';',
22:1 CloseBrace:'}'
47 changes: 47 additions & 0 deletions XSharp/test/Lexer/class.xsharp
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
class Foo{

new(){
self.age = 0;
}

new(i32 a){
self.age = a;
}

void setAge(i32 age){
self.age = age;
}

i32 getAge(){
return self.age;
}

i32 age;

}


i32 main()
{
i64 n = inputI32();

Foo[] c = new Foo[](n);

i64 i = n;
while(i-1>=0)
{
c[i - 1] = new Foo(inputI32());
i = i - 1;
}

double sum = 0;
i = n;
while(i - 1 >= 0){
sum = sum + c[i - 1].getAge();
i = i - 1;
}

print("Average age is:");
print(sum / n);
return 0;
}
173 changes: 173 additions & 0 deletions XSharp/test/Lexer/class.xsharp_tokens.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
1:6 Keyword:'class',
1:10 Identifier:'Foo',
1:10 OpenBrace:'{',
3:4 Keyword:'new',
3:4 OpenParenthesis:'(',
3:5 CloseParenthesis:')',
3:6 OpenBrace:'{',
4:9 Identifier:'self',
4:10 Dot:'.',
4:13 Identifier:'age',
4:15 Operator:'=',
4:17 Integer:'0',
4:17 SentenceEnd:';',
5:1 CloseBrace:'}',
7:4 Keyword:'new',
7:4 OpenParenthesis:'(',
7:8 Identifier:'i32',
7:10 Identifier:'a',
7:10 CloseParenthesis:')',
7:11 OpenBrace:'{',
8:9 Identifier:'self',
8:10 Dot:'.',
8:13 Identifier:'age',
8:15 Operator:'=',
8:17 Identifier:'a',
8:17 SentenceEnd:';',
9:1 CloseBrace:'}',
11:5 Identifier:'void',
11:12 Identifier:'setAge',
11:12 OpenParenthesis:'(',
11:16 Identifier:'i32',
11:20 Identifier:'age',
11:20 CloseParenthesis:')',
11:21 OpenBrace:'{',
12:9 Identifier:'self',
12:10 Dot:'.',
12:13 Identifier:'age',
12:15 Operator:'=',
12:19 Identifier:'age',
12:19 SentenceEnd:';',
13:1 CloseBrace:'}',
15:4 Identifier:'i32',
15:11 Identifier:'getAge',
15:11 OpenParenthesis:'(',
15:12 CloseParenthesis:')',
15:13 OpenBrace:'{',
16:11 Keyword:'return',
16:16 Identifier:'self',
16:17 Dot:'.',
16:20 Identifier:'age',
16:20 SentenceEnd:';',
17:1 CloseBrace:'}',
19:4 Identifier:'i32',
19:8 Identifier:'age',
19:8 SentenceEnd:';',
21:1 CloseBrace:'}',
24:4 Identifier:'i32',
24:9 Identifier:'main',
24:9 OpenParenthesis:'(',
24:10 CloseParenthesis:')',
25:1 OpenBrace:'{',
26:8 Identifier:'i64',
26:10 Identifier:'n',
26:12 Operator:'=',
26:21 Identifier:'inputI32',
26:21 OpenParenthesis:'(',
26:22 CloseParenthesis:')',
26:23 SentenceEnd:';',
28:8 Identifier:'Foo',
28:8 OpenBracket:'[',
28:9 CloseBracket:']',
28:12 Identifier:'c',
28:14 Operator:'=',
28:18 Keyword:'new',
28:22 Identifier:'Foo',
28:22 OpenBracket:'[',
28:23 CloseBracket:']',
28:24 OpenParenthesis:'(',
28:26 Identifier:'n',
28:26 CloseParenthesis:')',
28:27 SentenceEnd:';',
30:8 Identifier:'i64',
30:10 Identifier:'i',
30:12 Operator:'=',
30:14 Identifier:'n',
30:14 SentenceEnd:';',
31:10 Keyword:'while',
31:10 OpenParenthesis:'(',
31:12 Identifier:'i',
31:13 Operator:'-',
31:14 Integer:'1',
31:16 Operator:'>=',
31:17 Integer:'0',
31:17 CloseParenthesis:')',
32:5 OpenBrace:'{',
33:10 Identifier:'c',
33:10 OpenBracket:'[',
33:12 Identifier:'i',
33:14 Operator:'-',
33:16 Integer:'1',
33:16 CloseBracket:']',
33:19 Operator:'=',
33:23 Keyword:'new',
33:27 Identifier:'Foo',
33:27 OpenParenthesis:'(',
33:36 Identifier:'inputI32',
33:36 OpenParenthesis:'(',
33:37 CloseParenthesis:')',
33:38 CloseParenthesis:')',
33:39 SentenceEnd:';',
34:10 Identifier:'i',
34:12 Operator:'=',
34:14 Identifier:'i',
34:16 Operator:'-',
34:18 Integer:'1',
34:18 SentenceEnd:';',
35:5 CloseBrace:'}',
37:11 Identifier:'double',
37:15 Identifier:'sum',
37:17 Operator:'=',
37:19 Integer:'0',
37:19 SentenceEnd:';',
38:6 Identifier:'i',
38:8 Operator:'=',
38:10 Identifier:'n',
38:10 SentenceEnd:';',
39:10 Keyword:'while',
39:10 OpenParenthesis:'(',
39:12 Identifier:'i',
39:14 Operator:'-',
39:16 Integer:'1',
39:19 Operator:'>=',
39:21 Integer:'0',
39:21 CloseParenthesis:')',
39:22 OpenBrace:'{',
40:12 Identifier:'sum',
40:14 Operator:'=',
40:18 Identifier:'sum',
40:20 Operator:'+',
40:22 Identifier:'c',
40:22 OpenBracket:'[',
40:24 Identifier:'i',
40:26 Operator:'-',
40:28 Integer:'1',
40:28 CloseBracket:']',
40:30 Dot:'.',
40:36 Identifier:'getAge',
40:36 OpenParenthesis:'(',
40:37 CloseParenthesis:')',
40:38 SentenceEnd:';',
41:10 Identifier:'i',
41:12 Operator:'=',
41:14 Identifier:'i',
41:16 Operator:'-',
41:18 Integer:'1',
41:18 SentenceEnd:';',
42:5 CloseBrace:'}',
44:10 Identifier:'print',
44:10 OpenParenthesis:'(',
44:28 String:'Average age is:',
44:28 CloseParenthesis:')',
44:29 SentenceEnd:';',
45:10 Identifier:'print',
45:10 OpenParenthesis:'(',
45:14 Identifier:'sum',
45:16 Operator:'/',
45:18 Identifier:'n',
45:18 CloseParenthesis:')',
45:19 SentenceEnd:';',
46:11 Keyword:'return',
46:13 Integer:'0',
46:13 SentenceEnd:';',
47:1 CloseBrace:'}'
5 changes: 5 additions & 0 deletions XSharp/test/Lexer/helloworld.xsharp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
void main(){
print("Hello,World!");
}


11 changes: 11 additions & 0 deletions XSharp/test/Lexer/helloworld.xsharp_tokens.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
1:5 Identifier:'void',
1:10 Identifier:'main',
1:10 OpenParenthesis:'(',
1:11 CloseParenthesis:')',
1:12 OpenBrace:'{',
2:10 Identifier:'print',
2:10 OpenParenthesis:'(',
2:25 String:'Hello,World!',
2:25 CloseParenthesis:')',
2:26 SentenceEnd:';',
3:1 CloseBrace:'}'
Loading

0 comments on commit a77e70d

Please sign in to comment.