summaryrefslogtreecommitdiff
path: root/tests/examplefiles/example.kn
blob: bfd017f15cfc1a2fd1c44943c4b351b8b39d73dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{ Quine in Kuin. @tatt61880 }
func main()
    func quine(str: []char)
        var s: []char :: ""
        foreach c(str)
            switch(c)
            case '\n'
                do s :~ "\\n\" ~\n    | \""
            case '\\', '"'
                do s :~ "\\\{c}"
            default
                do s :~ c.toStr()
            end switch
        end foreach
        do cui@print(str ~ s ~ "\"\n    do quine(str)\nend func\n")
    end func
    const str: []char :: "" ~
    | "{ Quine in Kuin. @tatt61880 }\n" ~
    | "func main()\n" ~
    | "    func quine(str: []char)\n" ~
    | "        var s: []char :: \"\"\n" ~
    | "        foreach c(str)\n" ~
    | "            switch(c)\n" ~
    | "            case '\\n'\n" ~
    | "                do s :~ \"\\\\n\\\" ~\\n    | \\\"\"\n" ~
    | "            case '\\\\', '\"'\n" ~
    | "                do s :~ \"\\\\\\{c}\"\n" ~
    | "            default\n" ~
    | "                do s :~ c.toStr()\n" ~
    | "            end switch\n" ~
    | "        end foreach\n" ~
    | "        do cui@print(str ~ s ~ \"\\\"\\n    do quine(str)\\nend func\\n\")\n" ~
    | "    end func\n" ~
    | "    const str: []char :: \"\" ~\n" ~
    | "    | \""
    do quine(str)
end func