You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.8 KiB

3 years ago
  1. # Tokenizer
  2. A small library for converting tokenized PHP source code into XML.
  3. [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/theseer/tokenizer/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/theseer/tokenizer/?branch=master)
  4. [![Code Coverage](https://scrutinizer-ci.com/g/theseer/tokenizer/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/theseer/tokenizer/?branch=master)
  5. [![Build Status](https://scrutinizer-ci.com/g/theseer/tokenizer/badges/build.png?b=master)](https://scrutinizer-ci.com/g/theseer/tokenizer/build-status/master)
  6. ## Installation
  7. You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
  8. composer require theseer/tokenizer
  9. If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
  10. composer require --dev theseer/tokenizer
  11. ## Usage examples
  12. ```php
  13. $tokenizer = new TheSeer\Tokenizer\Tokenizer();
  14. $tokens = $tokenizer->parse(file_get_contents(__DIR__ . '/src/XMLSerializer.php'));
  15. $serializer = new TheSeer\Tokenizer\XMLSerializer();
  16. $xml = $serializer->toXML($tokens);
  17. echo $xml;
  18. ```
  19. The generated XML structure looks something like this:
  20. ```xml
  21. <?xml version="1.0"?>
  22. <source xmlns="https://github.com/theseer/tokenizer">
  23. <line no="1">
  24. <token name="T_OPEN_TAG">&lt;?php </token>
  25. <token name="T_DECLARE">declare</token>
  26. <token name="T_OPEN_BRACKET">(</token>
  27. <token name="T_STRING">strict_types</token>
  28. <token name="T_WHITESPACE"> </token>
  29. <token name="T_EQUAL">=</token>
  30. <token name="T_WHITESPACE"> </token>
  31. <token name="T_LNUMBER">1</token>
  32. <token name="T_CLOSE_BRACKET">)</token>
  33. <token name="T_SEMICOLON">;</token>
  34. </line>
  35. </source>
  36. ```