A Python Interpreter Written in Python
- BoppreH - 2251 sekunder sedan> Byterun is a Python interpreter written in Python. This may strike you as odd, but it's no more odd than writing a C compiler in C.
I'm not so sure. The difference between a self-hosted compiler and a circular interpreter is that the compiler has a binary artifact that you can store.
With an interpreter, you still need some binary to run your interpreter, which will probably be CPython, making the new interpreter redundant. And if you add a language feature to the custom interpreter, and you want to use that feature in the interpreter itself, you need to run the whole chain at runtime: CPython -> Old Interpreter That Understand New Feature -> New Interpreter That Uses New Feature -> Target Program. And the chain only gets longer, each iteration exponentially slower.
Meanwhile with self-hosted a compiler, each iteration is "cached" in the form a compiled binary. The chain is only in the history of the binary, not part of the runtime.
- anitil - 15319 sekunder sedanOooh it's a bytecode interpreter! I was wondering how they'd fit a parser/tokenizer in 500 lines unless the first was `import tokenizer, parser`. And it looks like 1500ish lines according to tokei
I think because python is a stack-based interpreter this is a really great way to get some exposure to how it works if you're not too familiar with C. A nice project!
- vachanmn123 - 2542 sekunder sedanVery well written! Everyone used to tell me during Uni that stacks are used for running programs, never ACTUALLY understood where or how.
- blueybingo - 5730 sekunder sedanthe article glosses over something worth pausing on: the `getattr` trick for dispatching instructions (replacing the big if-elif chain) is actaully a really elegant pattern that shows up in a lot of real interpreters and command dispatchers, not just toy ones -- worth studying that bit specifically if you're building anything with extensible command sets.
- tekknolagi - 15783 sekunder sedan
- woadwarrior01 - 9352 sekunder sedanaka A Metacircular Interpreter
- andltsemi3 - 5376 sekunder sedan"Yaw dog I heard you liked python, so I put python in your python so you can interpret python while you interpret python"
- kevinten10 - 6665 sekunder sedan[dead]
- hcfman - 12578 sekunder sedanJust wondering why you stopped there? Why not a python interpreter for a python interpreter for python ?
Nördnytt! 🤓