Advertisement
DaxSoft

C++RXP

Jan 3rd, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1.  
  2.  
  3. module Cplus
  4. extend self
  5.  
  6. def debug(str)
  7. (@data ||= {}).clear
  8. (@boolean ||= {}).clear
  9. (@var ||= {}).clear
  10. @isnt = ->(i, t=0) {
  11. return false if !(i =~ /int|long|void|char|bool/) and t == 0
  12. return true
  13. }
  14. _parse = parse(str)
  15. elements
  16. end
  17.  
  18. def parse(stri)
  19. stri = stri.split(/\n/)
  20.  
  21. stri.collect! { |str|
  22.  
  23. # type0 ex: int main()
  24. if str =~ /^(.+)\(\)/im
  25. raise("Error") unless @isnt[$1]
  26. @data[($&.to_s + $'.to_s).symbol] = ""
  27. @boolean[($&.to_s + $'.to_s).symbol] = true
  28. next
  29. end
  30.  
  31. if @boolean[@boolean.last_key]
  32. next if str =~ /^{/
  33. if str =~ /^}/
  34. @boolean[@boolean.last_key] = false
  35. next
  36. else
  37. @data[@data.last_key] << str + "\n"
  38. end
  39. end
  40. }
  41. end
  42.  
  43. def elements
  44. @data.keys.collect! { |i|
  45. if i =~ /(\w+)/i
  46. if @isnt[$1]
  47. @data[i].split(/\n/).collect! { |n|
  48. next puts $1 if n =~ /std::cout << \"(.*)\"\;/i
  49. next @var[$1.symbol] = $2 if n =~ /int (\w+)=(\d+);/i
  50. next @var[$1.symbol] = $2 if n =~ /(\w+) = (\d+);/i
  51. next puts @var[$1.symbol] if n =~ /std::cout << (\w+);/
  52. next @var[$1.symbol] = String(@var[$1.symbol].to_i.next) if n =~ /(\w+)\++;/
  53.  
  54. }
  55. end
  56. end
  57. next
  58. }
  59. end
  60. end
  61.  
  62. #~ ss = %q(std::count << "Hello World!\n";)
  63. #~ s = ->(str) { return $1 if str =~ /std::count << \"(.*)\"\;/i }
  64. #~ puts s[ss]
  65.  
  66.  
  67. Cplus.debug(%q(
  68.  
  69. int main()
  70. {
  71. // declaring variables:
  72. int a;
  73. int b;
  74. int result;
  75.  
  76. // process:
  77. a = 5;
  78. b = 2;
  79. a++;
  80.  
  81. // print out the result:
  82. std::cout << a;
  83. std::cout << b;
  84. }
  85.  
  86. ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement