Commit Graph

841 Commits

Author SHA1 Message Date
Rafal Kupiec 3f1d429d5f
The program code for printing Pascal’s Triangle.
The build was successful. Details
2019-04-20 13:49:45 +02:00
Rafal Kupiec 18e77b9754
array_copy() is no longer needed.
The build was successful. Details
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.
The build was successful. Details
2019-04-20 07:19:35 +02:00
Rafal Kupiec e794ffd97b
Fix PH7_HashmapDup().
The build was successful. Details
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.
The build was successful. Details
2019-04-19 07:54:53 +02:00
Rafal Kupiec a0405f2267
Always perform type validation when inserting value to an array.
The build was successful. Details
2019-04-19 07:08:29 +02:00
Rafal Kupiec 80abccc3ad
This variable contains an array of booleans, really.
The build was successful. Details
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).
The build was successful. Details
2019-04-18 06:48:51 +02:00
Rafal Kupiec 0e8a2372dd
Cleanup lexer from no longer used operators.
The build was successful. Details
2019-04-18 06:20:08 +02:00
Rafal Kupiec 929d7b83fe
Cleanup unused functions.
The build was successful. Details
2019-04-17 18:40:14 +02:00
Rafal Kupiec 0b04e0f7c5
Test program entry point.
The build was successful. Details
2019-04-17 17:41:47 +02:00
Rafal Kupiec 407bcf5a29
Fix segmentation fault on Program::__construct() call.
The build was successful. Details
2019-04-17 17:29:05 +02:00
Rafal Kupiec f8a47d2838
Real life test - base32.
The build was successful. Details
2019-04-17 13:16:27 +02:00
Rafal Kupiec 2aa25f66d5
They do not return any value.
The build was successful. Details
2019-04-17 12:25:57 +02:00
Rafal Kupiec 58618a4d27
Add another test - constructor overloading.
The build was successful. Details
2019-04-17 12:24:32 +02:00
Rafal Kupiec 9a82298451
Do not check parameters passed to constructor.
The build was successful. Details
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.
The build was successful. Details
2019-04-17 11:49:04 +02:00
Rafal Kupiec 227e1d2be5 Merge 'typehinting' branch into 'master'.
The build was successful. Details
2019-04-17 11:27:52 +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 9d97eb228a
Test a for() loop as well.
The build was successful. Details
2019-04-17 11:07:53 +02:00
Rafal Kupiec b668d0a897
Test do { ... } while(); loop.
The build was successful. Details
2019-04-17 11:01:34 +02:00
Rafal Kupiec 102e8447a1
Formatting code.
The build was successful. Details
2019-04-17 10:08:03 +02:00
Rafal Kupiec 5f57ba54a4
Left operand must be modifiable when storing some value.
The build was successful. Details
2019-04-17 08:59:42 +02:00
Rafal Kupiec ec580ddf8c
Path splitting test.
The build was successful. Details
2019-04-17 08:32:19 +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
Rafal Kupiec 549b2ff3b4
Do not use 'elseif' construction.
The build was successful. Details
2019-04-17 07:49:22 +02:00
Rafal Kupiec e5d7977995
Fixed by implementation of OP_JMPLFB & OP_JMPLFE VM instructions.
The build was successful. Details
2019-04-16 20:25:38 +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 a5da714d61
Test while loop.
The build was successful. Details
2019-04-16 19:31:24 +02:00
Rafal Kupiec 88d382b76b
Add missing VM OP descriptions.
The build was successful. Details
2019-04-16 19:12:39 +02:00
Rafal Kupiec 2894c55dfa
Add some comments, to see if they are working.
The build was successful. Details
2019-04-16 15:08:08 +02:00
Rafal Kupiec 0b11d59f9f
Remove this dirty hack.
The build was successful. Details
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.
The build was successful. Details
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.
The build was successful. Details
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.
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 f9b518138e
Cleanup OP_LOAD instruction.
The build was successful. Details
2019-04-15 19:44:49 +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 1b248a17e7
Query the top active as well as all loop frames.
The build was successful. Details
2019-04-15 18:32:30 +02:00
Rafal Kupiec 661158d249
Simply throw memory error.
The build was successful. Details
2019-04-15 17:41:29 +02:00
Rafal Kupiec 94e06f3d3a
Do not duplicate the code; make a use of VmCreateMemObj().
The build was successful. Details
2019-04-15 17:14:14 +02:00
Rafal Kupiec 9e06322b57
Implement VmCreateMemObj().
The build was successful. Details
2019-04-15 17:04:44 +02:00
Rafal Kupiec 0f0fc01a96
We need to distinguish the loop frames.
The build was successful. Details
2019-04-13 20:21:47 +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 583f43e1f7
Convert carriage return and line feed to line feed (UNIX line ending).
The build was successful. Details
2019-04-13 14:37:04 +02:00
Rafal Kupiec aea0d1a5ec
Workaround applied to make test working.
The build was successful. Details
2019-04-13 14:35:27 +02:00
Rafal Kupiec e3ad3eb84b
Another bug found that needs to be fixed before merge to master branch.
The build was successful. Details
2019-04-13 14:32:43 +02:00
Rafal Kupiec 98898c16c5
Builtin library will be reworked later. Out of scope.
The build was successful. Details
2019-04-13 09:09:25 +02:00