1
0
mirror of https://github.com/danog/PHP-Parser.git synced 2024-12-12 09:29:47 +01:00
Commit Graph

48 Commits

Author SHA1 Message Date
nikic
08f0cde6f9 Add prettyPrintFile() method 2013-04-15 20:53:23 +02:00
nikic
81d20bf10e Pretty print namespaces in semicolon-style if possible 2013-01-15 18:21:42 +01:00
nikic
db18906dfc Rename PrettyPrinter_Zend to PrettyPrinter_Default 2013-01-15 17:43:36 +01:00
nikic
fc56da59ce Rename pSafe to pNoIndent
Matches the function more closely
2012-10-31 17:50:54 +01:00
nikic
df17d62b40 Fix switch formatting
The switch cases were not indented and fall-through cases had an
unnecessary additional newline.

Patch by @pscheit (PR #39).
2012-10-31 17:46:48 +01:00
nikic
ac6f221c50 Better prededence and associativity handling in pretty printer
Previously the pretty printer added unnecessary and odd-looking parentheses
when several operators with the same precedence were chained:

    'a' . 'b' . 'c' . 'd' . 'e'
    // was printed as
    'a' . ('b' . ('c' . ('d' . 'e')))

Another issue reported as part of #39 was that assignments inside closures
were wrapped in parentheses:

    function() {
        $a = $b;
    }
    // was printed as
    function() {
        ($a = $b);
    }

This was caused by the automatic precedence handling, which just regarded
the closure as an ordinal nested expression.

With the new system the $predenceMap of PrettyPrinterAbstract contains both
precedence and associativity and there is a new method pPrec() which prints
a node taking precedence and associativity into account.

For simpler usage there are additional function pInfixOp(), pPrefixOp() and
pPostfixOp().

Prints not going through pPrec() do not have any precedence handling (fixing
the closure issue).
2012-10-31 17:34:06 +01:00
nikic
af5d288fb3 Add support for expressions in empty (PHP 5.5)
Apart from the grammar modifications this also renames the Empty subnode
from var to expr. This breaks BC.
2012-09-07 23:42:01 +02:00
nikic
f6c1ab6657 Adjust list and yield parsing, update prettyprinter
* nested list()s will now create nested List nodes (instead of just
   nested arrays)
 * yield $k => $v was parsed with key and value swapped. This is now fixed
 * the pretty printer now works with the newly added language constructs
2012-09-07 23:41:59 +02:00
nikic
adfa67cdcf [5.4] Add direct dereferencing of new expression
(new A)->b(), (new A)->b, (new A)[0]. The feature is not implemented fully compliant (implemented as a `variable`, not `expr_without_variable`: Awaiting input on that on internals@.
2011-11-21 18:43:35 +01:00
nikic
6ecae86981 [5.4] Add support for traits 2011-10-30 12:03:29 +01:00
nikic
613aa84f80 [5.4] Add support for static closures
This adds another property to Expr_Closure named "static". It's true for static closures and false otherwise.
2011-10-29 00:16:29 +02:00
nikic
126efbc056 Make more things optional
Make $stmts and $subNodes optional in most places
2011-10-28 19:14:06 +02:00
nikic
f202aa9814 [API] Make all constructors specialized
For nodes that accept many optional arguments I chose to keep the $subNodes argument, but provide default values instead.
2011-10-28 19:06:24 +02:00
nikic
25f37ccc28 [API] Rename LambdaFunc to Closure
The term "closure" is more commonly used in PHP, even if the function doesn't use() any variables.
2011-10-26 18:34:12 +02:00
nikic
7806bf025e [5.4] Add support for ClassName::{expr} 2011-10-21 14:09:41 +02:00
nikic
08ea0e3d56 [5.4] Add callable typehint
Need to refactor how typehints are saved. Saving array and callable typehints as strings isn't clean
2011-10-21 11:30:27 +02:00
nikic
7078252444 Fix pretty printing of whole-numbered floats
This time properly. Only remaining problem is that floats like 1e1000 are printed as INF. This may or may not be acceptable. The value will be the same, but the tests will signal a diff failure.
2011-10-16 15:39:23 +02:00
nikic
b77d66e5bd Fix pretty print of ${$a}[0] 2011-10-16 15:25:40 +02:00
nikic
4ce618643f Fix escaping in pretty print of ShellExec 2011-10-16 15:19:50 +02:00
nikic
9ed77427a2 Rename Expr_List to Expr_AssignList 2011-10-16 14:49:13 +02:00
nikic
7f82d20cca Fix pretty printing of whole-numbered floats 2011-10-16 14:36:45 +02:00
nikic
f30320b9b2 Fix Stmt_List pretty printing for nested list()s 2011-10-16 14:11:23 +02:00
nikic
527265cdf7 Fix Stmt_DeclareDeclare pretty printing 2011-10-16 13:38:23 +02:00
nikic
df657b703e Rename caseList to cases in Node_Stmt_Switch 2011-10-15 19:30:48 +02:00
nikic
a7a7dfce18 Remove useless condition from Throw printer 2011-09-30 19:30:33 +02:00
nikic
d5f148b43f Merge Node_Name and Node_Name_Normal 2011-09-24 23:31:18 +02:00
nikic
df7cb44eed Use seperate Name node classes instead of type subnode 2011-09-24 16:53:40 +02:00
nikic
858545732c Add shared Node_Const
Node_Const is shared between Node_Stmt_ClassConst and Node_Stmt_Const. Maybe one could generalize it to a Node_NameToValue to share it with Node_Stmt_Declare too.
2011-09-23 21:00:59 +02:00
nikic
8bd8e815c9 Add missing doc and pretty print for Stmt_Declare 2011-09-23 18:53:11 +02:00
nikic
ee4e55dc75 Move Node_Expr_FuncCallArg to Node_Arg (just like Node_Param) 2011-09-22 20:34:35 +02:00
nikic
05c514f9c5 Instantiate a Node_Name for 'static', too. Fix some doc comments. 2011-08-19 17:44:42 +02:00
nikic
ca51472c2f Move Variable to Expr_Variable, move Stmt_FuncParam to Param (as it is used both in stmts and expr and both in funcs and methods) 2011-08-14 18:51:42 +02:00
nikic
bd602afc3a Add specialized constructor for lambdas, too 2011-08-14 18:26:06 +02:00
nikic
e0fe21287d Add specialized constructors for all expression nodes apart from lambda 2011-08-11 10:25:51 +02:00
nikic
f412b3915f Rename cast nodes and give them a common Expr_Cast parent (with specialized constructor) 2011-08-11 09:20:25 +02:00
nikic
22b507e9f4 Rename Bin[ary] to Bitwise (which is the correct name) 2011-08-11 08:42:28 +02:00
nikic
344913d44b Add specialized constructors for assignment operations 2011-08-11 08:35:10 +02:00
nikic
d9a23f2dc7 Add specialized constructors for Expr_Array*, make Variable an Expr 2011-08-11 08:13:01 +02:00
nikic
c06cbb53dc Make for-loop formatting nicer 2011-08-11 07:53:55 +02:00
nikic
ae46aeda7f Don't save whether a string is binary anymore. The binary flag isn't going to be used in the next couple of years, so it doesn't make sense to unnecessarily complicate things. 2011-08-09 14:19:44 +02:00
nikic
197b8e6967 Don't save quote type for strings anymore (as it is irrelevant for script execution) 2011-08-09 14:12:15 +02:00
nikic
ffecbf8ca5 Let the pretty printing methods for statements decide for themselves whether or not they add a semicolon. Only automatically add semicolons for expressions. 2011-08-04 18:44:21 +02:00
nikic
9c53838b1f Properly handle fully qualified and relative names 2011-08-04 13:53:23 +02:00
nikic
2703f42933 If the short alias syntax is used compute the alias instead of setting it to null 2011-08-04 12:58:12 +02:00
nikic
dd2404b57a Rename "ns" to "name" in Stmt_UseUse 2011-08-04 12:01:03 +02:00
nikic
fb45e8a30c Put statements belonging to a namespace statement into its stmt property, add some further checks against invalid namespace usage and fix the pretty printer to print global namespaces 2011-06-26 18:41:01 +02:00
nikic
363a0771da fix incorrect usages of old ParseErrorException 2011-06-06 18:59:14 +02:00
nikic
620525a5da Prefix all classes with PHPParser_ 2011-06-05 18:40:04 +02:00