Added SynAn tests
This commit is contained in:
parent
ffcb50c707
commit
a4773edb76
53
generate.py
53
generate.py
@ -1,53 +0,0 @@
|
||||
from collections import defaultdict
|
||||
|
||||
data = open('./grammar.txt').read().split()
|
||||
|
||||
productions = defaultdict(lambda: [])
|
||||
|
||||
|
||||
def recurse(prod):
|
||||
prods = []
|
||||
if prod not in productions.keys():
|
||||
prods.append(prod)
|
||||
else:
|
||||
for p in productions[prod]:
|
||||
if len(p):
|
||||
prods += recurse(p[0])
|
||||
|
||||
return prods
|
||||
|
||||
|
||||
while len(data):
|
||||
name = data.pop(0)
|
||||
data.pop(0) # ->
|
||||
|
||||
symbols = []
|
||||
while True:
|
||||
symbol = data.pop(0)
|
||||
if symbol == '.':
|
||||
productions[name].append(symbols)
|
||||
break
|
||||
if symbol == '|':
|
||||
productions[name].append(symbols)
|
||||
symbols = []
|
||||
continue
|
||||
symbols.append(symbol)
|
||||
|
||||
for prod, defs in productions.items():
|
||||
func = f"""private void {prod}() {{
|
||||
Token token = lexAn.peekToken();
|
||||
switch(token.symbol()) {{
|
||||
"""
|
||||
for d in defs:
|
||||
for r in recurse(d[0]):
|
||||
func += f" case {r}:\n"
|
||||
|
||||
func += f' System.out.println("{prod} -> {defs}");'
|
||||
|
||||
for d2 in d:
|
||||
if d2.isupper():
|
||||
func += f"check({d2});"
|
||||
|
||||
func += """ }
|
||||
}"""
|
||||
print(func)
|
2
prg/synan/fail1.pins25
Normal file
2
prg/synan/fail1.pins25
Normal file
@ -0,0 +1,2 @@
|
||||
fun a() =
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2>3) || (1<=2) && 1 >= c))^^^^^
|
4
prg/synan/fail10.pins25
Normal file
4
prg/synan/fail10.pins25
Normal file
@ -0,0 +1,4 @@
|
||||
fun a() =
|
||||
while 1 then
|
||||
neki
|
||||
end
|
24
prg/synan/fail11.pins25
Normal file
24
prg/synan/fail11.pins25
Normal file
@ -0,0 +1,24 @@
|
||||
var _kfoai = 8 * "neki"
|
||||
var fkaio92j0a = 1 * 'a'
|
||||
|
||||
fun a (c,dvv,d,f,d)
|
||||
fun a() =
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
else
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
||||
while !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ do
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
1
prg/synan/fail12.pins25
Normal file
1
prg/synan/fail12.pins25
Normal file
@ -0,0 +1 @@
|
||||
fun a() =
|
2
prg/synan/fail13.pins25
Normal file
2
prg/synan/fail13.pins25
Normal file
@ -0,0 +1,2 @@
|
||||
fun a() =
|
||||
1,2,
|
26
prg/synan/fail14.pins25
Normal file
26
prg/synan/fail14.pins25
Normal file
@ -0,0 +1,26 @@
|
||||
fun a() =
|
||||
|
||||
let var a = 1 in 1 end,
|
||||
|
||||
let fun a (c,dvv,d,f,d)=
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as,
|
||||
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end,
|
||||
var a = 10 * "wawawaw"
|
||||
fun b() fun c(a,a,v) in
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
26
prg/synan/fail15.pins25
Normal file
26
prg/synan/fail15.pins25
Normal file
@ -0,0 +1,26 @@
|
||||
fun a() =
|
||||
|
||||
let var a = 1 in 1 end,
|
||||
|
||||
let fun a (c,dvv,d,f,d)=
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as,
|
||||
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
var a = 10 * "wawawaw"
|
||||
fun b(), fun c(a,a,v) in
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
1
prg/synan/fail16.pins25
Normal file
1
prg/synan/fail16.pins25
Normal file
@ -0,0 +1 @@
|
||||
var a = "10" * "msl"
|
1
prg/synan/fail17.pins25
Normal file
1
prg/synan/fail17.pins25
Normal file
@ -0,0 +1 @@
|
||||
var a = "10" * 10
|
1
prg/synan/fail18.pins25
Normal file
1
prg/synan/fail18.pins25
Normal file
@ -0,0 +1 @@
|
||||
fun a(b,1)
|
2
prg/synan/fail19.pins25
Normal file
2
prg/synan/fail19.pins25
Normal file
@ -0,0 +1,2 @@
|
||||
fun a() =
|
||||
nka(aka(a((1 != 2 && 1/a%e+2-f/d*sa = (1 != 2 && 1/a%e+2-f/d*sa)))
|
2
prg/synan/fail2.pins25
Normal file
2
prg/synan/fail2.pins25
Normal file
@ -0,0 +1,2 @@
|
||||
fun a() =
|
||||
a==b==c
|
1
prg/synan/fail20.pins25
Normal file
1
prg/synan/fail20.pins25
Normal file
@ -0,0 +1 @@
|
||||
var a = 10 + "a"
|
2
prg/synan/fail3.pins25
Normal file
2
prg/synan/fail3.pins25
Normal file
@ -0,0 +1,2 @@
|
||||
fun a =
|
||||
1
|
1
prg/synan/fail4.pins25
Normal file
1
prg/synan/fail4.pins25
Normal file
@ -0,0 +1 @@
|
||||
var a = 1 + 1
|
0
prg/synan/fail5.pins25
Normal file
0
prg/synan/fail5.pins25
Normal file
1
prg/synan/fail6.pins25
Normal file
1
prg/synan/fail6.pins25
Normal file
@ -0,0 +1 @@
|
||||
fun a(g,d,d,g,g,f,,gf)
|
4
prg/synan/fail7.pins25
Normal file
4
prg/synan/fail7.pins25
Normal file
@ -0,0 +1,4 @@
|
||||
fun a() =
|
||||
1,
|
||||
2
|
||||
3
|
3
prg/synan/fail8.pins25
Normal file
3
prg/synan/fail8.pins25
Normal file
@ -0,0 +1,3 @@
|
||||
fun a() =
|
||||
1//komentar,
|
||||
2
|
6
prg/synan/fail9.pins25
Normal file
6
prg/synan/fail9.pins25
Normal file
@ -0,0 +1,6 @@
|
||||
fun a() =
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
44
prg/synan/pass1.pins25
Normal file
44
prg/synan/pass1.pins25
Normal file
@ -0,0 +1,44 @@
|
||||
var _kfoai = 8 * "neki"
|
||||
var fkaio92j0a = 1 * 'a'
|
||||
|
||||
fun a (c,dvv,d,f,d)
|
||||
|
||||
fun b() =
|
||||
1
|
||||
|
||||
fun a() =
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as,
|
||||
nka(aka(a(1 != 2 && 1/a%e+2-f/d*sa, (1 != 2 && 1/a%e+2-f/d*sa)))) = 1 != 2 && 1/a%e+2-f/d*sa,
|
||||
nka(aka(a(1 != 2 && 1/a%e+2-f/d*sa, (1 != 2 && 1/a%e+2-f/d*sa))), njc(1+'a')) = 1 != 2 && 1/a%e+2-f/d*sa,
|
||||
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end,
|
||||
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
else
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
||||
,while !+-^+++(a-n()||b==(1 != (2 && 1)/a%(e+a()-2+mkla(a,g,"kof"-"string"%3+'j'&&2))-f/d*sa && osid*'a' < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ do
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
||||
|
37
prg/synan/pass2.pins25
Normal file
37
prg/synan/pass2.pins25
Normal file
@ -0,0 +1,37 @@
|
||||
fun noarg()
|
||||
fun onearg(a)
|
||||
fun multargs(a, b)
|
||||
fun funcassign(a) =
|
||||
a = 1
|
||||
|
||||
var a = 1
|
||||
var b = 'a'
|
||||
var c = "test"
|
||||
var e = 'a', "test", 4, 4 * 'a'
|
||||
var f = 1 * 3
|
||||
var g = 1 * 'a'
|
||||
var h = 4 * "aaa"
|
||||
var i =
|
||||
|
||||
fun a() =
|
||||
1, 'a', "a",
|
||||
a, neki(a, 1, 'a', "a"),
|
||||
a^, a^^,
|
||||
+a, -a, !a, ^a, +-!^a,
|
||||
a * b, a / b, a % b, a * b / c % d,
|
||||
a + b, a - b,
|
||||
a == b, a != b, a < b, a > b, a <= b, a >= b,
|
||||
a && b, a && b && c,
|
||||
a || b, a || b || c,
|
||||
(1), (a + b), (a - (!(1) * 2)),
|
||||
a + 1 = b - 1,
|
||||
if a then b end,
|
||||
if a == 3 then b = 1, !c end,
|
||||
if !a then b else a = 3 * a end,
|
||||
if a then b else a, b end,
|
||||
while a <= 10 do a + 1 end,
|
||||
while a <= 10 do a + 1, ^c end,
|
||||
let fun a(b, c) in !b end,
|
||||
let fun a(b, c) var e = 'o' in !b end,
|
||||
let fun a(b, c) in !b, 4 end,
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^
|
26
prg/synan/pass3.pins25
Normal file
26
prg/synan/pass3.pins25
Normal file
@ -0,0 +1,26 @@
|
||||
fun a() =
|
||||
|
||||
let var a = 1 in 1 end,
|
||||
|
||||
let fun a (c,dvv,d,f,d)=
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as,
|
||||
|
||||
if !+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^ then
|
||||
mfksa(arg1, arg2) = kdoisk(),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
var a = 10 * "wawawaw"
|
||||
fun b() fun c(a,a,v) in
|
||||
!+-^+++(a||b==(1 != 2 && 1/a%e+2-f/d*sa < (2 && 3) || (1>2) || (1<=2) && 1 >= c))^^^^^,
|
||||
mfksa(arg1, arg2) = kdoisk(a(1)),
|
||||
kajs(a,c,c,1,4,(1+2)&&9^^),
|
||||
a,// komentar
|
||||
_kpofad29-a0as
|
||||
end
|
||||
|
7
prg/synan/run-tests.sh
Normal file
7
prg/synan/run-tests.sh
Normal file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
for file in *.pins25; do
|
||||
echo "Running $file"
|
||||
java ../../src/pins25/phase/SynAn.java "$file" 2>&1 | tail -n 1
|
||||
printf "\n"
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user