a = 1
c = null
x = true
a = f(7)
a += "something"
a = f.g.h(7)

// 'to' infix function parsing
a = b.to(c)
a = 1 to "x"
a = b to c
d = e(f to g)
d = e(f to g, h to k)
h = i() to j.k.l.m(n)
o = p.q(r) to s.t()
u = v.w(x to y) to z

rootProject.name = "something"

block {
    a = 1
    b = 2
    c += 3
}
block("param") {
    a = 1
}

f()
f(x=y)
f.g.h.i.j.k(test)
f(1, x, "s", g())
f(a = b, c = d)

id("plugin").version("7")
f(1).g(2).h(3)

// things we would prefer to restrict, but aren't worth complicating the grammar over
5
a = f(1).g(2)
a to 1
1 to a
a to b

// errors
// b = this
// a = (1)
// a = false(7)
// a = null(8)
// a = "foo".bar(1)
// a -= 7
// a.b.c = 1
// d = a.b.c
// a.b {d = 1}
// a.b.c {d = 1}
// 1 { foo = "bar" }
// f(block{})
// f(1).x
// x.f(1).y
// f(1).x.f(2)
// "function"(1)
// 1(2)
// true(3)
// null(4)

// unsupported random infix function
// a from b
// a from 1
// 1 from a
// a = 1 from "x"
// a = b from c
// d = e(f from g)
// h = i() from j.k.l.m(n)
// o = p.q(r) from s.t()
// u = v.w(x to y) from z
