Chris@14
|
1 # Tokenizer
|
Chris@14
|
2
|
Chris@14
|
3 A small library for converting tokenized PHP source code into XML.
|
Chris@14
|
4
|
Chris@14
|
5 [](https://scrutinizer-ci.com/g/theseer/tokenizer/?branch=master)
|
Chris@14
|
6 [](https://scrutinizer-ci.com/g/theseer/tokenizer/?branch=master)
|
Chris@14
|
7 [](https://scrutinizer-ci.com/g/theseer/tokenizer/build-status/master)
|
Chris@14
|
8
|
Chris@14
|
9 ## Installation
|
Chris@14
|
10
|
Chris@14
|
11 You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
|
Chris@14
|
12
|
Chris@14
|
13 composer require theseer/tokenizer
|
Chris@14
|
14
|
Chris@14
|
15 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:
|
Chris@14
|
16
|
Chris@14
|
17 composer require --dev theseer/tokenizer
|
Chris@14
|
18
|
Chris@14
|
19 ## Usage examples
|
Chris@14
|
20
|
Chris@14
|
21 ```php
|
Chris@14
|
22 $tokenizer = new TheSeer\Tokenizer\Tokenizer();
|
Chris@14
|
23 $tokens = $tokenizer->parse(file_get_contents(__DIR__ . '/src/XMLSerializer.php'));
|
Chris@14
|
24
|
Chris@14
|
25 $serializer = new TheSeer\Tokenizer\XMLSerializer();
|
Chris@14
|
26 $xml = $serializer->toXML($tokens);
|
Chris@14
|
27
|
Chris@14
|
28 echo $xml;
|
Chris@14
|
29 ```
|
Chris@14
|
30
|
Chris@14
|
31 The generated XML structure looks something like this:
|
Chris@14
|
32
|
Chris@14
|
33 ```xml
|
Chris@14
|
34 <?xml version="1.0"?>
|
Chris@14
|
35 <source xmlns="https://github.com/theseer/tokenizer">
|
Chris@14
|
36 <line no="1">
|
Chris@14
|
37 <token name="T_OPEN_TAG"><?php </token>
|
Chris@14
|
38 <token name="T_DECLARE">declare</token>
|
Chris@14
|
39 <token name="T_OPEN_BRACKET">(</token>
|
Chris@14
|
40 <token name="T_STRING">strict_types</token>
|
Chris@14
|
41 <token name="T_WHITESPACE"> </token>
|
Chris@14
|
42 <token name="T_EQUAL">=</token>
|
Chris@14
|
43 <token name="T_WHITESPACE"> </token>
|
Chris@14
|
44 <token name="T_LNUMBER">1</token>
|
Chris@14
|
45 <token name="T_CLOSE_BRACKET">)</token>
|
Chris@14
|
46 <token name="T_SEMICOLON">;</token>
|
Chris@14
|
47 </line>
|
Chris@14
|
48 </source>
|
Chris@14
|
49 ```
|