Mercurial > repo
view 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 |
line wrap: on
line source
#!/usr/bin/env ruby # NOTE: this proram was just made for the lulz, PLEASE DO NOT USE THIS # Please use the actually semi-well written delvs interpreter writtin in C, because this isn't even close to the actual delvs interpreter require 'io/console' class RuntimeData attr_accessor :c attr_accessor :v attr_accessor :i attr_accessor :f attr_accessor :p def initialize @c = "" @i = 0 @v = Array.new 30000, 0 @p = 15000 @f = "" end end def dummy_lexer d while d.i <= d.c.length do return d.i if d.c[d.i] == ']' d.i += 1 end end def lexer d while d.i <= d.c.length do case d.c[d.i] when '>' then d.p += 1 when '<' then d.p -= 1 when '+' then d.v[d.p] += 1 when '-' then d.v[d.p] -= 1 when '.' then print d.v[d.p].chr when ',' then d.v[d.p] = IO.console.getch.ord when '[' then r = d.i + 1 d.i = dlexer d if !d.v[d.p] while d.v[d.p] != 0 do d.i = r d = lexer d end when ']' then return d else # Everything else is comments end d.i += 1 end end # example usage: # data = RuntimeData.new # data.c = "+++++ +++++ [ > +++++ +++++ > + << - ] > ++++ . + . > ." # lexer data