Rafal Kupiec
1c5982e764
There is no reason to use a loop here.
2019-04-24 23:45:46 +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
48a38dc1af
PH7_GenCompileError() always breaks script execution on E_ERROR.
...
Thus code placed below will never get executed and is completely useless.
2019-04-24 23:12:59 +02:00
Rafal Kupiec
555234e381
Get rid of variable variables. AerScript does not support it.
2019-04-22 12:01:11 +02:00
Rafal Kupiec
8f18ebf884
Update legal info.
2019-04-20 19:53:16 +02:00
Rafal Kupiec
c9203b6c91
New source code legal format.
2019-04-20 19:29:15 +02:00
Rafal Kupiec
929d7b83fe
Cleanup unused functions.
2019-04-17 18:40:14 +02:00
Rafal Kupiec
bd22425b46
Do not allow 'continue' statement in a switch case.
...
Important rule while using continue statement is that, We can use continue
statement only within the loops. Switch case is conditional block not a loop
so we cannot execute the continue statement inside switch.
2019-04-17 11:13:29 +02:00
Rafal Kupiec
395f6c446c
Get rid of known from PHP 'elseif' construction.
2019-04-17 07:55:32 +02:00
Piotr Likoski
6b18e204cd
Always pop the l-value on variable declaration.
...
Otherwise, it might lead to unexpected behaviour including protected memory access and segmentation fault.
This finally fixes #49 .
2019-04-16 20:15:38 +02:00
Rafal Kupiec
07e3a09999
Enter and leave a loop frame on every iteration.
...
This fixes strict variable declaration inside loops.
2019-04-16 13:51:58 +02:00
Rafal Kupiec
ef4f994e8b
Do not allow 'break' statement to take a parameter. This is strange construction introduced in PHP.
2019-04-16 12:34:53 +02:00
Rafal Kupiec
5fddbf8737
Do not allow 'continue' statement to take a parameter. This is strange construction introduced in PHP.
2019-04-16 12:32:01 +02:00
Rafal Kupiec
89f19133d5
Rename VM's jump instructions for better readability.
2019-04-16 08:14:16 +02:00
Rafal Kupiec
eb80dced3e
Correct comment.
2019-04-15 20:00:54 +02:00
Rafal Kupiec
517dffcbc1
Separate VM instruction for variable declaration (OP_DECLARE).
2019-04-15 19:18:29 +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
89d5158d7e
Fix build.
2019-04-11 13:31:17 +02:00
Rafal Kupiec
a8a1a2cd51
Fix variable declaration in loops.
2019-04-11 13:28:47 +02:00
Rafal Kupiec
2a4e47e782
I hope this finally fixes the default argument value.
2019-04-10 18:32:53 +02:00
Rafal Kupiec
527a6ad689
Mark argument as well as object, when class name is supplied.
2019-04-10 13:58:24 +02:00
Rafal Kupiec
77ebce7acf
Parser takes care about nested arrays.
2019-04-10 06:18:49 +02:00
Rafal Kupiec
72dc44c152
Another fix for OP_DONE instruction.
2019-04-05 07:45:53 +02:00
Rafal Kupiec
74f954b852
Fix OP_DONE instruction.
2019-04-05 07:01:07 +02:00
Rafal Kupiec
c6397d2e15
Use P2 to avoid strict typehinting.
2019-04-02 09:55:01 +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
a87471e1e3
The empty() function is useless in Aer.
2019-03-24 09:22:10 +01:00
Rafal Kupiec
4f29507c0d
The isset() function always results in true, thus it is useless. If passed as argument variable is not set, the interpreter will throw an error.
2019-03-23 19:51:19 +01:00
Rafal Kupiec
65b178932a
Get rid of array() & list() for the new syntax.
2019-03-22 15:54:46 +01:00
Rafal Kupiec
075d2f0963
Temporary workaround to allow the use of curly braces and array() syntax concurrently.
2019-03-21 17:30:08 +01:00
Rafal Kupiec
b60c1de4cf
Abort on SXERR_ABORT, #47 .
2019-03-19 10:42:53 +01:00
Rafal Kupiec
23601fe9c5
Partially fix #47 , static variables are still affected.
2019-03-19 10:38:07 +01:00
Rafal Kupiec
c26f8cd777
Strict data types for classes and interfaces:
...
1) New syntax for method declaration, now requiring a strict data type to be passed (i.e. void main()),
2) New syntax for attributes declaration, als orequiring a strict data type before variable name (i.e. string $str).
2019-03-17 19:43:03 +01:00
Rafal Kupiec
615e75fb8a
Store methods return type.
2019-03-16 14:57:04 +01:00
Rafal Kupiec
7897f28ebb
Fix parameters order.
2019-03-13 20:10:32 +01:00
Rafal Kupiec
df3d00d02c
Revert f1d4d80f65
.
2019-03-11 08:16:51 +01:00
Rafal Kupiec
051bca470e
Save the closure return data type for further use.
2019-03-10 21:02:06 +01:00
Rafal Kupiec
f1d4d80f65
Cleanup keywords.
2019-03-09 22:39:26 +01:00
Rafal Kupiec
d87ce3ad1d
1. Set a proper data type when compiling closure.
...
2. Temporarily allow to call a closure/function if its name is stored in a variable of callback or string type. Ultimately, only callback will be allowed.
2018-12-01 12:53:58 +01:00
Rafal Kupiec
e5fb7d625e
Allow only a colon as variable separator.
2018-10-27 19:49:24 +02:00
Rafal Kupiec
dd774be005
Fix for() loop, do not use iP1 for OP_LOAD.
2018-09-23 17:51:09 +02:00
Rafal Kupiec
28a5fa59ad
Duplicate variable name. Fix variable declaration.
2018-09-22 17:54:59 +02:00
Rafal Kupiec
f927667d85
Strictly check for data type of static variable declaration.
2018-09-21 22:06:36 +02:00
Rafal Kupiec
79e4bac7eb
Remove no longer used PH7_CompileStatic().
2018-09-21 00:22:29 +02:00
Rafal Kupiec
bd4d146d0a
Initial version of variable definition.
2018-09-21 00:21:15 +02:00
Rafal Kupiec
241c7d8168
First step to declare a variable with specified data type.
2018-09-20 17:06:23 +02:00
Rafal Kupiec
e6e59d299e
Fix method parameters.
2018-09-19 19:27:50 +02:00
Rafal Kupiec
9884f8288b
Do not allow typecasting to unset a variable.
2018-09-18 22:11:57 +02:00