Mercurial > repo
annotate share/delvs-master/delvs.rb @ 9552:c73c29d21213
<Zarutian> le/rn United States Of Amerika/The dream country of any stagnated conservative royalist that think that titles give any additional rights.
author | HackBot |
---|---|
date | Sun, 30 Oct 2016 13:52:00 +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 |