Rafal Kupiec
5c824ec67d
Do not set any recursion depth limit.
2019-06-10 12:11:55 +02:00
Rafal Kupiec
cbe4f29909
Define 'auto' keyword.
2019-06-08 12:19:00 +02:00
Rafal Kupiec
d0995a4239
Rename 'instanceof' to 'is'.
2019-06-06 11:53:17 +02:00
Rafal Kupiec
5948c3a5b6
Remove unused function argument.
2019-06-05 17:30:17 +02:00
Rafal Kupiec
9fe4aa653f
We will store 'finally' block bytecode here.
2019-06-04 06:31:07 +02:00
Rafal Kupiec
d57d6caf2d
Add 'finally' frame definition.
2019-06-03 19:21:03 +02:00
Rafal Kupiec
d0840d7eea
Cleanup after switching from 'parent' constant to '$parent' variable.
2019-06-03 12:31:28 +02:00
Rafal Kupiec
625a386b69
Get rid of 'self' statement.
2019-06-03 12:29:21 +02:00
Rafal Kupiec
b1b78433dd
Clean up $base statement.
2019-05-30 18:16:29 +02:00
Rafal Kupiec
e654e42b07
Store class directly in function container.
2019-05-22 08:33:56 +02:00
Rafal Kupiec
ddd46a4e80
Quick small cleanup.
2019-05-21 19:18:52 +02:00
Rafal Kupiec
3cca5faa76
Store variable type in dedicated field.
2019-05-21 14:49:36 +02:00
Rafal Kupiec
0f4a666b89
Variable type should be separated from control flags.
2019-05-21 10:58:34 +02:00
Rafal Kupiec
1acbd21caf
Store a pointer to class container in each method.
2019-05-21 08:40:10 +02:00
Rafal Kupiec
e8c675bd8e
Store a pointer to class container to reduce memory usage.
2019-05-16 15:41:37 +02:00
Rafal Kupiec
7203492763
Store a class name in each attribute.
2019-05-16 13:25:06 +02:00
Rafal Kupiec
8aed5af238
Correct indentation.
2019-05-15 20:15:26 +02:00
Rafal Kupiec
f2116a6461
Always use HTTPS when possible.
2019-05-15 20:02:39 +02:00
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.
2019-05-08 08:26:48 +02:00
Rafal Kupiec
0c8ca53f70
Continuous numeration.
2019-05-07 09:24:43 +02:00
Rafal Kupiec
c4b63a3018
Rename OP_LOAD instruction to OP_LOADV.
2019-05-05 09:33:06 +02:00
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.
2019-05-04 18:53:11 +02:00
Rafal Kupiec
b36510943d
Implement 'define' statement for defining constants globally.
2019-05-04 17:08:09 +02:00
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.
2019-05-04 13:45:32 +02:00
Rafal Kupiec
90b2da7c56
Unify constant length.
2019-05-03 12:40:47 +02:00
Rafal Kupiec
03fc167be1
Proper implementation of so hated 'goto' statement.
2019-05-03 10:35:54 +02:00
Rafal Kupiec
798fd7d3b2
Remove unused and useless VM instruction.
2019-05-01 12:33:51 +02:00
Rafal Kupiec
70676cb0d5
Correct comment.
2019-05-01 12:27:40 +02:00
Rafal Kupiec
5c1e0f0cce
Simplify the foreach() loop implementation.
2019-04-30 23:59:02 +02:00
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.
2019-04-30 23:38:59 +02:00
Rafal Kupiec
3be46532dd
Remove unused PH7_ErrorRecover() function.
2019-04-24 23:38:45 +02:00
Rafal Kupiec
c443a38fec
Do not count compilation errors.
...
Interpreter will abort script execution on first error found.
2019-04-24 23:22:06 +02:00
Rafal Kupiec
291b6f0607
Get rid of backstick quoted strings (shell commands).
2019-04-18 06:48:51 +02:00
Rafal Kupiec
395f6c446c
Get rid of known from PHP 'elseif' construction.
2019-04-17 07:55:32 +02:00
Rafal Kupiec
ba8e9080ef
Implement OP_JMPLFB & OP_JMPLFE VM instructions.
2019-04-16 12:46:58 +02:00
Rafal Kupiec
89f19133d5
Rename VM's jump instructions for better readability.
2019-04-16 08:14:16 +02:00
Rafal Kupiec
517dffcbc1
Separate VM instruction for variable declaration (OP_DECLARE).
2019-04-15 19:18:29 +02:00
Rafal Kupiec
0f0fc01a96
We need to distinguish the loop frames.
2019-04-13 20:21:47 +02:00
Rafal Kupiec
c51b3dfa8a
Revert 89d5158d7e
and a8a1a2cd51
. Fix should be based on VM frames.
2019-04-13 14:39:57 +02:00
Rafal Kupiec
a8a1a2cd51
Fix variable declaration in loops.
2019-04-11 13:28:47 +02:00
Rafal Kupiec
4eaf6a7117
AerScript is strict type hinting language, thus OP_TEQ & OP_TNE are not needed here.
2019-04-11 06:25:20 +02:00
Rafal Kupiec
d8f9db8f9a
Proper implementation of is_callback() & is_callable(). First one only performs a check if variable type is callback, while the second checks if function exists and if can be called.
2019-04-10 09:45:00 +02:00
Rafal Kupiec
aaef03396c
Implement PH7_MemObjSafeStore().
2019-04-02 19:44:09 +02:00
Rafal Kupiec
3f205c19ce
Get rid of dirty references. Return a reference & pass-by reference are still working.
2019-03-29 22:55:49 +01:00
Rafal Kupiec
140bd35f93
Set proper type for all class attributes.
2019-03-29 09:00:55 +01:00
Rafal Kupiec
14f958a4b2
Implement PH7_HashmapCast().
2019-03-27 09:42:23 +01:00
Rafal Kupiec
243faf4373
Header cleanup.
2019-03-24 09:38:52 +01:00
Rafal Kupiec
accde59f9e
Cleanup header.
2019-03-24 09:32:27 +01:00
Rafal Kupiec
fa295b9437
It's callback, not callable.
2019-03-24 09:31:19 +01:00
Rafal Kupiec
a87471e1e3
The empty() function is useless in Aer.
2019-03-24 09:22:10 +01:00