Rafal Kupiec
f2116a6461
Always use HTTPS when possible.
2 years ago
Rafal Kupiec
5d9b73ba4e
Use method full name.
2 years ago
Rafal Kupiec
3cc347f25f
Correct CLI command name.
2 years ago
Rafal Kupiec
27e3b85b30
This is AerScript interpreter.
2 years ago
Rafal Kupiec
5256dda922
Attempt to fix '$this' and '$parent' constructs.
2 years ago
Rafal Kupiec
ea5499f8b3
Private methods should not be accessible from child class.
2 years ago
Rafal Kupiec
5e7d5957e2
Distinguish methods from attributes.
2 years ago
Rafal Kupiec
d3d3dff673
Do not allow to call statically a non-static method.
2 years ago
Rafal Kupiec
c4416ef631
Fix singleton test.
2 years ago
Rafal Kupiec
76880ae4e2
Extend this test.
2 years ago
Rafal Kupiec
a2fb0b9ae5
Get rid of 'parent' constant. Use variable instead.
2 years ago
Rafal Kupiec
07bd3ceec3
Reimplement 'parent' construct as variable $parent.
This commit also adds new controls to variables, which prevents from re-assigning a value when set. Thanks to that, both $this and $parent cannot be overwritten by using OP_STORE instruction. Other instructions still need some
work.
2 years ago
Rafal Kupiec
0c8ca53f70
Continuous numeration.
2 years ago
Rafal Kupiec
03c37c58bb
Add constants test.
2 years ago
Rafal Kupiec
17e0fb4653
Do not try to resolve constants when OP_MEMBER is next instruction on the stack.
2 years ago
Rafal Kupiec
d3ae1c1bf4
Only identifiers should be allowed as constant name.
2 years ago
Rafal Kupiec
cedc288f67
Remove static constant.
2 years ago
Rafal Kupiec
0a6b5a6f42
The 'self' and 'parent' keywords should be resolved at compile time.
2 years ago
Rafal Kupiec
7b6245572f
Remove constants management builtin functions.
2 years ago
Rafal Kupiec
9d84c558c4
New test for goto statement.
2 years ago
Rafal Kupiec
c4b63a3018
Rename OP_LOAD instruction to OP_LOADV.
2 years ago
Rafal Kupiec
23900f2aed
Remove unused compiler function - PH7_CompileLangConstruct().
In AerScript, there are no such language constructs, that have syntax similiar to functions. If so, it is just a builtin function.
2 years ago
Rafal Kupiec
b36510943d
Implement 'define' statement for defining constants globally.
2 years ago
Rafal Kupiec
ab8bf48485
Make constant declarations local.
There are several changes in this commit:
* first of all constants declared by 'const' statement should be local (declared in current scope / frame),
* constants are declared by using OP_DECLARE instruction,
* OP_LOADC browses both global and local constants container,
* PH7_VmRegisterConstant() allows both global and local declarations.
Since this commit, there are 3 kinds of constants:
1) global
2) local (in loop, closure, method)
3) class members.
Actually there is no way to declare a global constant except the built-in constants.
2 years ago
Rafal Kupiec
90b2da7c56
Unify constant length.
2 years ago
Rafal Kupiec
e6b7f1be2c
Always emit OP_JMPLFE as goto can be used inside a loop and frame has to be left.
2 years ago
Rafal Kupiec
03fc167be1
Proper implementation of so hated 'goto' statement.
2 years ago
Rafal Kupiec
2f3ce65289
Correct comment to if/else statements.
2 years ago
Rafal Kupiec
73c1a814f5
Test foreach() loop.
2 years ago
Rafal Kupiec
8f681d1605
Correct PH7_OP_JMPLFE debug name.
2 years ago
Rafal Kupiec
5a0e4667fa
More readable error message.
2 years ago
Rafal Kupiec
508e8965a9
VmExtractMemObj() should not be able to create a variable.
2 years ago
Rafal Kupiec
7d606cbf1d
Do not create variables automatically on each OP_CALL using VmExtractMemObj().
2 years ago
Rafal Kupiec
3dfa4232ba
Use VmCreateMemObj() to create $this.
2 years ago
Rafal Kupiec
7c37451520
Namespaces are not supported and broken, but compile them properly.
2 years ago
Rafal Kupiec
1829eff323
Fix interface and class compilation.
2 years ago
Rafal Kupiec
798fd7d3b2
Remove unused and useless VM instruction.
2 years ago
Rafal Kupiec
70676cb0d5
Correct comment.
2 years ago
Rafal Kupiec
d76441ad4c
Safely store only compatible values.
2 years ago
Rafal Kupiec
186e5887f6
We can now declare key and value variables inside a loop.
2 years ago
Rafal Kupiec
bbcd99789d
Fix test.
2 years ago
Rafal Kupiec
1d6822c1e2
Allow key and value declaration inside foreach() loop.
2 years ago
Rafal Kupiec
a726ab795a
Throw an error if $key or $value does not exist.
2 years ago
Rafal Kupiec
5c1e0f0cce
Simplify the foreach() loop implementation.
2 years ago
Rafal Kupiec
4d8d92092e
Refactor foreach() loop.
In AerScript, the foreach() loop is syntatically more similiar to C#, than PHP. However the optional '$key => $value' construct is still available, because arrays in AerScript are still a hashmaps.
2 years ago
Rafal Kupiec
1156519af6
This is a compiler task to fill key and value variables names.
2 years ago
Rafal Kupiec
62c315da9e
Call to undefined constant should lead to an error.
2 years ago
Rafal Kupiec
10516fb655
Remove useless comments from BrainFuck tests.
2 years ago
Rafal Kupiec
f09d4def2d
It's AerScript.
2 years ago
Rafal Kupiec
d6fca929ea
Callbacks can be just called.
2 years ago