Commit Graph

716 Commits

Author SHA1 Message Date
nikic
e16513a0eb Fix parsing of new expressions in parenthesis
The new dereferencing syntaxes (new Foo)->bar and (new Foo)['bar'] were
causing a shift/reduce conflict with the '(' expr ')' rule. When
(new Foo) was encountered (without dereference operators following) the
parser thus threw a parse error.

The fix simply adds a special '(' new_expr ')' rule to expr. This does not
remove the shift/reduce conflict itself, but makes it irrelevant.

This fixes issue #20.
2012-05-12 14:11:10 +02:00
nikic
25bbd69919 Improve some formatting 2012-05-12 00:09:53 +02:00
nikic
10fc22f518 Replace \N with .
Older PCRE versions (coming with PHP 5.2) don't support \N yet.
2012-05-11 20:38:05 +02:00
nikic
93392c82e0 Fix getAttribute signature in Node interface
This fixes a build failure on PHP 5.2.
2012-05-11 18:48:23 +02:00
nikic
dab2fd4b7a Fix comment reformatting on Linux
Remove the use of \R (with BSR_ANYCRLF) at two places, as it was causing
problems there.
2012-05-11 18:45:55 +02:00
nikic
cc4b8761e4 Update CHANGELOG 2012-05-11 17:58:59 +02:00
nikic
4f9dd7b1e2 Add more extensive Lexer component docs 2012-05-11 17:50:50 +02:00
nikic
107c7a262c Update docs 2012-05-11 16:44:13 +02:00
nikic
81e53ce0ff Insert comments when pretty printing
This changset also adds unit tests for Comments and adds a way to test the
pretty printer.
2012-05-11 16:18:14 +02:00
nikic
a824a2aba7 Fix $node->getDocComment()
getDocComment() now returns the last comment (given that it is a doc
comment). setDocComment() no longer exists, as it doesn't make sense
with the comment objects anymore. getAttribute() now returns by reference,
so it also works in reference contexts.
2012-05-06 18:24:26 +02:00
nikic
9d96dd1796 Adjust XML unserializer for new comments attribute 2012-05-06 18:12:02 +02:00
nikic
603582fe50 Add test coverage for two things 2012-05-06 17:58:31 +02:00
nikic
e587e3f4c6 Collect normal comments too, not only doc comments
Comments and doc comments are now saved in the 'comments' attribute, as an
array. The are instances of PHPParser_Comment[_Doc].
2012-05-06 17:49:04 +02:00
nikic
dd711f2a04 Generalize the attribute generation for nodes
Now two arrays are fetched from the lexer: $startAttributes and
$endAttributes. When constructing the attributes for a node, the
$startAttributes from the first token of the node and the $endAttributes
of the last token of the node are merged.

Now the end line is saved in the endLine attribute.
2012-05-05 17:34:27 +02:00
nikic
5438cc0d69 Add progress indicator for test_old.
I hate waiting for something without seeing at least *some* output.
2012-05-05 12:22:23 +02:00
nikic
101a6ddcfc Fix NameResolver to properly copy attributes 2012-05-04 10:18:50 +02:00
nikic
2f5ebf7c4d Store line and doc comment as attributes 2012-05-04 10:16:59 +02:00
nikic
c3cf3f29bd Adjust test_old to use new Lexer injection method 2012-05-04 10:16:52 +02:00
nikic
f66a672dd0 Start refactoring parser skeleton
The yacc parser skeleton with all those odd $yy short names is quite
non-obvious. This commits starts to refactor it a bit, to use more
obvious names and logic.
2012-05-04 10:16:49 +02:00
nikic
3701e02d32 Use inject-once approach for lexer
Now the lexer is injected only once when creating the parser. Instead of

    $parser = new PHPParser_Parser;
    $parser->parse(new PHPParser_Lexer($code));
    $parser->parse(new PHPParser_Lexer($code2));

you write:

    $parser = new PHPParser_Parser(new PHPParser_Lexer);
    $parser->parse($code);
    $parser->parse($code2);
