A basic compiler based off of thejameskyle's super-tiny-compiler

example.mc 1.2KB

1234567891011121314151617181920212223242526272829303132333435
  1. ; This is a test program
  2. (assign twelve 12) ; This assigns the variable twelve, to the number literal 12
  3. (assign myvar (add twelve (subtract 6 2))) ; This assigns the variable myvar, to the result of adding the variable twelve to the result of subtracting 2 from 6
  4. (log myvar) ; This logs the value of myvar
  5. (log 6) ; This logs the number literal 6
  6. (assign twelve myvar) ; This reassigns the variable twelve to the value of the variable myvar
  7. (log twelve) ; This logs the new value of the variable twelve
  8. ; An example function definition
  9. (def myF ; Anywhere is a valid position for a comment!
  10. (log 0)
  11. (log twelve)
  12. (log 6)
  13. (log 6)
  14. (assign scopelol (add twelve 5))
  15. (log scopelol)
  16. )
  17. (def argTest (log $1) (log $2)) ; Functions take an unlimited number of arguments that can be referred to by $n
  18. (myF) ; Calling an argument-less function
  19. (log 0)
  20. (log 0)
  21. (log 0)
  22. (log 0)
  23. (log 0)
  24. (argTest 43 scopelol) ; Custom functions with arguments are called like any other
  25. (log "We got a string!")
  26. (argTest "You can call functions with strings!" "Yay!")
  27. (log "It supports multiline stri
  28. ngs without stupid escape
  29. characters")
  30. (repeat 5 (log 10))
  31. (log scopelol)
  32. (repeat scopelol (log 10))
  33. (if (eq 2 scopelol) (log "2 == scopelol") | (log "2 != scopelol"))