annotate delvs-master/delvs.rb @ 3250:5363e875a51b

<hagb4rd> pastelog oerjan.*angel
author HackBot
date Sun, 30 Jun 2013 01:34:12 +0000
parents 276f475af97b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3122
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
1 #!/usr/bin/env ruby
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
2 # NOTE: this proram was just made for the lulz, PLEASE DO NOT USE THIS
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
3 # Please use the actually semi-well written delvs interpreter writtin in C, because this isn't even close to the actual delvs interpreter
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
4 require 'io/console'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
5
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
6 class RuntimeData
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
7 attr_accessor :c
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
8 attr_accessor :v
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
9 attr_accessor :i
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
10 attr_accessor :f
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
11 attr_accessor :p
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
12
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
13 def initialize
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
14 @c = ""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
15 @i = 0
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
16 @v = Array.new 30000, 0
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
17 @p = 15000
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
18 @f = ""
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
19 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
20 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
21
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
22 def dummy_lexer d
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
23 while d.i <= d.c.length do
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
24 return d.i if d.c[d.i] == ']'
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
25 d.i += 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
26 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
27 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
28
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
29 def lexer d
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
30 while d.i <= d.c.length do
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
31 case d.c[d.i]
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
32 when '>' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
33 d.p += 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
34
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
35 when '<' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
36 d.p -= 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
37
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
38 when '+' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
39 d.v[d.p] += 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
40
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
41 when '-' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
42 d.v[d.p] -= 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
43
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
44 when '.' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
45 print d.v[d.p].chr
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
46
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
47 when ',' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
48 d.v[d.p] = IO.console.getch.ord
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
49
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
50 when '[' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
51 r = d.i + 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
52 d.i = dlexer d if !d.v[d.p]
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
53 while d.v[d.p] != 0 do
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
54 d.i = r
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
55 d = lexer d
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
56 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
57
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
58 when ']' then
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
59 return d
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
60
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
61 else
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
62 # Everything else is comments
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
63 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
64 d.i += 1
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
65 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
66 end
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
67
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
68 # example usage:
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
69 # data = RuntimeData.new
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
70 # data.c = "+++++ +++++ [ > +++++ +++++ > + << - ] > ++++ . + . > ."
276f475af97b <L8D> tar xf master.tar.gz
HackBot
parents:
diff changeset
71 # lexer data