2012-05-04 10:16:46 +02:00
nikic
271156f941 Fix typo 2012-05-04 10:16:44 +02:00
nikic
f33cd97a8d Merge pull request #22 from schmittjoh/resolveCatchType
fixes a bug where catch type was not resolved
2012-05-04 00:45:47 -07:00
nikic
3c2e68a354 Merge pull request #21 from ss23/patch-1
Update doc/1_Usage_of_basic_components.markdown
2012-05-04 00:44:47 -07:00
Johannes M. Schmitt
c2c7fdd13d fixes a bug were line number were lost 2012-05-03 23:58:47 -05:00
Johannes M. Schmitt
0dae07af6b fixes a bug where catch type was not resolved 2012-05-03 23:52:39 -05:00
Stephen Shkardoon
eb05d2b82d Update doc/1_Usage_of_basic_components.markdown 2012-05-04 15:33:48 +12:00
nikic
b1cc9ce676 Release version 0.9.1
This is in anticipation of doing some backwards compatability breaking
changes in the next version.
2012-04-24 00:52:11 +02:00
nikic
b42c9209c7 Fix PHP 5.2 build failure
lcfirst() isn't defined on PHP 5.2, so I added a fallback function, which
is defined in the bootstrap.php. Not sure whether that's the right place
to put it.
2012-04-23 22:17:06 +02:00
nikic
57249be44d Add changelog 2012-04-23 14:37:18 +02:00
nikic
db6b13378a Finish up code generation docs 2012-04-23 13:37:12 +02:00
nikic
9329c91591 Merge branch 'codeGeneration'
* codeGeneration:
  Add docs for templates
  Add a filesystem template loader.
  Add simple templating support.
  Add usage example for builders to docs
  Add function builder
  Add ability to specify arrays as default values
  Add property builder
  Add parameter builder
  Add method builder
  Add class builder
2012-04-23 13:32:16 +02:00
nikic
5b27fb40ce Fix line numbers for some list structures
When defining a list in the grammar the list elements have to get a separate
rule, otherwise they'll all be assigned the same line number.
2012-04-19 00:52:44 +02:00
nikic
e2a9745bf1 Make Serializer_XML::_serialize protected 2012-04-19 00:25:13 +02:00
nikic
a45360ccaf Add tests for node attributes
Also fix the @inheritDoc declarations and do some whitespace normalization
2012-04-19 00:22:31 +02:00
nikic
510599d8b8 Merge pull request #15 from sebastianbergmann/master
Typo fix
2012-04-04 08:51:43 -07:00
Sebastian Bergmann
b9e3565587 Fugbix typo. 2012-04-04 15:54:45 +02:00
nikic
d6d51ec3bf Add docs for node attributes 2012-04-04 14:10:21 +02:00
nikic
337da5648c Fix XML unserializer
The subNodes array was not initialized, so for empty nodes it would just
be null. Due to the addition of attributes for nodes those have to be
initialized too.
2012-04-04 14:06:08 +02:00
nikic
e17bd0b17f Remove duplicate bootstrap.php
The tests had a separate bootstrap.php, which basically replicated the main
bootstrap.php.
2012-04-04 13:50:21 +02:00
nikic
ce08ea46c2 Merge pull request #14 from schmittjoh/patch-1
Adds capabilities for storing additional information in nodes
2012-04-04 04:48:20 -07:00
nikic
cf78797333 Add docs for templates 2012-04-04 12:29:30 +02:00
nikic
a048112e2c Add a filesystem template loader.
The template loaders loads templates from a base directory (and can
optionally use a suffix). For example

    $templateLoader = new PHPParser_TemplateLoader(
        $parser, './templates', '.php'
    );

    // loads ./templates/TestTemplate.php
    $templateLoader->load('TestTemplate');

Again the implementation is not optimal. The loader probably shouldn't
intantiate the Template itself, but instead should accept a
TemplateFactory. This seemed like overkill to me, so I left it out.
2012-04-03 23:52:00 +02:00
nikic
19c1f80589 Add simple templating support.
Templates use __name__ placeholders. A variant of the placeholder with a
capitalized first latter can be accessed using __Name__ (this is useful
for camel case identifiers, e.g. get__Name__).

Currently the implemention is not particularly clean, because the Template
instantiates a Lexer itself. Fixing this requires a major refactoring of
the lexer/parser interface.
2012-04-03 22:47:41 +02:00
Johannes
2ccae143d0 added implementations for the new interface methods 2012-04-03 13:07:10 -05:00
Johannes
e932711fa4 added some methods for storing metadata to the interface 2012-04-03 13:04:24 -05:00
nikic
77d58a4151 Fix NameResolver tests on PHP 5.2 2012-03-17 13:52:17 +01:00
nikic
c24a697c2d Add Travis config file 2012-03-17 13:18:16 +01:00
nikic
72586235c4 Add usage example for builders to docs 2012-03-11 09:23:32 +01:00
nikic
b8b68a969c Add function builder 2012-03-11 09:02:52 +01:00
nikic
9e5c95b6aa Add ability to specify arrays as default values 2012-03-11 08:53:04 +01:00