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

maths.js 951B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var fs = require("fs")
  2. const builtins = {
  3. min: function() {
  4. let argArr = [...arguments]
  5. return {
  6. value: Math.min.apply(null, argArr.map((arg) => arg.value))
  7. }
  8. },
  9. add: function (arg1, arg2) {
  10. return {
  11. value: (arg1.value + arg2.value)
  12. }
  13. },
  14. subtract: function (arg1, arg2) {
  15. return {
  16. value: (arg1.value - arg2.value)
  17. }
  18. },
  19. multiply: function (arg1, arg2) {
  20. return {
  21. value: (arg1.value * arg2.value)
  22. }
  23. },
  24. modulo: function (arg1, arg2) {
  25. return {
  26. value: (arg1.value % arg2.value)
  27. }
  28. }
  29. }
  30. const my_handler = {
  31. get: function (target, prop) {
  32. let methods = Object.keys(builtins)
  33. if (methods.includes(prop)) {
  34. return builtins[prop]
  35. } else {
  36. console.error("Undefined function call! No such function: ", prop)
  37. }
  38. },
  39. }
  40. const proxy_obj = new Proxy({}, my_handler)
  41. let _
  42. module.exports = function (self) {
  43. _ = self
  44. return proxy_obj
  45. }