diff --git a/generate.py b/generate.py deleted file mode 100644 index 4d5ab82..0000000 --- a/generate.py +++ /dev/null @@ -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) diff --git a/prg/synan/fail1.pins25 b/prg/synan/fail1.pins25 new file mode 100644 index 0000000..1eb8b34 --- /dev/null +++ b/prg/synan/fail1.pins25 @@ -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))^^^^^ diff --git a/prg/synan/fail10.pins25 b/prg/synan/fail10.pins25 new file mode 100644 index 0000000..5f35383 --- /dev/null +++ b/prg/synan/fail10.pins25 @@ -0,0 +1,4 @@ +fun a() = + while 1 then + neki + end \ No newline at end of file diff --git a/prg/synan/fail11.pins25 b/prg/synan/fail11.pins25 new file mode 100644 index 0000000..546ccce --- /dev/null +++ b/prg/synan/fail11.pins25 @@ -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 + diff --git a/prg/synan/fail12.pins25 b/prg/synan/fail12.pins25 new file mode 100644 index 0000000..4d8e196 --- /dev/null +++ b/prg/synan/fail12.pins25 @@ -0,0 +1 @@ +fun a() = diff --git a/prg/synan/fail13.pins25 b/prg/synan/fail13.pins25 new file mode 100644 index 0000000..1cfce9f --- /dev/null +++ b/prg/synan/fail13.pins25 @@ -0,0 +1,2 @@ +fun a() = + 1,2, \ No newline at end of file diff --git a/prg/synan/fail14.pins25 b/prg/synan/fail14.pins25 new file mode 100644 index 0000000..6c1099d --- /dev/null +++ b/prg/synan/fail14.pins25 @@ -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 + diff --git a/prg/synan/fail15.pins25 b/prg/synan/fail15.pins25 new file mode 100644 index 0000000..7702b06 --- /dev/null +++ b/prg/synan/fail15.pins25 @@ -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 + diff --git a/prg/synan/fail16.pins25 b/prg/synan/fail16.pins25 new file mode 100644 index 0000000..5afb6b8 --- /dev/null +++ b/prg/synan/fail16.pins25 @@ -0,0 +1 @@ +var a = "10" * "msl" \ No newline at end of file diff --git a/prg/synan/fail17.pins25 b/prg/synan/fail17.pins25 new file mode 100644 index 0000000..50ff1ec --- /dev/null +++ b/prg/synan/fail17.pins25 @@ -0,0 +1 @@ +var a = "10" * 10 \ No newline at end of file diff --git a/prg/synan/fail18.pins25 b/prg/synan/fail18.pins25 new file mode 100644 index 0000000..08bf284 --- /dev/null +++ b/prg/synan/fail18.pins25 @@ -0,0 +1 @@ +fun a(b,1) \ No newline at end of file diff --git a/prg/synan/fail19.pins25 b/prg/synan/fail19.pins25 new file mode 100644 index 0000000..d43d694 --- /dev/null +++ b/prg/synan/fail19.pins25 @@ -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))) \ No newline at end of file diff --git a/prg/synan/fail2.pins25 b/prg/synan/fail2.pins25 new file mode 100644 index 0000000..16c9b1e --- /dev/null +++ b/prg/synan/fail2.pins25 @@ -0,0 +1,2 @@ +fun a() = + a==b==c \ No newline at end of file diff --git a/prg/synan/fail20.pins25 b/prg/synan/fail20.pins25 new file mode 100644 index 0000000..2940059 --- /dev/null +++ b/prg/synan/fail20.pins25 @@ -0,0 +1 @@ +var a = 10 + "a" \ No newline at end of file diff --git a/prg/synan/fail3.pins25 b/prg/synan/fail3.pins25 new file mode 100644 index 0000000..be4dcbf --- /dev/null +++ b/prg/synan/fail3.pins25 @@ -0,0 +1,2 @@ +fun a = + 1 \ No newline at end of file diff --git a/prg/synan/fail4.pins25 b/prg/synan/fail4.pins25 new file mode 100644 index 0000000..15a9ae4 --- /dev/null +++ b/prg/synan/fail4.pins25 @@ -0,0 +1 @@ +var a = 1 + 1 \ No newline at end of file diff --git a/prg/synan/fail5.pins25 b/prg/synan/fail5.pins25 new file mode 100644 index 0000000..e69de29 diff --git a/prg/synan/fail6.pins25 b/prg/synan/fail6.pins25 new file mode 100644 index 0000000..0889787 --- /dev/null +++ b/prg/synan/fail6.pins25 @@ -0,0 +1 @@ +fun a(g,d,d,g,g,f,,gf) \ No newline at end of file diff --git a/prg/synan/fail7.pins25 b/prg/synan/fail7.pins25 new file mode 100644 index 0000000..e33167f --- /dev/null +++ b/prg/synan/fail7.pins25 @@ -0,0 +1,4 @@ +fun a() = + 1, + 2 + 3 \ No newline at end of file diff --git a/prg/synan/fail8.pins25 b/prg/synan/fail8.pins25 new file mode 100644 index 0000000..65d91f8 --- /dev/null +++ b/prg/synan/fail8.pins25 @@ -0,0 +1,3 @@ +fun a() = + 1//komentar, + 2 \ No newline at end of file diff --git a/prg/synan/fail9.pins25 b/prg/synan/fail9.pins25 new file mode 100644 index 0000000..0e201aa --- /dev/null +++ b/prg/synan/fail9.pins25 @@ -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 diff --git a/prg/synan/pass1.pins25 b/prg/synan/pass1.pins25 new file mode 100644 index 0000000..cf66a47 --- /dev/null +++ b/prg/synan/pass1.pins25 @@ -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 + + diff --git a/prg/synan/pass2.pins25 b/prg/synan/pass2.pins25 new file mode 100644 index 0000000..a3f8c25 --- /dev/null +++ b/prg/synan/pass2.pins25 @@ -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))^^^^^ \ No newline at end of file diff --git a/prg/synan/pass3.pins25 b/prg/synan/pass3.pins25 new file mode 100644 index 0000000..76c150a --- /dev/null +++ b/prg/synan/pass3.pins25 @@ -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 + diff --git a/prg/synan/run-tests.sh b/prg/synan/run-tests.sh new file mode 100644 index 0000000..307eeca --- /dev/null +++ b/prg/synan/run-tests.sh @@ -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 \ No newline at end of file