Commit Graph

803 Commits

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