a buffer of classes for primitive types added to PKVM, but they'll
not be initialized in this commit.
names buffer and constant pool of a module are now merged (just like
java's constant pool).
VM's core libraries and scirpt modules are merged into a single
map name modules.
creating a new module doesn't register it automatically anymore,
you need to call pkRegisterModule(...) each time.
newModule() function refactored with a simpler interface, we're not
setting path or registering globals anymore, the caller is
responsible for that.
now it's easier to re-use cli modules into another hosting
application and a little python script have added to generate
native api to support native extension library.
The exprName function re-defined into a cleanner way, and now it's
possible to override builtin functions, this will come in handy
to introduce upvalues.
for nested functions the count of locals and the required stack size
are miss-calculated, ie. No new count wasn't started for inner functions
it makes the required stack size greater than or equal to it's enclosing
functions stack size.
The name script is missleading as it only refering to the scripts
(the files that contain the statements) where as it could also
be the native module objects containing collection of native
functions.
After this commit, native functions can also have set owner module
and it won't be as confusing as before.
Since the functions and classes will be moved to the constants buffer
rather than having their own (function buffer and class buffer) the
rename is essential, and to make the refactoring process easier all the
intermediate steps are done with its own pr.
* and / or logic refactored
* and / or opcodes added and stack size bug fixed
- and / or keywords were added.
- class construction function not poping the class instance
from the stack (fixed).
There are small typos in:
- README.md
- cli/modules.c
- src/pk_compiler.c
- src/pk_core.c
- src/pk_opcodes.h
- src/pk_vm.h
- tests/benchmarks/benchmarks.py
Fixes:
- Should read `temporary` rather than `temproary`.
- Should read `stdout` rather than `stdour`.
- Should read `sprintf` rather than `spritnf`.
- Should read `splitted` rather than `splited`.
- Should read `script` rather than `scirpt`.
- Should read `reported` rather than `repored`.
- Should read `reduce` rather than `recude`.
- Should read `performance` rather than `preformance`.
- Should read `instead` rather than `insted`.
- Should read `default` rather than `defalt`.
* Implement proper number literal parsing
- Scientific notation support
- Correct error handling in cases of invalid digits present in binary or
hex literals (0b123, 0x013FK).
* Fix style linter issues
* Support +/- in number literal exponent, add tests
- Add tests for scientific notation number literal parsing
- Add support for +/- in scientific notation exponents
* fixed typos in src/
* fixed typos in docs/
* fixed typos in README and tests/
* rename INITALIZE to INITIALIZE
* rename PRIMITE to PRIMITIVE
* rename moudle to module
Co-authored-by: Alexander Patel <acpatel@andrew.cmu.edu>