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

str.js 745B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const builtins = {
  2. concat: function () {
  3. let str = ""
  4. for (let i = 0; i < arguments.length; i++) {
  5. str += arguments[i].value
  6. }
  7. return {
  8. value: str
  9. }
  10. },
  11. length: function (str) {
  12. return {
  13. value: str.value.length
  14. }
  15. },
  16. charAtIndex: function (str, i) {
  17. return {
  18. value: str.value.charAt(i.value)
  19. }
  20. }
  21. }
  22. const my_handler = {
  23. get: function (target, prop) {
  24. let methods = Object.keys(builtins)
  25. if (methods.includes(prop)) {
  26. return builtins[prop]
  27. } else {
  28. console.error("Undefined function call! No such function: ", prop)
  29. }
  30. },
  31. }
  32. const proxy_obj = new Proxy({}, my_handler)
  33. let _
  34. module.exports = function (self) {
  35. _ = self
  36. return proxy_obj
  37. }