Rafal Kupiec
13ea9825b8
Bubble sort algorithm in AerScript.
2019-04-20 16:56:53 +02:00
Rafal Kupiec
8331d36869
Program to calculate Euler's Totient Function.
2019-04-20 14:17:06 +02:00
Rafal Kupiec
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.
2019-04-20 13:59:10 +02:00
Rafal Kupiec
3f1d429d5f
The program code for printing Pascal’s Triangle.
2019-04-20 13:49:45 +02:00
Rafal Kupiec
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.
2019-04-20 07:30:07 +02:00
Rafal Kupiec
d819820798
Always make an array copy. Fixes #48 .
2019-04-20 07:19:35 +02:00
Rafal Kupiec
e794ffd97b
Fix PH7_HashmapDup().
...
This function needs to store the next index. Otherwise it will start to count from beginning, duplicating existing keys.
2019-04-19 20:16:42 +02:00
Rafal Kupiec
16c6b8d970
Array subscription test.
2019-04-19 07:54:53 +02:00
Rafal Kupiec
a0405f2267
Always perform type validation when inserting value to an array.
2019-04-19 07:08:29 +02:00
Rafal Kupiec
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.
2019-04-19 06:40:16 +02:00
Rafal Kupiec
291b6f0607
Get rid of backstick quoted strings (shell commands).
2019-04-18 06:48:51 +02:00
Rafal Kupiec
0e8a2372dd
Cleanup lexer from no longer used operators.
2019-04-18 06:20:08 +02:00
Rafal Kupiec
929d7b83fe
Cleanup unused functions.
2019-04-17 18:40:14 +02:00
Rafal Kupiec
0b04e0f7c5
Test program entry point.
2019-04-17 17:41:47 +02:00
Rafal Kupiec
407bcf5a29
Fix segmentation fault on Program::__construct() call.
2019-04-17 17:29:05 +02:00
Rafal Kupiec
f8a47d2838
Real life test - base32.
2019-04-17 13:16:27 +02:00
Rafal Kupiec
2aa25f66d5
They do not return any value.
2019-04-17 12:25:57 +02:00
Rafal Kupiec
58618a4d27
Add another test - constructor overloading.
2019-04-17 12:24:32 +02:00
Rafal Kupiec
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.
2019-04-17 12:18:55 +02:00
Rafal Kupiec
0268a95169
No longer necessary.
2019-04-17 11:49:04 +02:00
Rafal Kupiec
227e1d2be5
Merge 'typehinting' branch into 'master'.
2019-04-17 11:27:52 +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
9d97eb228a
Test a for() loop as well.
2019-04-17 11:07:53 +02:00
Rafal Kupiec
b668d0a897
Test do { ... } while(); loop.
2019-04-17 11:01:34 +02:00
Rafal Kupiec
102e8447a1
Formatting code.
2019-04-17 10:08:03 +02:00
Rafal Kupiec
5f57ba54a4
Left operand must be modifiable when storing some value.
2019-04-17 08:59:42 +02:00
Rafal Kupiec
ec580ddf8c
Path splitting test.
2019-04-17 08:32:19 +02:00
Rafal Kupiec
395f6c446c
Get rid of known from PHP 'elseif' construction.
2019-04-17 07:55:32 +02:00
Rafal Kupiec
549b2ff3b4
Do not use 'elseif' construction.
2019-04-17 07:49:22 +02:00
Rafal Kupiec
e5d7977995
Fixed by implementation of OP_JMPLFB & OP_JMPLFE VM instructions.
2019-04-16 20:25:38 +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
a5da714d61
Test while loop.
2019-04-16 19:31:24 +02:00
Rafal Kupiec
88d382b76b
Add missing VM OP descriptions.
2019-04-16 19:12:39 +02:00
Rafal Kupiec
2894c55dfa
Add some comments, to see if they are working.
2019-04-16 15:08:08 +02:00
Rafal Kupiec
0b11d59f9f
Remove this dirty hack.
...
This test should now work without it.
2019-04-16 13:59:10 +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
ba8e9080ef
Implement OP_JMPLFB & OP_JMPLFE VM instructions.
2019-04-16 12:46: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
f9b518138e
Cleanup OP_LOAD instruction.
2019-04-15 19:44:49 +02:00
Rafal Kupiec
517dffcbc1
Separate VM instruction for variable declaration (OP_DECLARE).
2019-04-15 19:18:29 +02:00
Rafal Kupiec
1b248a17e7
Query the top active as well as all loop frames.
2019-04-15 18:32:30 +02:00
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
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
583f43e1f7
Convert carriage return and line feed to line feed (UNIX line ending).
2019-04-13 14:37:04 +02:00