Commit Graph
161 Commits
Author SHA1 Message Date
belliash 8b2086402e Fix all compiler warnings in AerScript compiler.
The build was successful.
2019-06-22 11:59:43 +02:00
belliash e40dc34026 Pass proper line number from compiler to the virtual machine.
The build was successful.
2019-06-20 12:07:47 +02:00
belliash bd24aa0605 Correct more compiler warnings.
The build was successful.
2019-06-19 09:31:40 +02:00
belliash bffd44a7b4 Get rid of some annoying compiler warnings.
The build was successful.
2019-06-17 09:51:37 +02:00
belliash c7b6e76d0d Get rid of unused variables/labels/etc.
The build was successful.
2019-06-16 00:33:03 +02:00
belliash 6c277c1eca Allow implicitly-typed variable declarations inside 'for' and 'foreach' loops.
The build was successful.
2019-06-08 13:35:16 +02:00
belliash 0327c3130f Do not allow to initialize an implicitly-typed variable with an array initializer.
The build was successful.
2019-06-08 13:09:35 +02:00
belliash 78c416c6b8 Implement the implicit 'auto' type.
The build was successful.
An implicitly typed local variable is strongly typed just as if it had been declared the type, but the compiler determines the type. The following two declarations of $i are functionally equivalent:
int $i = 10; // Explicitly typed.
auto $i = 10; // Implicitly typed.
2019-06-08 12:55:57 +02:00
belliash a00d30afa2 Set NULL data type instead of throwing an error.
The build was successful.
2019-06-08 09:14:16 +02:00
belliash 65aaf7be67 Correct error message.
The build was successful.
2019-06-07 19:32:28 +02:00
belliash 343c25ca77 Fix for the segmentation fault.
The build was successful.
2019-06-07 16:18:16 +02:00
belliash 46458d1e1b Prefix variable name by dollar '$' sign.
The build was successful.
2019-06-07 16:16:56 +02:00
belliash a5af1d473f Compile the typedef for OP_IS instruction.
The build was successful.
2019-06-07 09:37:40 +02:00
belliash 045ebe92ae At least compile the 'finally' block for now.
The build was successful.
2019-06-04 07:11:55 +02:00
belliash d0840d7eea Cleanup after switching from 'parent' constant to '$parent' variable.
The build was successful.
2019-06-03 12:31:28 +02:00
belliash 625a386b69 Get rid of 'self' statement.
The build was successful.
2019-06-03 12:29:21 +02:00
belliash cd9ff68ae9 Completely disallow static methods in interfaces.
The build was successful.
2019-05-30 20:46:34 +02:00
belliash 984429bc55 Disallow static method declarations in interface.
The build was successful.
2019-05-30 20:34:24 +02:00
belliash 53199cac4e Another fixes to OOP-related error reporting.
The build was successful.
2019-05-30 20:18:20 +02:00
belliash ba1c840009 Allow a 'final virtual' classes to be declared.
The build was successful.
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
belliash 3cca5faa76 Store variable type in dedicated field.
The build was successful.
2019-05-21 14:49:36 +02:00
belliash 55acf8111f Assume private visibility for all class members by default.
The build was successful.
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
belliash e8c675bd8e Store a pointer to class container to reduce memory usage.
The build was successful.
2019-05-16 15:41:37 +02:00
belliash 7203492763 Store a class name in each attribute.
The build was successful.
2019-05-16 13:25:06 +02:00
belliash a2fb0b9ae5 Get rid of 'parent' constant. Use variable instead.
The build was successful.
2019-05-08 08:38:40 +02:00
belliash d3ae1c1bf4 Only identifiers should be allowed as constant name.
The build was successful.
2019-05-06 18:38:56 +02:00
belliash 0a6b5a6f42 The 'self' and 'parent' keywords should be resolved at compile time.
The build was successful.
2019-05-06 11:38:32 +02:00
belliash c4b63a3018 Rename OP_LOAD instruction to OP_LOADV.
The build was successful.
2019-05-05 09:33:06 +02:00
belliash 23900f2aed Remove unused compiler function - PH7_CompileLangConstruct().
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
belliash b36510943d Implement 'define' statement for defining constants globally.
The build was successful.
2019-05-04 17:08:09 +02:00
belliash ab8bf48485 Make constant declarations local.
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
belliash e6b7f1be2c Always emit OP_JMPLFE as goto can be used inside a loop and frame has to be left.
The build was successful.
2019-05-03 10:55:57 +02:00
belliash 03fc167be1 Proper implementation of so hated 'goto' statement.
The build was successful.
2019-05-03 10:35:54 +02:00
belliash 2f3ce65289 Correct comment to if/else statements.
The build was successful.
2019-05-02 19:03:47 +02:00
belliash 5a0e4667fa More readable error message.
The build was successful.
2019-05-01 20:09:55 +02:00
belliash 7c37451520 Namespaces are not supported and broken, but compile them properly.
The build was successful.
2019-05-01 13:49:07 +02:00
belliash 1829eff323 Fix interface and class compilation.
The build was successful.
2019-05-01 13:37:14 +02:00
belliash 1d6822c1e2 Allow key and value declaration inside foreach() loop.
The build was successful.
2019-05-01 11:38:28 +02:00
belliash 5c1e0f0cce Simplify the foreach() loop implementation.
The build was successful.
2019-04-30 23:59:02 +02:00
belliash 4d8d92092e Refactor foreach() loop.
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
belliash d72774f0f4 Namespaces in AerScript do not support aliases.
The build was successful.
2019-04-25 23:31:48 +02:00
belliash 407fb09e8f Throw an error only if this is not the end of tokens stream.
The build was successful.
2019-04-25 19:24:53 +02:00
belliash cb455c3c73 Unify compiler OOM error messages.
The build was successful.
2019-04-24 23:52:48 +02:00
belliash 1c5982e764 There is no reason to use a loop here.
The build was successful.
2019-04-24 23:45:46 +02:00
belliash 3be46532dd Remove unused PH7_ErrorRecover() function.
The build was successful.
2019-04-24 23:38:45 +02:00
belliash c443a38fec Do not count compilation errors.
The build was successful.
Interpreter will abort script execution on first error found.
2019-04-24 23:22:06 +02:00
belliash 48a38dc1af PH7_GenCompileError() always breaks script execution on E_ERROR.
The build was successful.
Thus code placed below will never get executed and is completely useless.
2019-04-24 23:12:59 +02:00
belliash 555234e381 Get rid of variable variables. AerScript does not support it.
The build was successful.
2019-04-22 12:01:11 +02:00
belliash 8f18ebf884 Update legal info.
The build was successful.
2019-04-20 19:53:16 +02:00
belliash c9203b6c91 New source code legal format.
The build was successful.
2019-04-20 19:29:15 +02:00