OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [turing.go] - Blame information for rev 700

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 700 jeremybenn
// $G $F.go && $L $F.$A && ./$A.out
2
 
3
// Copyright 2009 The Go Authors. All rights reserved.
4
// Use of this source code is governed by a BSD-style
5
// license that can be found in the LICENSE file.
6
 
7
package main
8
 
9
// brainfuck
10
 
11
var p, pc int
12
var a [30000]byte
13
 
14
const prog = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.!"
15
 
16
func scan(dir int) {
17
        for nest := dir; dir*nest > 0; pc += dir {
18
                switch prog[pc+dir] {
19
                case ']':
20
                        nest--
21
                case '[':
22
                        nest++
23
                }
24
        }
25
}
26
 
27
func main() {
28
        r := ""
29
        for {
30
                switch prog[pc] {
31
                case '>':
32
                        p++
33
                case '<':
34
                        p--
35
                case '+':
36
                        a[p]++
37
                case '-':
38
                        a[p]--
39
                case '.':
40
                        r += string(a[p])
41
                case '[':
42
                        if a[p] == 0 {
43
                                scan(1)
44
                        }
45
                case ']':
46
                        if a[p] != 0 {
47
                                scan(-1)
48
                        }
49
                default:
50
                        if r != "Hello World!\n" {
51
                                panic(r)
52
                        }
53
                        return
54
                }
55
                pc++
56
        }
57
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.