Commit Graph

131 Commits

Author SHA1 Message Date
Rafal Kupiec ab8bf48485
Make constant declarations local.
The build was successful. Details
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 e6b7f1be2c
Always emit OP_JMPLFE as goto can be used inside a loop and frame has to be left.
The build was successful. Details
2019-05-03 10:55:57 +02:00
Rafal Kupiec 03fc167be1
Proper implementation of so hated 'goto' statement.
The build was successful. Details
2019-05-03 10:35:54 +02:00
Rafal Kupiec 2f3ce65289
Correct comment to if/else statements.
The build was successful. Details
2019-05-02 19:03:47 +02:00
Rafal Kupiec 5a0e4667fa
More readable error message.
The build was successful. Details
2019-05-01 20:09:55 +02:00
Rafal Kupiec 7c37451520
Namespaces are not supported and broken, but compile them properly.
The build was successful. Details
2019-05-01 13:49:07 +02:00
Rafal Kupiec 1829eff323
Fix interface and class compilation.
The build was successful. Details
2019-05-01 13:37:14 +02:00
Rafal Kupiec 1d6822c1e2
Allow key and value declaration inside foreach() loop.
The build was successful. Details
2019-05-01 11:38:28 +02:00
Rafal Kupiec 5c1e0f0cce
Simplify the foreach() loop implementation.
The build was successful. Details
2019-04-30 23:59:02 +02:00
Rafal Kupiec 4d8d92092e
Refactor foreach() loop.
The build was successful. Details
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 d72774f0f4
Namespaces in AerScript do not support aliases.
The build was successful. Details
2019-04-25 23:31:48 +02:00
Rafal Kupiec 407fb09e8f
Throw an error only if this is not the end of tokens stream.
The build was successful. Details
2019-04-25 19:24:53 +02:00
Rafal Kupiec cb455c3c73
Unify compiler OOM error messages.
The build was successful. Details
2019-04-24 23:52:48 +02:00
Rafal Kupiec 1c5982e764
There is no reason to use a loop here.
The build was successful. Details
2019-04-24 23:45:46 +02:00
Rafal Kupiec 3be46532dd
Remove unused PH7_ErrorRecover() function.
The build was successful. Details
2019-04-24 23:38:45 +02:00
Rafal Kupiec c443a38fec
Do not count compilation errors.
The build was successful. Details
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.
The build was successful. Details
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.
The build was successful. Details
2019-04-22 12:01:11 +02:00
Rafal Kupiec 8f18ebf884
Update legal info.
The build was successful. Details
2019-04-20 19:53:16 +02:00
Rafal Kupiec c9203b6c91
New source code legal format.
The build was successful. Details
2019-04-20 19:29:15 +02:00
Rafal Kupiec 929d7b83fe
Cleanup unused functions.
The build was successful. Details
2019-04-17 18:40:14 +02:00
Rafal Kupiec bd22425b46
Do not allow 'continue' statement in a switch case.
The build was successful. Details
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.
The build was successful. Details
2019-04-17 07:55:32 +02:00
Piotr Likoski 6b18e204cd
Always pop the l-value on variable declaration.
The build was successful. Details
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.
The build was successful. Details
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.
The build was successful. Details
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.
The build was successful. Details
2019-04-16 12:32:01 +02:00
Rafal Kupiec 89f19133d5
Rename VM's jump instructions for better readability.
The build was successful. Details
2019-04-16 08:14:16 +02:00
Rafal Kupiec eb80dced3e
Correct comment.
The build was successful. Details
2019-04-15 20:00:54 +02:00
Rafal Kupiec 517dffcbc1
Separate VM instruction for variable declaration (OP_DECLARE).
The build was successful. Details
2019-04-15 19:18:29 +02:00
Rafal Kupiec c51b3dfa8a
Revert 89d5158d7e and a8a1a2cd51. Fix should be based on VM frames.
The build was successful. Details
2019-04-13 14:39:57 +02:00
Rafal Kupiec 89d5158d7e
Fix build.
The build was successful. Details
2019-04-11 13:31:17 +02:00
Rafal Kupiec a8a1a2cd51
Fix variable declaration in loops.
The build has failed. Details
2019-04-11 13:28:47 +02:00
Rafal Kupiec 2a4e47e782
I hope this finally fixes the default argument value.
The build was successful. Details
2019-04-10 18:32:53 +02:00
Rafal Kupiec 527a6ad689
Mark argument as well as object, when class name is supplied.
The build was successful. Details
2019-04-10 13:58:24 +02:00
Rafal Kupiec 77ebce7acf
Parser takes care about nested arrays.
The build was successful. Details
2019-04-10 06:18:49 +02:00
Rafal Kupiec 72dc44c152
Another fix for OP_DONE instruction.
The build was successful. Details
2019-04-05 07:45:53 +02:00
Rafal Kupiec 74f954b852
Fix OP_DONE instruction.
The build was successful. Details
2019-04-05 07:01:07 +02:00
Rafal Kupiec c6397d2e15
Use P2 to avoid strict typehinting.
The build was successful. Details
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.
The build was successful. Details
2019-03-29 22:55:49 +01:00
Rafal Kupiec 140bd35f93
Set proper type for all class attributes.
The build was successful. Details
2019-03-29 09:00:55 +01:00
Rafal Kupiec a87471e1e3
The empty() function is useless in Aer.
The build was successful. Details
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.
The build has failed. Details
2019-03-23 19:51:19 +01:00
Rafal Kupiec 65b178932a
Get rid of array() & list() for the new syntax.
The build was successful. Details
2019-03-22 15:54:46 +01:00
Rafal Kupiec 075d2f0963
Temporary workaround to allow the use of curly braces and array() syntax concurrently.
The build was successful. Details
2019-03-21 17:30:08 +01:00
Rafal Kupiec b60c1de4cf
Abort on SXERR_ABORT, #47.
The build was successful. Details
2019-03-19 10:42:53 +01:00
Rafal Kupiec 23601fe9c5
Partially fix #47, static variables are still affected.
The build was successful. Details
2019-03-19 10:38:07 +01:00
Rafal Kupiec c26f8cd777
Strict data types for classes and interfaces:
The build has failed. Details
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.
The build was successful. Details
2019-03-16 14:57:04 +01:00
Rafal Kupiec 7897f28ebb
Fix parameters order.
The build was successful. Details
2019-03-13 20:10:32 +01:00