Commit Graph

908 Commits

Author SHA1 Message Date
Rafal Kupiec a2fb0b9ae5
Get rid of 'parent' constant. Use variable instead.
The build was successful. Details
2019-05-08 08:38:40 +02:00
Rafal Kupiec 07bd3ceec3
Reimplement 'parent' construct as variable $parent.
The build was successful. Details
This commit also adds new controls to variables, which prevents from re-assigning a value when set. Thanks to that, both $this and $parent cannot be overwritten by using OP_STORE instruction. Other instructions still need some
work.
2019-05-08 08:26:48 +02:00
Rafal Kupiec 0c8ca53f70
Continuous numeration.
The build was successful. Details
2019-05-07 09:24:43 +02:00
Rafal Kupiec 03c37c58bb
Add constants test.
The build was successful. Details
2019-05-07 08:42:42 +02:00
Rafal Kupiec 17e0fb4653
Do not try to resolve constants when OP_MEMBER is next instruction on the stack.
The build was successful. Details
2019-05-06 18:42:06 +02:00
Rafal Kupiec d3ae1c1bf4
Only identifiers should be allowed as constant name.
The build was successful. Details
2019-05-06 18:38:56 +02:00
Rafal Kupiec cedc288f67
Remove static constant.
The build was successful. Details
2019-05-06 11:42:19 +02:00
Rafal Kupiec 0a6b5a6f42
The 'self' and 'parent' keywords should be resolved at compile time.
The build was successful. Details
2019-05-06 11:38:32 +02:00
Rafal Kupiec 7b6245572f
Remove constants management builtin functions.
The build was successful. Details
2019-05-06 06:54:29 +02:00
Rafal Kupiec 9d84c558c4
New test for goto statement.
The build was successful. Details
2019-05-06 06:39:36 +02:00
Rafal Kupiec c4b63a3018
Rename OP_LOAD instruction to OP_LOADV.
The build was successful. Details
2019-05-05 09:33:06 +02:00
Rafal Kupiec 23900f2aed
Remove unused compiler function - PH7_CompileLangConstruct().
The build was successful. Details
In AerScript, there are no such language constructs, that have syntax similiar to functions. If so, it is just a builtin function.
2019-05-04 18:53:11 +02:00
Rafal Kupiec b36510943d
Implement 'define' statement for defining constants globally.
The build was successful. Details
2019-05-04 17:08:09 +02:00
Rafal Kupiec ab8bf48485
Make constant declarations local.
The build was successful. Details
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.
2019-05-04 13:45:32 +02:00
Rafal Kupiec 90b2da7c56
Unify constant length.
The build was successful. Details
2019-05-03 12:40:47 +02:00
Rafal Kupiec e6b7f1be2c
Always emit OP_JMPLFE as goto can be used inside a loop and frame has to be left.
The build was successful. Details
2019-05-03 10:55:57 +02:00
Rafal Kupiec 03fc167be1
Proper implementation of so hated 'goto' statement.
The build was successful. Details
2019-05-03 10:35:54 +02:00
Rafal Kupiec 2f3ce65289
Correct comment to if/else statements.
The build was successful. Details
2019-05-02 19:03:47 +02:00
Rafal Kupiec 73c1a814f5
Test foreach() loop.
The build was successful. Details
2019-05-02 18:51:12 +02:00
Rafal Kupiec 8f681d1605
Correct PH7_OP_JMPLFE debug name.
The build was successful. Details
2019-05-01 20:24:37 +02:00
Rafal Kupiec 5a0e4667fa
More readable error message.
The build was successful. Details
2019-05-01 20:09:55 +02:00
Rafal Kupiec 508e8965a9
VmExtractMemObj() should not be able to create a variable.
The build was successful. Details
2019-05-01 18:29:57 +02:00
Rafal Kupiec 7d606cbf1d
Do not create variables automatically on each OP_CALL using VmExtractMemObj().
The build was successful. Details
2019-05-01 18:19:04 +02:00
Rafal Kupiec 3dfa4232ba
Use VmCreateMemObj() to create $this.
The build was successful. Details
2019-05-01 14:00:35 +02:00
Rafal Kupiec 7c37451520
Namespaces are not supported and broken, but compile them properly.
The build was successful. Details
2019-05-01 13:49:07 +02:00
Rafal Kupiec 1829eff323
Fix interface and class compilation.
The build was successful. Details
2019-05-01 13:37:14 +02:00
Rafal Kupiec 798fd7d3b2
Remove unused and useless VM instruction.
The build was successful. Details
2019-05-01 12:33:51 +02:00
Rafal Kupiec 70676cb0d5
Correct comment.
The build was successful. Details
2019-05-01 12:27:40 +02:00
Rafal Kupiec d76441ad4c
Safely store only compatible values.
The build was successful. Details
2019-05-01 12:24:20 +02:00
Rafal Kupiec 186e5887f6
We can now declare key and value variables inside a loop.
The build was successful. Details
2019-05-01 11:51:08 +02:00
Rafal Kupiec bbcd99789d
Fix test.
The build was successful. Details
2019-05-01 11:48:57 +02:00
Rafal Kupiec 1d6822c1e2
Allow key and value declaration inside foreach() loop.
The build was successful. Details
2019-05-01 11:38:28 +02:00
Rafal Kupiec a726ab795a
Throw an error if $key or $value does not exist.
The build was successful. Details
2019-05-01 09:51:33 +02:00
Rafal Kupiec 5c1e0f0cce
Simplify the foreach() loop implementation.
The build was successful. Details
2019-04-30 23:59:02 +02:00
Rafal Kupiec 4d8d92092e
Refactor foreach() loop.
The build was successful. Details
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.
2019-04-30 23:38:59 +02:00
Rafal Kupiec 1156519af6
This is a compiler task to fill key and value variables names.
The build was successful. Details
2019-04-29 11:44:17 +02:00
Rafal Kupiec 62c315da9e
Call to undefined constant should lead to an error.
The build was successful. Details
2019-04-28 21:44:48 +02:00
Rafal Kupiec 10516fb655
Remove useless comments from BrainFuck tests.
The build was successful. Details
2019-04-28 19:51:38 +02:00
Rafal Kupiec f09d4def2d
It's AerScript.
The build was successful. Details
2019-04-28 19:47:09 +02:00
Rafal Kupiec d6fca929ea
Callbacks can be just called.
The build was successful. Details
2019-04-28 19:36:27 +02:00
Rafal Kupiec 6593252bce
Remove get_defined_functions() built-in function.
The build was successful. Details
This function is useless in Aer, as it is fully OOP language and thus disallows functions declaration.
2019-04-28 19:31:58 +02:00
Rafal Kupiec d26bc99b68
There is no reason to trigger a low-level error in AerScript.
The build was successful. Details
AerScript is fully OOP language and supports exceptions that can be thrown at any time.
2019-04-28 19:27:24 +02:00
Rafal Kupiec 00c502c11b
Get rid of import_request_variables() builtin function. Its pure evil.
The build was successful. Details
2019-04-28 19:23:42 +02:00
Rafal Kupiec 9f4f6298c2
Do not create variable in foreach() loop automatically.
The build was successful. Details
2019-04-28 19:14:56 +02:00
Rafal Kupiec 2bda002259
Add missing variables declaration.
The build was successful. Details
2019-04-28 19:14:25 +02:00
Rafal Kupiec eef5ee370d
Remove this useless wrapper function.
The build was successful. Details
2019-04-28 18:25:43 +02:00
Rafal Kupiec 8ab3919688
Class names should be case sensitive.
The build was successful. Details
2019-04-28 18:24:22 +02:00
Rafal Kupiec 58015f2a20
Correct typo.
The build was successful. Details
2019-04-28 18:18:03 +02:00
Rafal Kupiec d72774f0f4
Namespaces in AerScript do not support aliases.
The build was successful. Details
2019-04-25 23:31:48 +02:00
Rafal Kupiec 407fb09e8f
Throw an error only if this is not the end of tokens stream.
The build was successful. Details
2019-04-25 19:24:53 +02:00