a2fb0b9ae5
Get rid of 'parent' constant. Use variable instead.belliash2019-05-08 08:38:40 +02:00
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.belliash2019-05-08 08:26:48 +02:00
c4b63a3018
Rename OP_LOAD instruction to OP_LOADV.belliash2019-05-05 09:33:06 +02:00
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.belliash2019-05-04 18:53:11 +02:00
b36510943d
Implement 'define' statement for defining constants globally.belliash2019-05-04 17:08:09 +02:00
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.belliash2019-05-04 13:45:32 +02:00
1d6822c1e2
Allow key and value declaration inside foreach() loop.belliash2019-05-01 11:38:28 +02:00
a726ab795a
Throw an error if $key or $value does not exist.belliash2019-05-01 09:51:33 +02:00
5c1e0f0cce
Simplify the foreach() loop implementation.belliash2019-04-30 23:59:02 +02:00
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.belliash2019-04-30 23:38:59 +02:00
1156519af6
This is a compiler task to fill key and value variables names.belliash2019-04-29 11:44:17 +02:00
62c315da9e
Call to undefined constant should lead to an error.belliash2019-04-28 21:44:48 +02:00
10516fb655
Remove useless comments from BrainFuck tests.belliash2019-04-28 19:51:38 +02:00
6593252bce
Remove get_defined_functions() built-in function. This function is useless in Aer, as it is fully OOP language and thus disallows functions declaration.belliash2019-04-28 19:31:58 +02:00
d26bc99b68
There is no reason to trigger a low-level error in AerScript. AerScript is fully OOP language and supports exceptions that can be thrown at any time.belliash2019-04-28 19:27:24 +02:00
00c502c11b
Get rid of import_request_variables() builtin function. Its pure evil.belliash2019-04-28 19:23:42 +02:00
9f4f6298c2
Do not create variable in foreach() loop automatically.belliash2019-04-28 19:14:56 +02:00
c443a38fec
Do not count compilation errors. Interpreter will abort script execution on first error found.belliash2019-04-24 23:22:06 +02:00
48a38dc1af
PH7_GenCompileError() always breaks script execution on E_ERROR. Thus code placed below will never get executed and is completely useless.belliash2019-04-24 23:12:59 +02:00
7c8259057b
PH7_VmThrowError() always breaks script execution on PH7_CTX_ERR. Thus code placed below will never get executed and is completely useless.belliash2019-04-24 18:30:24 +02:00
9b1ad67580
PH7_VmThrowError() always breaks script execution on PH7_CTX_ERR. Thus code placed below will never get executed and is completely useless.belliash2019-04-24 18:09:41 +02:00
deda6b4b15
PH7_GenCompileError() always breaks script execution on E_ERROR. Thus code placed below will never get executed and is completely useless.belliash2019-04-24 18:03:57 +02:00
5b0b965199
Fix segmentation fault when trying to clone non-instantiated object.belliash2019-04-24 16:51:43 +02:00
555234e381
Get rid of variable variables. AerScript does not support it.belliash2019-04-22 12:01:11 +02:00
13ea9825b8
Bubble sort algorithm in AerScript.belliash2019-04-20 16:56:53 +02:00
8331d36869
Program to calculate Euler's Totient Function.belliash2019-04-20 14:17:06 +02:00
ed8f3f341e
Remove array_same() builtin function. After last change, AerScript does not pass arrays as reference, so there is no chance to get this function return true, unless you pass array as reference.belliash2019-04-20 13:59:10 +02:00
3f1d429d5f
The program code for printing Pascal’s Triangle.belliash2019-04-20 13:49:45 +02:00
18e77b9754
array_copy() is no longer needed. AerScript makes a copy of all arrays, except a situation when array is passed by reference. Thanks to that this ugly hack called an extension, introduced by Symisc can be removed.belliash2019-04-20 07:30:07 +02:00
e794ffd97b
Fix PH7_HashmapDup(). This function needs to store the next index. Otherwise it will start to count from beginning, duplicating existing keys.belliash2019-04-19 20:16:42 +02:00
a0405f2267
Always perform type validation when inserting value to an array.belliash2019-04-19 07:08:29 +02:00
80abccc3ad
This variable contains an array of booleans, really. And if we managed to insert a boolean value to an array of chars, this means we have a bug somewhere.belliash2019-04-19 06:40:16 +02:00
291b6f0607
Get rid of backstick quoted strings (shell commands).belliash2019-04-18 06:48:51 +02:00
0e8a2372dd
Cleanup lexer from no longer used operators.belliash2019-04-18 06:20:08 +02:00
58618a4d27
Add another test - constructor overloading.belliash2019-04-17 12:24:32 +02:00
9a82298451
Do not check parameters passed to constructor. There is no need to check parameters passed to constructor and emit a notice, because PH7_VmCallClassMethod() does the job. It tries to find a matching method if overloaded and checks all arguments passed. In case of any problems, it emits E_ERROR.belliash2019-04-17 12:18:55 +02:00
227e1d2be5Merge 'typehinting' branch into 'master'.Rafal Kupiec2019-04-17 11:27:52 +02:00
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.belliash2019-04-17 11:13:29 +02:00