Guest User

Untitled

a guest
Jan 22nd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # Brainfuck to C parser
  3. # a quick hack by sebin thomas
  4. # feel free to poke around
  5. # have not actually tested with anything
  6. # Usage . python braintoc.py "<brainfuck code>"
  7. #
  8. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  9. # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  10. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  11. # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  12. # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  13. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  14. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  15. # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  16. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  17. # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  18. # POSSIBILITY OF SUCH DAMAGE
  19. import sys
  20.  
  21. def parse(string):
  22. cprog=""" #include<stdio.h>
  23. int main()
  24. {
  25.  
  26. static char a[30000], *ptr;
  27. ptr=a;
  28. """
  29. #to initialize the brainf*** environment
  30. parsedic={">":"++ptr; ","<":"--ptr; ","+":"++(*ptr); ","-":"--(*ptr); ",".":"""printf("%c",(*ptr)); """,",":"""scanf("%c",ptr); ""","[":""" while(*ptr) { ""","]":" }"}
  31. for i in string:
  32. if i in parsedic:
  33. cprog=cprog+parsedic[i]
  34. cprog=cprog+ " return 0; } "
  35. return cprog
  36.  
  37. # To compile the program and run it
  38. def compileandrun(code):
  39. a=open("out.c",'w+')
  40. a.write(code)
  41. a.close()
  42. print "compiling to c ... "
  43. os.system("gcc out.c -o bf")
  44. print "Output is as follows"
  45. os.system("./bf")
  46.  
  47. #main program
  48. if __name__=="__main__":
  49. string=''.join(sys.argv[1:])
  50. op=parse(string)
  51. print op
  52. compileandrun(op)
Add Comment
Please, Sign In to add comment