Mercurial > repo
view share/delvs-master/delvs.rb @ 7910:7d5f1c5e44b1
<moon__> mkx bin/hfs//erro You have discovered an eerie caven. The air above the dark stone floor is alive with vorices of purple light and dark, boiling clouds. Seemingly bottomless glowing pit mark the surface.
author | HackBot |
---|---|
date | Sat, 07 May 2016 00:41:47 +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