Rafal Kupiec
661158d249
Simply throw memory error.
2019-04-15 17:41:29 +02:00
Rafal Kupiec
94e06f3d3a
Do not duplicate the code; make a use of VmCreateMemObj().
2019-04-15 17:14:14 +02:00
Rafal Kupiec
9e06322b57
Implement VmCreateMemObj().
2019-04-15 17:04:44 +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
ee0d189f0a
Add comments.
2019-04-11 11:37:07 +02:00
Rafal Kupiec
cdc0dade2a
Allow to store a character in string variable.
2019-04-11 11:33:00 +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
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
95c9fd0f1f
Corrections in builtin library.
2019-04-10 12:44:44 +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
65e38a364d
Do not try to call an array.
2019-04-10 09:26:06 +02:00
Rafal Kupiec
d6434ba19e
Try to report some line.
2019-04-10 09:18:26 +02:00
Rafal Kupiec
447910ce2e
Fix callbacks.
2019-04-10 09:08:10 +02:00
Rafal Kupiec
f0e50678e3
Optimize the code a bit.
2019-04-10 08:52:06 +02:00
Rafal Kupiec
8810a86a2c
Fix for typoecasting callback to string.
2019-04-10 08:50:04 +02:00
Rafal Kupiec
b0165e5702
Do not reset blob when typecasting from string to callback.
2019-04-10 06:57:14 +02:00
Rafal Kupiec
77ebce7acf
Parser takes care about nested arrays.
2019-04-10 06:18:49 +02:00
Rafal Kupiec
77795bea4c
Do not check for return value on OP_DONE.
2019-04-08 13:51:54 +02:00
Rafal Kupiec
598dc9ce51
At least try to call callback and do not check for return value on OP_DONE.
2019-04-08 13:49:12 +02:00
Rafal Kupiec
d74b182235
Properly typecast callback to boolean.
2019-04-08 13:32:50 +02:00
Rafal Kupiec
1679420f4c
Get rid of some invisible escape characters.
2019-04-06 17:00:15 +02:00
Rafal Kupiec
d34c8ceafb
Fix void dump.
2019-04-06 16:51:32 +02:00
Rafal Kupiec
7443663dd8
Fixes in PH7_OP_LOAD_IDX instruction.
2019-04-06 09:36:08 +02:00
Rafal Kupiec
f6e2b549b6
Access to undefined array index should be reported as error.
2019-04-06 09:21:09 +02:00
Rafal Kupiec
72c420cc85
Correct another typo.
2019-04-05 20:21:26 +02:00
Rafal Kupiec
a501dea661
Fix a typo.
2019-04-05 20:17:44 +02:00
Rafal Kupiec
25001ae746
This should be an error, really.
2019-04-05 20:14:08 +02:00
Rafal Kupiec
2de455aa01
Fix formatting.
2019-04-05 20:12:55 +02:00
Rafal Kupiec
95fba30f9b
Better way to check arguments compatibility.
2019-04-05 20:07:56 +02:00
Rafal Kupiec
a06573408e
Better way to check arguments compatibility.
2019-04-05 19:59:15 +02:00
Rafal Kupiec
39f698476f
This is not the right way to go - revert 465336b23b
.
2019-04-05 12:30:38 +02:00
Rafal Kupiec
465336b23b
Mark void variable as well as NULL, and dump NULL as void.
2019-04-05 11:52:15 +02:00
Rafal Kupiec
a1151d598b
Do not emit warning when assigning NULL to resource.
2019-04-05 11:42:40 +02:00
Rafal Kupiec
fcd4e8d6a6
The readdir() function should return empty string instead of false.
2019-04-05 07:54:47 +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
5d369ba851
Fix static variables. Now access to non-initialized arrays member does not result in segmentation fault.
2019-04-04 18:18:11 +02:00
Rafal Kupiec
9880f9963e
Fix static and non-static class attributes. Now access to non-initialized arrays member does not result in segmentation fault.
2019-04-04 18:15:41 +02:00
Rafal Kupiec
7ec7ade171
Return a character from string if it is not ar array.
2019-04-04 11:51:25 +02:00
Rafal Kupiec
01c210984e
Further optimisations.
2019-04-03 13:57:29 +02:00
Rafal Kupiec
5eeceb6927
Try to optimize the code a bit.
2019-04-03 13:43:31 +02:00
Rafal Kupiec
9acd6fbcb2
Do not typecast NULL to StdClass.
2019-04-03 09:34:32 +02:00
Rafal Kupiec
4467ca6dce
Attempt to fix static variables.
2019-04-03 09:02:49 +02:00
Rafal Kupiec
5463da88b0
Attempt to fix non-static class attributes.
2019-04-03 08:32:59 +02:00
Rafal Kupiec
8d3b7f303f
Allow to assign any value if data type is not specified.
2019-04-03 08:11:55 +02:00
Rafal Kupiec
d4d00db458
Attempt to fix static class attributes.
2019-04-03 07:00:17 +02:00
Rafal Kupiec
8133c3dd6f
Make a use of PH7_MemObjSafeStore().
2019-04-03 06:37:35 +02:00
Rafal Kupiec
fb50d8de25
Correct the comment.
2019-04-02 20:10:58 +02:00
Rafal Kupiec
66a7e957c9
Allow to assign NULL to array.
2019-04-02 19:58:12 +02:00
Rafal Kupiec
aaef03396c
Implement PH7_MemObjSafeStore().
2019-04-02 19:44:09 +02:00
Rafal Kupiec
45b1d4ed73
Compare only non-array to non-array values.
2019-04-02 15:19:48 +02:00
Rafal Kupiec
803516cf84
This will never happen.
2019-04-02 15:12:22 +02:00
Rafal Kupiec
c6397d2e15
Use P2 to avoid strict typehinting.
2019-04-02 09:55:01 +02:00
Rafal Kupiec
2fb123872f
Typecas array only if it is of different type.
2019-04-02 09:05:27 +02:00
Rafal Kupiec
253fe327ef
Automatically fallback mixed variable to void (NULL).
2019-03-31 14:04:19 +02:00
Rafal Kupiec
4f6be2234e
Allow NULL to be assigned to any type of variable. NULL will be automatically typecasted to any data type, thus setting ti the default value.
2019-03-29 23:51:20 +01:00
Rafal Kupiec
9b741175f2
Uppercase.
2019-03-29 23:17:50 +01: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
f5960d57b1
Allow static class attributes to store compatible data types only.
2019-03-29 19:56:10 +01:00
Rafal Kupiec
41d20eeb28
Builtin library is broken; strtok() cannot return a boolean value.
2019-03-29 09:45:15 +01:00
Rafal Kupiec
01f1932230
Respect the class attribute data type.
2019-03-29 09:21:58 +01:00
Rafal Kupiec
47cca096bc
Fix segmentation fault when trying to access array element.
2019-03-29 09:09:51 +01:00
Rafal Kupiec
140bd35f93
Set proper type for all class attributes.
2019-03-29 09:00:55 +01:00
Rafal Kupiec
a013cee2d1
Properly serve the arrays.
2019-03-28 19:44:03 +01:00
Rafal Kupiec
e4dc9f641e
Invert the logic. Variable needs to be declared.
2019-03-28 19:43:00 +01:00
Rafal Kupiec
66b55e35a9
Enable reference operator.
2019-03-28 07:58:53 +01:00
Rafal Kupiec
874e416d65
Typo correction.
2019-03-27 09:50:24 +01:00
Rafal Kupiec
46a3bd85b0
Add function description.
2019-03-27 09:49:48 +01:00
Rafal Kupiec
14f958a4b2
Implement PH7_HashmapCast().
2019-03-27 09:42:23 +01:00
Rafal Kupiec
45f4a00b05
Revert 5e54233ef8
.
2019-03-26 17:41:32 +01:00
Rafal Kupiec
9303517b9e
Fix return by reference.
2019-03-26 17:40:28 +01:00
Rafal Kupiec
5e54233ef8
Check only non-array vriables.
2019-03-26 16:39:19 +01:00
Rafal Kupiec
04c56c9041
Multidimensional array of the same type should not be marked as mixed.
2019-03-25 09:37:40 +01:00
Rafal Kupiec
891818d601
Fix PH7_CheckVarCompat(). Array can be assigned only to array.
2019-03-24 13:33:15 +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
Rafal Kupiec
9438407ebf
Never store an element if there is no callback function specified.
2019-03-24 09:01:38 +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
e75ed7b9a9
Only INTEGER and FLOAT should be considered as numerical.
2019-03-23 19:34:51 +01:00
Rafal Kupiec
0af594f1ed
Seems not so useful in AerScript.
2019-03-23 19:15:16 +01:00
Rafal Kupiec
fc95deffa0
Typecasting should be enough.
2019-03-23 17:25:18 +01:00
Rafal Kupiec
76e76983a3
Implement new builtin functions: is_char() and is_void().
2019-03-23 12:59:09 +01:00
Rafal Kupiec
ea93c8dba4
Fix typo.
2019-03-22 19:55:53 +01:00
Rafal Kupiec
ff6c71db1c
Do not use NULL if possible.
2019-03-22 19:53:12 +01:00
Rafal Kupiec
9d7a542aea
The is_null() is useless now, as it always returns FALSE.
2019-03-22 19:29:50 +01:00
Rafal Kupiec
135e7c9698
VAR & FUNCTION are no longer valid keywords.
2019-03-22 18:47:46 +01:00
Rafal Kupiec
59e2743a60
Simply release the object, no need to use a wrapper function.
2019-03-22 18:42:46 +01:00
Rafal Kupiec
154469f475
Variable cannot be typecasted to NULL.
2019-03-22 18:33:39 +01:00
Rafal Kupiec
9a41f7195d
AerScript does not implement any error control operator.
2019-03-22 17:32:40 +01:00
Rafal Kupiec
65b178932a
Get rid of array() & list() for the new syntax.
2019-03-22 15:54:46 +01:00
Rafal Kupiec
90b5a8797a
Fix a bug allowing to pass an array as argument to the method/closure that takes a scalar.
2019-03-22 08:59:12 +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
412a70c0c6
Allow the array to be defined inside curly braces, instead of using array() keyword.
2019-03-21 17:27:19 +01:00
Rafal Kupiec
0115b30d01
Extension to PHP, standard in AerScript.
2019-03-21 06:19:27 +01:00
Rafal Kupiec
1460200919
This is true about PH7, but not about the AerScript.
2019-03-20 19:39:30 +01:00
Rafal Kupiec
7b1ed59f41
Basic check if all methods declared in interface are also defined in class.
2019-03-20 09:24:30 +01:00
Rafal Kupiec
3d23d43040
Enable garbage collector for Program class. This also partially fixes #47 , as from now Program::__destruct() will be called automatically.
2019-03-19 12:52:36 +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
6ca08c9c4a
Fix typo and builtin library.
2019-03-17 19:57:31 +01:00
Rafal Kupiec
55b652c740
Verify that Program::main() returns a value of int or void.
2019-03-17 19:56:07 +01:00
Rafal Kupiec
fe898ec7e7
Update builtin library to follow new syntax.
2019-03-17 19:52:28 +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
9934489ed9
Fix build.
2019-03-17 18:56:17 +01:00
Rafal Kupiec
f3d10dd4bc
Try to exit with code returned by Program::main() only when it is integer value.
2019-03-17 18:49:22 +01:00
Rafal Kupiec
de2b355862
Return 0, when display error message.
2019-03-17 18:47:17 +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
c8985032ef
Verify that return value match the data type of declared method/closure.
2019-03-13 09:36:10 +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
8aacf7c70e
Do not use PH7_KEYWORD_FUNCTION for closure declaration.
2019-03-09 19:43:56 +01:00
Rafal Kupiec
0524092539
Add missing space in error message
2019-03-09 16:49:46 +01:00
Rafal Kupiec
d6c5f01905
PH7_VmMemoryError() always breaks script execution.
2019-03-09 14:00:11 +01:00
Rafal Kupiec
e86894f724
PH7_VmMemoryError() always breaks script execution.
2019-03-09 13:59:04 +01:00
Rafal Kupiec
a5ee2d75eb
PH7_VmMemoryError() always breaks script execution.
2019-03-09 13:37:15 +01:00
Rafal Kupiec
b7e3ad9f46
PH7_VmMemoryError() always breaks script execution.
2019-03-09 13:28:04 +01:00
Rafal Kupiec
7eba38a633
Fix segmentation fault when trying to store a value under next index into an array.
2019-03-09 13:25:13 +01:00
Rafal Kupiec
4af3220018
Throw a warning when trying to typecast to resource.
2019-02-13 13:22:30 +01:00
Rafal Kupiec
a7b4c6e880
Do not typecast to resource type at all. This might lead to attempt of access to the invalid memory area and segmentation fault.
2019-02-08 14:28:04 +01:00
Rafal Kupiec
fa0b487cc0
Implement typecasting to resource data type.
2019-02-08 14:06:39 +01:00
Rafal Kupiec
bbdc740388
Finally, do not allow a string variables to act as callback.
2018-12-20 19:37:03 +01:00
Rafal Kupiec
f97e2a8294
Implement typecasting to callback data type.
2018-12-20 18:30:21 +01:00
Rafal Kupiec
2949c8dcfb
Fix typo.
2018-12-20 18:20:18 +01:00
Rafal Kupiec
784c705af6
Add callback cast operator.
2018-12-13 10:07:44 +01:00
Rafal Kupiec
0278f0a630
Add callback cast operator.
2018-12-13 09:31:32 +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
3f9e3b0664
Check for compatible data types on OP_CALL & OP_STORE.
2018-11-28 21:58:41 +01:00
Rafal Kupiec
9ab896c2e2
Implement PH7_CheckVarCompat().
2018-11-28 20:37:07 +01:00
Rafal Kupiec
f3f1723104
Return valid function for conversion to char.
2018-11-28 20:11:47 +01:00
Rafal Kupiec
0d3cb90d5f
Always convert integer value to char as it is done in C/C++.
2018-11-28 20:10:14 +01:00
Rafal Kupiec
3cc8cfe6a2
Remove duplicated code.
2018-11-28 13:58:33 +01:00
Rafal Kupiec
1cebd3af37
Allow char to be typecasted to value of any other type.
2018-11-26 20:41:15 +01:00
Rafal Kupiec
5dde778382
Release object to free some memory.
2018-11-26 20:39:08 +01:00
Rafal Kupiec
d65a529d21
Initial support for char data type.
2018-11-26 20:37:51 +01:00
Rafal Kupiec
174ecb2a38
Initial support for void type.
2018-11-23 09:19:37 +01:00
Rafal Kupiec
87db6d6dfd
Allow a method/closure to take compatible mixed variable as argument.
2018-11-18 22:06:40 +01:00
Rafal Kupiec
e727453ccf
Fix var_dump() for mixed arrays.
2018-11-13 20:24:55 +01:00
Rafal Kupiec
8724cebf71
Do not actually support references in the same scope.
2018-10-28 19:45:31 +01:00
Rafal Kupiec
ec47190874
Array dump format.
2018-10-27 19:56:13 +02:00
Rafal Kupiec
e5fb7d625e
Allow only a colon as variable separator.
2018-10-27 19:49:24 +02:00
Rafal Kupiec
6f13c347d8
Set the proper type of array.
2018-10-26 19:45:10 +02:00
Rafal Kupiec
03cf969c31
Check for a type of array.
2018-10-11 15:15:48 +02:00
Rafal Kupiec
b66515516e
First check if array or object.
2018-10-01 22:46:35 +02:00
Rafal Kupiec
6293b8f5bf
Do not try to dump empty array.
2018-10-01 22:43:23 +02:00
Rafal Kupiec
c00080e190
Correct comment.
2018-09-24 19:20:23 +02:00