Commit Graph

  • cedc288f67
    Remove static constant. belliash 2019-05-06 11:42:19 +0200
  • 0a6b5a6f42
    The 'self' and 'parent' keywords should be resolved at compile time. belliash 2019-05-06 11:38:32 +0200
  • 7b6245572f
    Remove constants management builtin functions. belliash 2019-05-06 06:54:29 +0200
  • 9d84c558c4
    New test for goto statement. belliash 2019-05-06 06:39:36 +0200
  • c4b63a3018
    Rename OP_LOAD instruction to OP_LOADV. belliash 2019-05-05 09:33:06 +0200
  • 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. belliash 2019-05-04 18:53:11 +0200
  • b36510943d
    Implement 'define' statement for defining constants globally. belliash 2019-05-04 17:08:09 +0200
  • 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. belliash 2019-05-04 13:45:32 +0200
  • 90b2da7c56
    Unify constant length. belliash 2019-05-03 12:40:47 +0200
  • e6b7f1be2c
    Always emit OP_JMPLFE as goto can be used inside a loop and frame has to be left. belliash 2019-05-03 10:55:57 +0200
  • 03fc167be1
    Proper implementation of so hated 'goto' statement. belliash 2019-05-03 10:35:54 +0200
  • 2f3ce65289
    Correct comment to if/else statements. belliash 2019-05-02 19:03:47 +0200
  • 73c1a814f5
    Test foreach() loop. belliash 2019-05-02 18:51:12 +0200
  • 8f681d1605
    Correct PH7_OP_JMPLFE debug name. belliash 2019-05-01 20:24:37 +0200
  • 5a0e4667fa
    More readable error message. belliash 2019-05-01 20:09:55 +0200
  • 508e8965a9
    VmExtractMemObj() should not be able to create a variable. belliash 2019-05-01 18:29:57 +0200
  • 7d606cbf1d
    Do not create variables automatically on each OP_CALL using VmExtractMemObj(). belliash 2019-05-01 18:19:04 +0200
  • 3dfa4232ba
    Use VmCreateMemObj() to create $this. belliash 2019-05-01 14:00:35 +0200
  • 7c37451520
    Namespaces are not supported and broken, but compile them properly. belliash 2019-05-01 13:49:07 +0200
  • 1829eff323
    Fix interface and class compilation. belliash 2019-05-01 13:37:14 +0200
  • 798fd7d3b2
    Remove unused and useless VM instruction. belliash 2019-05-01 12:33:51 +0200
  • 70676cb0d5
    Correct comment. belliash 2019-05-01 12:27:40 +0200
  • d76441ad4c
    Safely store only compatible values. belliash 2019-05-01 12:24:20 +0200
  • 186e5887f6
    We can now declare key and value variables inside a loop. belliash 2019-05-01 11:51:08 +0200
  • bbcd99789d
    Fix test. belliash 2019-05-01 11:48:57 +0200
  • 1d6822c1e2
    Allow key and value declaration inside foreach() loop. belliash 2019-05-01 11:38:28 +0200
  • a726ab795a
    Throw an error if $key or $value does not exist. belliash 2019-05-01 09:51:33 +0200
  • 5c1e0f0cce
    Simplify the foreach() loop implementation. belliash 2019-04-30 23:59:02 +0200
  • 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. belliash 2019-04-30 23:38:59 +0200
  • 1156519af6
    This is a compiler task to fill key and value variables names. belliash 2019-04-29 11:44:17 +0200
  • 62c315da9e
    Call to undefined constant should lead to an error. belliash 2019-04-28 21:44:48 +0200
  • 10516fb655
    Remove useless comments from BrainFuck tests. belliash 2019-04-28 19:51:38 +0200
  • f09d4def2d
    It's AerScript. belliash 2019-04-28 19:47:09 +0200
  • d6fca929ea
    Callbacks can be just called. belliash 2019-04-28 19:36:27 +0200
  • 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. belliash 2019-04-28 19:31:58 +0200
  • 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. belliash 2019-04-28 19:27:24 +0200
  • 00c502c11b
    Get rid of import_request_variables() builtin function. Its pure evil. belliash 2019-04-28 19:23:42 +0200
  • 9f4f6298c2
    Do not create variable in foreach() loop automatically. belliash 2019-04-28 19:14:56 +0200
  • 2bda002259
    Add missing variables declaration. belliash 2019-04-28 19:14:25 +0200
  • eef5ee370d
    Remove this useless wrapper function. belliash 2019-04-28 18:25:43 +0200
  • 8ab3919688
    Class names should be case sensitive. belliash 2019-04-28 18:24:22 +0200
  • 58015f2a20
    Correct typo. belliash 2019-04-28 18:18:03 +0200
  • d72774f0f4
    Namespaces in AerScript do not support aliases. belliash 2019-04-25 23:31:48 +0200
  • 407fb09e8f
    Throw an error only if this is not the end of tokens stream. belliash 2019-04-25 19:24:53 +0200
  • a7606864fa
    Do not use broken foreach() loop in this test. belliash 2019-04-25 19:09:22 +0200
  • cb455c3c73
    Unify compiler OOM error messages. belliash 2019-04-24 23:52:48 +0200
  • 1c5982e764
    There is no reason to use a loop here. belliash 2019-04-24 23:45:46 +0200
  • 3be46532dd
    Remove unused PH7_ErrorRecover() function. belliash 2019-04-24 23:38:45 +0200
  • c443a38fec
    Do not count compilation errors. Interpreter will abort script execution on first error found. belliash 2019-04-24 23:22:06 +0200
  • 48a38dc1af
    PH7_GenCompileError() always breaks script execution on E_ERROR. Thus code placed below will never get executed and is completely useless. belliash 2019-04-24 23:12:59 +0200
  • 7c8259057b
    PH7_VmThrowError() always breaks script execution on PH7_CTX_ERR. Thus code placed below will never get executed and is completely useless. belliash 2019-04-24 18:30:24 +0200
  • 9b1ad67580
    PH7_VmThrowError() always breaks script execution on PH7_CTX_ERR. Thus code placed below will never get executed and is completely useless. belliash 2019-04-24 18:09:41 +0200
  • deda6b4b15
    PH7_GenCompileError() always breaks script execution on E_ERROR. Thus code placed below will never get executed and is completely useless. belliash 2019-04-24 18:03:57 +0200
  • 5b0b965199
    Fix segmentation fault when trying to clone non-instantiated object. belliash 2019-04-24 16:51:43 +0200
  • 555234e381
    Get rid of variable variables. AerScript does not support it. belliash 2019-04-22 12:01:11 +0200
  • aa64a5eeb2
    Add missing legal info. belliash 2019-04-20 20:03:42 +0200
  • 8f18ebf884
    Update legal info. belliash 2019-04-20 19:53:16 +0200
  • c9203b6c91
    New source code legal format. belliash 2019-04-20 19:29:15 +0200
  • 13ea9825b8
    Bubble sort algorithm in AerScript. belliash 2019-04-20 16:56:53 +0200
  • 8331d36869
    Program to calculate Euler's Totient Function. belliash 2019-04-20 14:17:06 +0200
  • 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. belliash 2019-04-20 13:59:10 +0200
  • 3f1d429d5f
    The program code for printing Pascal’s Triangle. belliash 2019-04-20 13:49:45 +0200
  • 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. belliash 2019-04-20 07:30:07 +0200
  • d819820798
    Always make an array copy. Fixes #48. belliash 2019-04-20 07:19:35 +0200
  • e794ffd97b
    Fix PH7_HashmapDup(). This function needs to store the next index. Otherwise it will start to count from beginning, duplicating existing keys. belliash 2019-04-19 20:16:42 +0200
  • 16c6b8d970
    Array subscription test. belliash 2019-04-19 07:54:53 +0200
  • a0405f2267
    Always perform type validation when inserting value to an array. belliash 2019-04-19 07:08:29 +0200
  • 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. belliash 2019-04-19 06:40:16 +0200
  • 291b6f0607
    Get rid of backstick quoted strings (shell commands). belliash 2019-04-18 06:48:51 +0200
  • 0e8a2372dd
    Cleanup lexer from no longer used operators. belliash 2019-04-18 06:20:08 +0200
  • 929d7b83fe
    Cleanup unused functions. belliash 2019-04-17 18:40:14 +0200
  • 0b04e0f7c5
    Test program entry point. belliash 2019-04-17 17:41:47 +0200
  • 407bcf5a29
    Fix segmentation fault on Program::__construct() call. belliash 2019-04-17 17:29:05 +0200
  • f8a47d2838
    Real life test - base32. belliash 2019-04-17 13:16:27 +0200
  • 2aa25f66d5
    They do not return any value. belliash 2019-04-17 12:25:57 +0200
  • 58618a4d27
    Add another test - constructor overloading. belliash 2019-04-17 12:24:32 +0200
  • 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. belliash 2019-04-17 12:18:55 +0200
  • 0268a95169
    No longer necessary. belliash 2019-04-17 11:49:04 +0200
  • 227e1d2be5 Merge 'typehinting' branch into 'master'. Rafal Kupiec 2019-04-17 11:27:52 +0200
  • 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. belliash 2019-04-17 11:13:29 +0200
  • 9d97eb228a
    Test a for() loop as well. belliash 2019-04-17 11:07:53 +0200
  • b668d0a897
    Test do { ... } while(); loop. belliash 2019-04-17 11:01:34 +0200
  • 102e8447a1
    Formatting code. belliash 2019-04-17 10:08:03 +0200
  • 5f57ba54a4
    Left operand must be modifiable when storing some value. belliash 2019-04-17 08:59:42 +0200
  • ec580ddf8c
    Path splitting test. belliash 2019-04-17 08:32:19 +0200
  • 395f6c446c
    Get rid of known from PHP 'elseif' construction. belliash 2019-04-17 07:55:32 +0200
  • 549b2ff3b4
    Do not use 'elseif' construction. belliash 2019-04-17 07:49:22 +0200
  • e5d7977995
    Fixed by implementation of OP_JMPLFB & OP_JMPLFE VM instructions. belliash 2019-04-16 20:25:38 +0200
  • 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. Piotr Likoski 2019-04-16 20:15:38 +0200
  • a5da714d61
    Test while loop. belliash 2019-04-16 19:31:24 +0200
  • 88d382b76b
    Add missing VM OP descriptions. belliash 2019-04-16 19:12:39 +0200
  • 2894c55dfa
    Add some comments, to see if they are working. belliash 2019-04-16 15:08:08 +0200
  • 0b11d59f9f
    Remove this dirty hack. This test should now work without it. belliash 2019-04-16 13:59:10 +0200
  • 07e3a09999
    Enter and leave a loop frame on every iteration. This fixes strict variable declaration inside loops. belliash 2019-04-16 13:51:58 +0200
  • ba8e9080ef
    Implement OP_JMPLFB & OP_JMPLFE VM instructions. belliash 2019-04-16 12:46:58 +0200
  • ef4f994e8b
    Do not allow 'break' statement to take a parameter. This is strange construction introduced in PHP. belliash 2019-04-16 12:34:53 +0200
  • 5fddbf8737
    Do not allow 'continue' statement to take a parameter. This is strange construction introduced in PHP. belliash 2019-04-16 12:32:01 +0200
  • 89f19133d5
    Rename VM's jump instructions for better readability. belliash 2019-04-16 08:14:16 +0200
  • eb80dced3e
    Correct comment. belliash 2019-04-15 20:00:54 +0200
  • f9b518138e
    Cleanup OP_LOAD instruction. belliash 2019-04-15 19:44:49 +0200