Mercurial > repo
annotate share/delvs-master/delvs.rb @ 7946:8ecffca9813d
<moon__> mkx bin/hfs//erro \'You have discovered an eerie cavern. The air aboe the dark stone floor is alive ith vortices of purple light and dark, boiling clouds. Seemingly bottemless pits mark the surface. "$1" stand below\'
author | HackBot |
---|---|
date | Sat, 07 May 2016 18:36:18 +0000 |
parents | 38a5b4d8a98e |
children |
rev | line source |
---|---|
3840
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
1 #!/usr/bin/env ruby |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
2 # NOTE: this proram was just made for the lulz, PLEASE DO NOT USE THIS |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
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 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
4 require 'io/console' |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
5 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
6 class RuntimeData |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
7 attr_accessor :c |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
8 attr_accessor :v |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
9 attr_accessor :i |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
10 attr_accessor :f |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
11 attr_accessor :p |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
12 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
13 def initialize |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
14 @c = "" |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
15 @i = 0 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
16 @v = Array.new 30000, 0 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
17 @p = 15000 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
18 @f = "" |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
19 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
20 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
21 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
22 def dummy_lexer d |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
23 while d.i <= d.c.length do |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
24 return d.i if d.c[d.i] == ']' |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
25 d.i += 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
26 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
27 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
28 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
29 def lexer d |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
30 while d.i <= d.c.length do |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
31 case d.c[d.i] |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
32 when '>' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
33 d.p += 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
34 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
35 when '<' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
36 d.p -= 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
37 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
38 when '+' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
39 d.v[d.p] += 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
40 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
41 when '-' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
42 d.v[d.p] -= 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
43 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
44 when '.' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
45 print d.v[d.p].chr |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
46 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
47 when ',' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
48 d.v[d.p] = IO.console.getch.ord |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
49 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
50 when '[' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
51 r = d.i + 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
52 d.i = dlexer d if !d.v[d.p] |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
53 while d.v[d.p] != 0 do |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
54 d.i = r |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
55 d = lexer d |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
56 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
57 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
58 when ']' then |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
59 return d |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
60 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
61 else |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
62 # Everything else is comments |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
63 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
64 d.i += 1 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
65 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
66 end |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
67 |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
68 # example usage: |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
69 # data = RuntimeData.new |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
70 # data.c = "+++++ +++++ [ > +++++ +++++ > + << - ] > ++++ . + . > ." |
38a5b4d8a98e
<oerjan> rm -R share/delvs-master; mv delvs-master share
HackBot
parents:
diff
changeset
|
71 # lexer data |