148 Commits

Author SHA1 Message Date
045ebe92ae
At least compile the 'finally' block for now. 2019-06-04 07:11:55 +02:00
d0840d7eea
Cleanup after switching from 'parent' constant to '$parent' variable. 2019-06-03 12:31:28 +02:00
625a386b69
Get rid of 'self' statement. 2019-06-03 12:29:21 +02:00
cd9ff68ae9
Completely disallow static methods in interfaces. 2019-05-30 20:46:34 +02:00
984429bc55
Disallow static method declarations in interface. 2019-05-30 20:34:24 +02:00
53199cac4e
Another fixes to OOP-related error reporting. 2019-05-30 20:18:20 +02:00
ba1c840009
Allow a 'final virtual' classes to be declared.
Virtual final classes are helpful in the case someone is wrapping common functions that are static, but the common class itself cannot be instantiated.
2019-05-30 09:44:46 +02:00
3cca5faa76
Store variable type in dedicated field. 2019-05-21 14:49:36 +02:00
55acf8111f
Assume private visibility for all class members by default.
In most (all?) modern OOP languages class members visibility is assumed to be private and programmer has to consciously set it to public or protected. PHP has the different approach what can cause a security flaws in written scripts. AerScript will not follow this way, as it seems to be conceptually broken.
2019-05-17 08:40:41 +02:00
e8c675bd8e
Store a pointer to class container to reduce memory usage. 2019-05-16 15:41:37 +02:00
7203492763
Store a class name in each attribute. 2019-05-16 13:25:06 +02:00
a2fb0b9ae5
Get rid of 'parent' constant. Use variable instead. 2019-05-08 08:38:40 +02:00
d3ae1c1bf4
Only identifiers should be allowed as constant name. 2019-05-06 18:38:56 +02:00
0a6b5a6f42
The 'self' and 'parent' keywords should be resolved at compile time. 2019-05-06 11:38:32 +02:00
c4b63a3018
Rename OP_LOAD instruction to OP_LOADV. 2019-05-05 09:33:06 +02:00
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.
2019-05-04 18:53:11 +02:00
b36510943d
Implement 'define' statement for defining constants globally. 2019-05-04 17:08:09 +02:00
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.
2019-05-04 13:45:32 +02:00
e6b7f1be2c
Always emit OP_JMPLFE as goto can be used inside a loop and frame has to be left. 2019-05-03 10:55:57 +02:00
03fc167be1
Proper implementation of so hated 'goto' statement. 2019-05-03 10:35:54 +02:00
2f3ce65289
Correct comment to if/else statements. 2019-05-02 19:03:47 +02:00
5a0e4667fa
More readable error message. 2019-05-01 20:09:55 +02:00
7c37451520
Namespaces are not supported and broken, but compile them properly. 2019-05-01 13:49:07 +02:00
1829eff323
Fix interface and class compilation. 2019-05-01 13:37:14 +02:00
1d6822c1e2
Allow key and value declaration inside foreach() loop. 2019-05-01 11:38:28 +02:00
5c1e0f0cce
Simplify the foreach() loop implementation. 2019-04-30 23:59:02 +02:00
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.
2019-04-30 23:38:59 +02:00
d72774f0f4
Namespaces in AerScript do not support aliases. 2019-04-25 23:31:48 +02:00
407fb09e8f
Throw an error only if this is not the end of tokens stream. 2019-04-25 19:24:53 +02:00
cb455c3c73
Unify compiler OOM error messages. 2019-04-24 23:52:48 +02:00
1c5982e764
There is no reason to use a loop here. 2019-04-24 23:45:46 +02:00
3be46532dd
Remove unused PH7_ErrorRecover() function. 2019-04-24 23:38:45 +02:00
c443a38fec
Do not count compilation errors.
Interpreter will abort script execution on first error found.
2019-04-24 23:22:06 +02:00
48a38dc1af
PH7_GenCompileError() always breaks script execution on E_ERROR.
Thus code placed below will never get executed and is completely useless.
2019-04-24 23:12:59 +02:00
555234e381
Get rid of variable variables. AerScript does not support it. 2019-04-22 12:01:11 +02:00
8f18ebf884
Update legal info. 2019-04-20 19:53:16 +02:00
c9203b6c91
New source code legal format. 2019-04-20 19:29:15 +02:00
929d7b83fe
Cleanup unused functions. 2019-04-17 18:40:14 +02:00
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.
2019-04-17 11:13:29 +02:00
395f6c446c
Get rid of known from PHP 'elseif' construction. 2019-04-17 07:55:32 +02:00
Piotr Likoski
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 .
2019-04-16 20:15:38 +02:00
07e3a09999
Enter and leave a loop frame on every iteration.
This fixes strict variable declaration inside loops.
2019-04-16 13:51:58 +02:00
ef4f994e8b
Do not allow 'break' statement to take a parameter. This is strange construction introduced in PHP. 2019-04-16 12:34:53 +02:00
5fddbf8737
Do not allow 'continue' statement to take a parameter. This is strange construction introduced in PHP. 2019-04-16 12:32:01 +02:00
89f19133d5
Rename VM's jump instructions for better readability. 2019-04-16 08:14:16 +02:00
eb80dced3e
Correct comment. 2019-04-15 20:00:54 +02:00
517dffcbc1
Separate VM instruction for variable declaration (OP_DECLARE). 2019-04-15 19:18:29 +02:00
c51b3dfa8a
Revert 89d5158d7e and a8a1a2cd51. Fix should be based on VM frames. 2019-04-13 14:39:57 +02:00
89d5158d7e
Fix build. 2019-04-11 13:31:17 +02:00
a8a1a2cd51
Fix variable declaration in loops. 2019-04-11 13:28:47 +02:00