Commit Graph
100 Commits
Author SHA1 Message Date
belliash 3f1397ed93 Get rid of switch: endswitch construct 2018-07-28 22:45:20 +02:00
belliash ef2ea60a60 Treat whole file as P# source code. Fixes #24. 2018-07-28 18:28:19 +02:00
belliash 488fee5caf Another bunch of typos eliminated 2018-07-28 13:16:38 +02:00
belliash eb088cd0d7 Correcting another typos in code 2018-07-28 12:56:19 +02:00
belliash cd2adc1f51 Useless variable declaration & assignment 2018-07-28 11:56:09 +02:00
belliash 8ab80ff8bc Several fixes to multiple inheritance
* Only first inherited class should be available via 'parent' keyword
 * If class X extends Y, Z and both Y and Z implements a(), $this->a() should match to the first one
2018-07-28 11:53:56 +02:00
belliash deabbd5554 Merge branch 'include_fix' into 'master' 2018-07-28 10:17:18 +02:00
belliash 765ec4d074 This is not needed anymore 2018-07-28 00:02:48 +02:00
belliash 72f2cc2c1b Remove useless fields, free some memory. 2018-07-27 23:41:51 +02:00
belliash bdf053a205 Implement a fix also for interface. This commit also adds initial and partial support for multiple inheritance. 2018-07-27 23:28:34 +02:00
belliash a6a43b5f3b This is useless now 2018-07-27 21:19:59 +02:00
belliash db93fd8b25 Make a use of our internal allocator instead of malloc() 2018-07-27 21:16:50 +02:00
belliash caf9126f0b Several changes:
* small code cleanup
 * implement new structure for storing information about class inheritance
 * implement PH7_NewClassInfo()
 * make a use of smaller ph7_class_info instead of ph7_class, to reduce memory usage
2018-07-27 21:05:54 +02:00
belliash e47eef7d97 Fix error reporting 2018-07-27 20:01:45 +02:00
belliash 4bf46f1a87 I hate typos 2018-07-27 19:00:29 +02:00
belliash 33ab488ace Removing a debug printf calls and improve error handling. 2018-07-27 18:52:32 +02:00
belliash 9e885b3196 Generally speaking ... this is working.
This commit partially fixes #5, however it still needs some work. TODO:
 * remove debugging printf calls,
 * some tuning, to consume less memory,
 * implement similar solution for interfaces
2018-07-27 17:42:12 +02:00
belliash af2c23d3b2 Add some basic checks. At this point, I can say it detects correctly a class declared inside inclueded file. 2018-07-27 17:01:58 +02:00
belliash e70a89fcdb This is useless. 2018-07-27 08:28:57 +02:00
belliash b040886b97 Test and temporary version of compiler emiting PH7_OP_CLASS_INIT instruction.
However it works on ph7_class and thus passes whole class into the VM, what causes memory overhead,
as finally we have to find this class on the VM's stack. Instead, we could pass some ph7_class_info
structure containing a name of class to look for and information about its inheritances.
2018-07-27 08:24:53 +02:00
belliash c24a9bc251 Our implementation of SyStrncpy() 2018-07-27 08:22:55 +02:00
belliash 0e6e6773bb This field is useless now 2018-07-25 19:04:08 +02:00
belliash 09451f4042 Two changes come here:
* do not allow two or more classes / interfaces with the same name
 * fix class_exists() builtin function so that it does not return true if interface is found
