Commit Graph

  • 838842fa02 Add execution marker to each instruction. belliash 2018-08-31 08:25:48 +02:00
  • 3e2a5b3be2 Correct field length. belliash 2018-08-30 19:23:06 +02:00
  • 90a02d8fdd Add operator ID to the debugging information. belliash 2018-08-30 16:52:09 +02:00
  • 461ee00034 Allow to use PH7_CTX_DEPRECATED. belliash 2018-08-30 13:47:01 +02:00
  • fbc725c935 We are tokenizing Aer. belliash 2018-08-30 12:33:38 +02:00
  • 8215c4e984 Correct comment. belliash 2018-08-30 12:15:48 +02:00
  • 041c65d63e Implement SySetGetUsed(); belliash 2018-08-30 12:00:02 +02:00
  • b6161b0e4b Fix VM ByteCode debugging. Only executed bytecode should be registered for debugging. In this way we do not register all emitted bytecode and save some memory. What is more, this change registers the bytecode in correct executing order including jumps. Previously all bytecode generated by compiler has been saved what made the bytecode to be saved in compile, not execute order. belliash 2018-08-30 09:46:40 +02:00
  • 98d3de2105 Record all instructions in debugging set. belliash 2018-08-29 08:04:19 +02:00
  • 8f92782fe2 Fix segmentation fault. belliash 2018-08-28 19:07:07 +02:00
  • d97c0a6634 Fix VmExtractPeekDebugTrace(); belliash 2018-08-28 11:17:32 +02:00
  • 603672b8e2 PH7 disallows function calls from global scope. belliash 2018-08-28 11:16:34 +02:00
  • 37c960e313 Fix uninitialized value leading to segmentation fault. belliash 2018-08-27 20:23:08 +02:00
  • 6a14e88973 Remove unused definition. belliash 2018-08-27 20:22:23 +02:00
  • 349bbed774 Allow to enable or disable debugging. belliash 2018-08-27 19:53:24 +02:00
  • c8e2dccbeb Assign Program::main() return value as program exit code. belliash 2018-08-27 19:32:17 +02:00
  • 7a740c0570 Correct typo. belliash 2018-08-27 18:23:12 +02:00
  • 6d27069590 Add new file for every chunk. Every chunk should has its own file associated, even if it is [MEMORY]. Otherwise, some false information can be provided by interpreter to developer. belliash 2018-08-27 18:04:45 +02:00
  • c9a1971ace Rewrite debug_backtrace() builtin function. It makes a use of new VmExtractDebugTrace() function. This probably fixes #45. belliash 2018-08-27 15:47:34 +02:00
  • ce621cc49c Implement VmExtractPeekDebugTrace(); belliash 2018-08-27 12:42:02 +02:00
  • d0b0a416d0 Allow to dump last frame only. belliash 2018-08-27 12:36:21 +02:00
  • 8f7b28d46c Formatting for VM dump. belliash 2018-08-27 12:16:41 +02:00
  • fb671ec2d7 Implement VmExtractDebugTrace(). belliash 2018-08-27 11:32:21 +02:00
  • 18222dce8c Implement VmDebugTrace structure. belliash 2018-08-27 11:22:02 +02:00
  • 1403b144d9 Sequence numbers should start from 1. belliash 2018-08-27 09:30:51 +02:00
  • 782a4df1cf Formatting, add information about file and line. belliash 2018-08-27 09:17:18 +02:00
  • b1f71167d9 Unify memory indicator. belliash 2018-08-27 08:22:05 +02:00
  • 3f7bac2d85 Associate a filename with VM instructions. belliash 2018-08-27 06:45:53 +02:00
  • f552c54992 Better formatting. belliash 2018-08-26 22:10:47 +02:00
  • e6ad76b031 Dump VM after execution. VM instructions dump should be processed after script execution to follow included files. belliash 2018-08-26 20:29:19 +02:00
  • a7bbd55d48 Temporarily enable debugging by default. belliash 2018-08-26 20:09:30 +02:00
  • 178f3820f6 Enable debugging. This commit introduces ne debug feature. The PH7 Engine limits the VM dump to the global scope. Since Aer Script is fully object-oriented language the dump option contains only information about last call of OP_DONE. This change, forces the VM to store all instructions set in a global container when debugging is enabled, thus providing information the dump of whole script parse. belliash 2018-08-26 19:59:17 +02:00
  • ab5ee94f99 API function rename. belliash 2018-08-26 19:18:33 +02:00
  • 98ee931a04 Correct instruction length. belliash 2018-08-26 18:33:57 +02:00
  • 877d19a815 API function rename. belliash 2018-08-26 18:30:21 +02:00
  • c8c6208cca Return script exit code. belliash 2018-08-26 08:37:35 +02:00
  • 94b213674a Change the script located in memory indicator. For easier reading with line numbers. belliash 2018-08-23 18:27:14 +02:00
  • 4197737ddc Move structure definitions to header. belliash 2018-08-23 17:08:10 +02:00
  • 82c18dc109 Do not pop out the processed files. List of procesed files is still needed, as we point to them. belliash 2018-08-23 07:06:33 +02:00
  • 20c1611902 Implement PH7_VmExtractActiveClass(). This function extracts an active class with specified depth, #45. belliash 2018-08-22 15:33:16 +02:00
  • 0ff32e6673 Remove duplicated constants. belliash 2018-08-22 11:24:34 +02:00
  • dbe373d537 Resolve __CLASS__ at compile time. Ticket: #45: __CLASS__ constant must be resolved at compile time, not run time. Otherwise it returns incorrect data. belliash 2018-08-22 09:59:10 +02:00
  • 3e18a5b8e8 Optimize the code, #45. belliash 2018-08-22 08:51:45 +02:00
  • a0f7949b24 Resolve __DIR__ at compile time. Ticket: #45: __DIR__ constant must be resolved at compile time, not run time. Otherwise it returns incorrect data. belliash 2018-08-22 06:23:43 +02:00
  • 02242bb93d Resolve __FILE__ at compile time. Ticket: #45: __FILE__ constant must be resolved at compile time, not run time. Otherwise it returns incorrect data. belliash 2018-08-21 20:18:39 +02:00
  • 19a504fe11 Enter the class block during compilation, #45. belliash 2018-08-21 19:45:50 +02:00
  • 33523e4e8a Block definitions for class and namespace. belliash 2018-08-21 19:35:00 +02:00
  • 2d99881240 Get rid of manual optimisation technique. This optimisation technique results in non insignificant speed boost on some old x86 architectures. Novadays, we should rely on compiler optimisation. belliash 2018-08-21 06:27:07 +02:00
  • 81325b5059 Correct typo. belliash 2018-08-18 21:05:46 +02:00
  • 2160747479 Make get_included_files() returning full path. belliash 2018-08-18 21:02:23 +02:00
  • cbb4a0aa5c get_included_files() should return a list of included, files. belliash 2018-08-18 20:42:54 +02:00
  • 00dc23ee4a Get rid of manual optimisation technique resulting in non insignificant speed boost on some old x86 architectures, #38; belliash 2018-08-18 19:43:00 +02:00
  • 4b3279ef01 Correct function description. belliash 2018-08-18 19:32:33 +02:00
  • 4dbd3ea412 New memory subsystem. This is a new memory subsystem implementing heap calculations as well as new builtin functions: * get_memory_usage() * get_memory_peak_usage() * get_memory_limit() It also allows to set an upper memory limit, ensuring that processed script will not be able to allocate more memory from OS. New subsystem is based on work done in 'memory_limit' branch. Big thanks to devnexen! This finally fixes #25. belliash 2018-08-18 19:24:38 +02:00
  • 08c47b7528 Correct dictionary issues. belliash 2018-08-17 09:25:29 +02:00
  • ab1266ef5d Rename VFS belliash 2018-08-16 22:05:30 +02:00
  • c83d6e13fc Removing xExec. First of all, VFS is not a right place for this, finally it was not implemented anyway. belliash 2018-08-16 21:37:34 +02:00
  • 03a5b7e397 Merge branch 'compiler_rework' into master belliash 2018-08-16 21:28:49 +02:00
  • a8a88b4746 Compile closures. belliash 2018-08-16 18:40:23 +02:00
  • f28c671e69 Compile closures. belliash 2018-08-16 18:31:12 +02:00
  • 074edd11d3 Add Windows 10 information belliash 2018-08-16 18:19:33 +02:00
  • a8961eb36f Fix build belliash 2018-08-16 17:48:17 +02:00
  • 2c28b63d90 Properly interpret language constructs, fixes #28. belliash 2018-08-16 17:42:30 +02:00
  • 9100bf0696 Treat 'import' as a special keyword. belliash 2018-08-16 16:32:28 +02:00
  • b5fe36c14b There is no need for include_once() and require_once() Aer is object-oriented language and the code it includes is executed in the global scope. Global scope can contain only classes and namespaces and they cannot be re-declared. Thus every file can be included just once. We can leave this to programmer, or take care about it on interpreter side. With this commit, include() and require() builtin functions allows to load file just once. Thanks to that, there is no need for include_once() and require_once(). Done in scope of #30. belliash 2018-08-16 16:12:29 +02:00
  • 510410096b Aer is OOP language. There is nothing like function. belliash 2018-08-16 13:57:35 +02:00
  • 4961922b1d Unify error with other related to namespace. belliash 2018-08-16 13:36:19 +02:00
  • 793b6127d5 Temporarily fix namespace support. The namespace feature is not supported in this version, they are treated same way as global scope. belliash 2018-08-16 12:39:05 +02:00
  • 787f3b5d5f Synchronize the namespace also with first semicolon. belliash 2018-08-16 12:01:36 +02:00
  • be27532fdf Unify error level for namespace support. belliash 2018-08-16 11:26:47 +02:00
  • e208e778e0 Compile global scope independently, fixes #40. belliash 2018-08-16 11:15:03 +02:00
  • 039fde099f Compile Aer code or chunk of code. belliash 2018-08-16 09:34:18 +02:00
  • f9946e9842 Reimplement filegroup() and fileowner() as builtin function, #42. belliash 2018-08-15 21:58:21 +02:00
  • f33f8d66b4 Correct warning messages. belliash 2018-08-15 21:43:17 +02:00
  • 16ea44372f Dictionary correction. belliash 2018-08-15 21:35:44 +02:00
  • ac1dee48c9 Reimplement fileinode() as builtin function, #42. belliash 2018-08-15 21:28:59 +02:00
  • b642858044 Add missing definition belliash 2018-08-15 20:20:56 +02:00
  • b94a23d580 Get rid of PH7 ident belliash 2018-08-15 20:03:39 +02:00
  • 7c7a837efb Correct another bunch of typos. belliash 2018-08-15 19:06:00 +02:00
  • 71d46e3052 Compiler rework does not allow functions in global scope. These functions will be rewritten in C as a builtin functions in scope of #42. belliash 2018-08-15 18:56:10 +02:00
  • da0b7eb629 Some useless function belliash 2018-08-15 17:34:40 +02:00
  • af139b3f0a Reimplement C-like min() and max() functions. These functions should have C-like implementation and take exactly 2 arguments: integer or float. Finally, C-implementation will be faster than using PH7 builtin library that needs to be compiled and interpreted. belliash 2018-08-15 17:26:26 +02:00
  • 89d7aca73a Correct typo belliash 2018-08-15 16:38:33 +02:00
  • 8ab67084a0 It is as easy to instantiate the class as to remove this useless functions. belliash 2018-08-15 16:31:28 +02:00
  • 6f491b398a Always show compilation errors belliash 2018-08-15 16:01:09 +02:00
  • 8e87989719 A;ways show compilation errors from evaluated code belliash 2018-08-15 15:41:53 +02:00
  • 052649e677 Trust builtin library. The builtin library should compile successfully. Otherwise, we want to know about it. belliash 2018-08-15 14:12:44 +02:00
  • 0e64c7cc6e Fix builtin library belliash 2018-08-15 14:08:59 +02:00
  • 64b9ac4406 Forward declaration already in compiler.h belliash 2018-08-15 11:18:40 +02:00
  • be454ff7be Rename PH7_COMPILE_SINGLE_STMT to PH7_COMPILE_STATEMENT belliash 2018-08-14 23:48:15 +02:00
  • 26b1675021 API function rename belliash 2018-08-14 17:43:43 +02:00
  • ece036b214 Rework the entry point * some functions were not used and have been removed * some parameters seemed to be useless and have been removed * code cleanup belliash 2018-08-14 13:45:27 +02:00
  • 1cb3e394cf Implement pseudo boolean type. belliash 2018-08-14 10:42:52 +02:00
  • 7e3c79d3c5 Functions naming cleanup belliash 2018-08-13 20:16:37 +02:00
  • 02fde9c30f It is not PHP compiler belliash 2018-08-13 19:53:08 +02:00
  • d7f9d8e157 Add missing 'finally' keyword. belliash 2018-08-12 22:04:47 +02:00
  • aa6e00db27 Forward declaration for all functions. belliash 2018-08-12 21:58:27 +02:00
  • 59c15caf4e Use something more human readable belliash 2018-08-12 21:16:05 +02:00
  • 6b7591a137 Move common part to compiler.h belliash 2018-08-12 21:11:13 +02:00
  • 289af8f9ae Unify compiler's function naming convenction belliash 2018-08-12 20:58:01 +02:00