fork download
  1. # Translate stack machine like code to Brainf**k
  2. # version 1.0.0
  3. # author: Leonardone @ NEETSDKASU
  4.  
  5. puts 'Generate code by Translate stack machine like code to Brainf**k'
  6.  
  7. sourcecode = STDIN.read
  8.  
  9. puts sourcecode
  10.  
  11. codes = sourcecode.strip.split("\n").map(&:strip)
  12.  
  13. s = ''
  14.  
  15. codes.each do |x|
  16. cmd, v = x.strip.split
  17. c = v.to_i
  18. case cmd
  19. when 'INPUT'
  20. s << ',>' * c
  21. when 'SWAP'
  22. s << '<' * c
  23. s << '[' + '>' * c + '+' + '<' * c + '-]'
  24. s << '>' * c.pred
  25. s << '[' + '<' * c.pred + '+' + '>' * c.pred + '-]'
  26. s << '>'
  27. s << '[<+>-]'
  28. when 'OUTPUT'
  29. s << '<.[-]' * c
  30. when 'PUSH'
  31. c = v[1].ord if v =~ /^'.+/
  32. s << '+' * c + '>'
  33. when 'DUP'
  34. s << '<' * c
  35. s << '[' + '>' * c + '+>+<' + '<' * c + '-]'
  36. s << '>' * c.succ
  37. s << '[' + '<' * c.succ + '+' + '>' * c.succ + '-]'
  38. end
  39. end
  40.  
  41. puts s
Success #stdin #stdout 0.02s 9768KB
stdin
INPUT 2
SWAP 2
OUTPUT 2
PUSH 'A'
DUP 1
OUTPUT 2
stdout
Generate code by Translate stack machine like code to Brainf**k
INPUT 2
SWAP 2
OUTPUT 2
PUSH 'A'
DUP 1
OUTPUT 2
,>,><<[>>+<<-]>[<+>-]>[<+>-]<.[-]<.[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++><[>+>+<<-]>>[<<+>>-]<.[-]<.[-]