2018-07-25 19:00:49 +02:00
belliash 63b0f450d3 Move VM initialization into separate step to enable errors reporting earlier. 2018-07-25 18:15:40 +02:00
belliash 7bf76c3fa0 Make reported errors more PHP-like 2018-07-25 18:11:53 +02:00
belliash eaf5ca7b5f Make reported errors more PHP-like 2018-07-25 16:54:25 +02:00
belliash 0c08bc61d4 Add some basic tests for the beginning 2018-07-25 13:41:31 +02:00
belliash 6628a1ea3d This is probably what we would like to skip during compilation. 2018-07-25 13:34:17 +02:00
belliash abf9cf61b8 More typos to correct 2018-07-24 18:30:58 +02:00
belliash 6f64412108 Typo? Typo. Typo! 2018-07-24 16:37:14 +02:00
belliash ae2c1e2ae5 Fix for #6 2018-07-24 16:14:58 +02:00
belliash c0a8608dd7 Make reported errors more PHP-like 2018-07-24 15:45:44 +02:00
belliash f42f51f037 ./ and ../ are still relative paths. Only files beginning with / and X:\ should be included directly. 2018-07-24 10:29:16 +02:00
belliash d3be8d2a1a Finally fix #16. I hope at least. 2018-07-24 10:10:09 +02:00
belliash a9637d2c8a This partially implements #16 - currently only for entry file. 2018-07-24 09:06:35 +02:00
belliash 11b4c95c6f Remove useless duplicated debug functions, they returned some trash information (nothing we don't get via debug_backtrace). 2018-07-24 08:48:10 +02:00
belliash 965f19b9b7 Add scripts directory to the include path. This fixes #17. 2018-07-24 08:05:08 +02:00
belliash e2aa774a6a Reimplement SyRealPath(); fix build. 2018-07-23 20:45:30 +02:00
belliash 2508603516 Another typo found 2018-07-23 19:51:15 +02:00
belliash 3ed00e610f Path builder working buffer has to be reinitialized every loop iteration, to clean it up from trash. 2018-07-23 19:43:04 +02:00
belliash 52d9616503 Revert d937d0c825 2018-07-23 19:39:21 +02:00
belliash c28e0dbc88 There are problably still a lot of typos, here and there. 2018-07-23 17:10:48 +02:00
belliash d0b475841b Fix typo 2018-07-23 16:42:30 +02:00
belliash f8beab654d Cleanup after goto removal 2018-07-23 16:40:32 +02:00
belliash 90e2bc676f Fix for #2, taken from 063a5cffb7 (file_magic branch). Thanks to BigDave. 2018-07-23 15:46:01 +02:00
belliash 38186c3fda Correct error messages 2018-07-23 15:23:18 +02:00
belliash 17c486d599 Make reported errors more PHP-like 2018-07-23 15:20:46 +02:00
belliash 0d2238ac8c Add chapter about 64bit Integers 2018-07-23 15:18:26 +02:00
belliash 7bb9924699 Call to undefined function should also be an error, not warning 2018-07-22 22:47:00 +02:00
belliash 9cae9eb905 Throw an error if it cannot match the overloaded function/method. This fixes #13. 2018-07-22 21:41:33 +02:00
belliash 63385281bf Break script execution on exit 2018-07-22 21:28:05 +02:00
belliash 578778567d Revert the revert 2018-07-22 21:19:59 +02:00
belliash 262b46392f Enable error reporting 2018-07-22 20:49:27 +02:00
belliash 2f275c5c8b Revert last changes 2018-07-22 20:48:29 +02:00
belliash ceca007cd1 Correct some typos 2018-07-22 19:25:12 +01:00
belliash dc4208a07a Fix Darwin build 2018-07-22 19:23:58 +01:00
belliash 1645f0ccb9 Potentially fix all build issues 2018-07-22 19:23:58 +01:00
belliash c2e34931fe Fix installation 2018-07-22 19:23:58 +01:00
belliash 61d4ea1903 Initial version of Makefile that produces library 2018-07-22 19:23:58 +01:00
belliash 1e6e29e528 Even more debug information 2018-07-22 12:26:42 +02:00
belliash 2ad252e6f0 --export-dynamic is not supported for PE+ targets 2018-07-21 22:19:18 +02:00
belliash 3f776c8ef1 This quotation are unnecessary. String does not match because of them. Fix for Windows build. 2018-07-21 22:14:30 +02:00
belliash 3267ddd7ee Linker flags are also OS-specific 2018-07-21 22:10:28 +02:00
belliash 170381d04d LIBS have to be passed per OS 2018-07-21 20:10:02 +02:00
belliash d1b874b391 Fix segmentation fault 2018-07-21 14:44:36 +02:00
belliash c79f1d26cc More information about P# 2018-07-21 14:18:38 +02:00
belliash 7e363cee41 Update README 2018-07-21 13:23:13 +02:00
belliash 6d52aa641d Initial readme 2018-07-21 12:51:19 +02:00
belliash e394ce7d14 Divide libcox by Symisc into smaller logical chunks 2018-07-21 12:41:01 +02:00
belliash d3ff86f692 Correct some typos 2018-07-21 11:30:41 +02:00
belliash 9b219032c3 Remove some duplicated builtin functions 2018-07-21 11:00:29 +02:00
belliash d9507216cb Move ctype library into separate module 2018-07-21 09:43:34 +02:00
belliash 9313276e09 Dummy module should also show how to define constants 2018-07-21 08:32:10 +02:00
belliash b7caeefded Move math library into separate module 2018-07-21 08:24:20 +02:00
belliash dc4c51ca5a Allow to use operating systems's native dynamic library extension 2018-07-20 22:43:52 +02:00
belliash abb91a9874 Reorganize the repository for new build system 2018-07-20 22:35:09 +02:00
belliash efceb9d12b Add support for OpenBSD 2018-07-20 22:20:47 +02:00
belliash 100971a37a Test generic and multiplatform makefile 2018-07-20 18:30:34 +02:00
belliash d86f4f5aa2 Correct some more typos 2018-07-19 22:14:15 +02:00
belliash 1b20057c61 Correct some typos 2018-07-19 22:08:19 +02:00
belliash c6ad27566a Correct some typos 2018-07-19 22:06:12 +02:00
belliash 46ca163757 Correct module name 2018-07-19 20:02:54 +02:00
belliash a00e81f4f8 Move XML support into separate module. 2018-07-19 19:58:42 +02:00
belliash 98e2775e9a Fix typos 2018-07-19 18:57:58 +02:00
belliash 95e9174058 Move JSON support into separate module. 2018-07-19 18:30:56 +02:00
belliash 0dc9a04f0e It is a bad idea to compare memory. This fixes some false-positives. 2018-07-19 17:28:13 +02:00
belliash 28dbeeb1ad I'm not a big Windows fun, so please correct me if this is not working 2018-07-19 17:22:36 +02:00
belliash d1e56b9206 sizeof() is enough 2018-07-19 16:52:39 +02:00
belliash 641fa9e960 Move definition to header file 2018-07-19 07:40:39 +02:00
belliash 5908307885 Automatically unload all modules and free up memory on VM release. 2018-07-19 07:35:59 +02:00
belliash ee5504ea3a Initial support for modules, partially implements #1 2018-07-18 22:01:04 +02:00
belliash 887b78ead0 Remove redundant whitespace 2018-07-15 19:52:27 +02:00
belliash 6abb65a04c declare() is a stupid and useless construct. It will not be supported in P#. 2018-07-15 12:22:37 +02:00
belliash 9fe3ae2221 Fix indentation 2018-07-15 12:11:30 +02:00
belliash 6d0e346b7d Correct coding style 2018-07-15 11:57:22 +02:00
belliash 4b05081d4a Makefile can be also used on Windows, but it needs some tweaks 2018-07-15 11:54:00 +02:00
belliash 0178ff0495 Enable debugging symbols 2018-07-15 11:50:27 +02:00
belliash ac3f78785a Add tasks for compiling P# on Unix-like OS 2018-07-15 11:34:32 +02:00
belliash e9c61bd49a Updated VSCode to 1.25.1 2018-07-15 11:14:24 +02:00
belliash 4f4371545b Implement register_autoload_handler() builtin function, that registers any number of autoloaders, enabling for classes to be automatically loaded if they are not defined.
Implement a mechanism, to iterate through registered autoload callbacks until class is found.
2018-07-15 00:06:26 +02:00