{"id":21328285,"url":"https://github.com/alumik/parse-tree","last_synced_at":"2025-03-16T00:16:59.969Z","repository":{"id":116554519,"uuid":"535311308","full_name":"alumik/parse-tree","owner":"alumik","description":"A simple parse tree generator for any user-defined LR(1) programming language","archived":false,"fork":false,"pushed_at":"2023-08-02T10:26:32.000Z","size":77,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-22T12:48:24.916Z","etag":null,"topics":["compiler","parse-tree"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alumik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-11T13:45:12.000Z","updated_at":"2024-10-23T11:21:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"2a93903d-1ead-4c78-b33b-ebed34884e91","html_url":"https://github.com/alumik/parse-tree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alumik%2Fparse-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alumik%2Fparse-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alumik%2Fparse-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alumik%2Fparse-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alumik","download_url":"https://codeload.github.com/alumik/parse-tree/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243806092,"owners_count":20350775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","parse-tree"],"created_at":"2024-11-21T21:26:16.738Z","updated_at":"2025-03-16T00:16:59.948Z","avatar_url":"https://github.com/alumik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LR(1) Parse Tree Generator\n\n![version-0.2.2](https://img.shields.io/badge/version-0.2.2-blue)\n![Python-\u003e=3.11](https://img.shields.io/badge/Python-\u003e=3.11-blue)\n![license-MIT](https://img.shields.io/badge/license-MIT-green)\n\n## Demo\n\nModify the config file if necessary and then execute:\n\n```\npython demo.py --config=\u003cconfig\u003e --text=\u003ctext\u003e\n```\n\nThe image of the output parse tree will be saved in `out/parse-tree.svg`. (This behavior can be changed in `demo.py`.)\n\n## Examples\n\n### Lexical Analysis\n\n#### NFA to DFA\n\nTake the regular expression `(a|b)*abb` for example.\n\n1. Create an NFA from the regular expression:\n   \n    ```python\n    import ptree\n\n    from ptree.lexer.regex import Regex, RegexEngine\n\n    regex = Regex(name='(a|b)*abb', pattern='(a|b)*abb')\n    engine = RegexEngine()\n    nfa = engine.parse(regex)\n    ptree.render(nfa, directory='out', name='nfa', output_format='svg')\n    ```\n    \n    ![NFA](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-nfa-to-dfa-nfa.svg)\n    \n2. Convert the NFA to a DFA:\n\n    ```python\n    dfa = nfa.to_dfa()\n    ptree.render(dfa, directory='out', name='dfa', output_format='svg')\n    ```\n\n    ![DFA](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-nfa-to-dfa-dfa.svg)\n\n#### Merge multiple NFAs\n\nTake the regular expressions `a*b+`, `a`, `abb` for example.\n\n1. Create three NFAs from the regular expressions.\n\n    ```python\n    import ptree\n\n    from ptree.lexer.regex import Regex, RegexEngine\n\n    regexes = [\n        Regex(name='a*b+', pattern='a*b+'),\n        Regex(name='a', pattern='a'),\n        Regex(name='abb', pattern='abb')\n    ]\n    engine = RegexEngine()\n    nfas = [engine.parse(regex) for regex in regexes]\n    for i, nfa in enumerate(nfas):\n        ptree.render(nfa, directory='out', name=f'nfa-{i}', output_format='svg')\n    ```\n\n    ![NFA-1](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-merge-fsm-nfa0.svg)\n\n    ![NFA-2](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-merge-fsm-nfa1.svg)\n\n    ![NFA-3](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-merge-fsm-nfa2.svg)\n\n2. Merge the NFAs.\n\n    ```python\n    from ptree.lexer.nfa import NFA\n\n    nfa = NFA.union(nfas)\n    ptree.render(nfa, directory='out', name='nfa', output_format='svg')\n    ```\n   \n    ![NFA](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-merge-fsm-nfa.svg)\n\n3. Convert the NFA to DFA.\n\n    ```python\n    dfa = nfa.to_dfa()\n    ptree.render(dfa, directory='out', name='dfa', output_format='svg')\n    ```\n\n    ![DFA](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/test-merge-fsm-dfa.svg)\n\n#### Tokenize a string\n\n1. Create a lexer from the config file.\n\n    The config file used in this example is:\n\n    ```yaml\n    nonterminal_symbols:\n    terminal_symbols:\n        COMMENT: '(//[^\\n]*)|(/\\*([^\\*]|(\\*)*[^\\*/])*(\\*)*\\*/)'\n        KEYWORD: 'auto|short|int|long|float|double|char|struct|union|enum|typedef|const|unsigned|signed|extern|register|static|volatile|void|if|else|switch|case|for|do|while|goto|continue|break|default|sizeof|return|using|namespace'\n        IDENTIFIER: '[A-Za-z_][A-Za-z0-9_]*'\n        INTEGER: '[0-9]+'\n        FLOAT: '[0-9]+\\.[0-9]+'\n        COMPARISON: '==|\u003e|\u003c|\u003e=|\u003c=|!='\n        LSTREAM: '\u003c\u003c'\n        RSTREAM: '\u003e\u003e'\n        LP: '\\('\n        RP: '\\)'\n        LB: '{'\n        RB: '}'\n        COMMA: ','\n        SEMICOLON: ';'\n        LSB: '\\['\n        RSB: '\\]'\n        ASSIGN_OP: '='\n        ADD_OP: '\\+'\n        SUB_OP: '\\-'\n        MULT_OP: '\\*'\n        DIV_OP: '/'\n        MOD_OP: '%'\n        POWER_OP: '\\^'\n        AND_OP: '\u0026\u0026'\n        OR_OP: '\\|\\|'\n        NOT_OP: '!'\n        SPACE: '[ \\t\\n\\r]+'\n    ignored_symbols:\n        ? SPACE\n        ? COMMENT\n    start_symbol:\n    production_rules:\n    ```\n\n    ```python\n    import ptree\n\n    config = ptree.load_config('config.yaml')\n    grammar = ptree.Grammar(config)\n    lexer = ptree.Lexer(config, symbol_pool=grammar.symbol_pool)\n    ```\n   \n2. Tokenize the input string.\n\n    The input string is:\n\n    ```cpp\n    int main() {int a = a + 1; cout \u003c\u003c a \u003c\u003c endl; return 0;}\n    ```\n\n    ```python\n    tokens = lexer.tokenize('''int main() {int a = a + 1; cout \u003c\u003c a \u003c\u003c endl; return 0;}''')\n    ptree.pprint(tokens)\n    ```\n   \n    ```\n    +----+------------+--------+\n    |    | SYMBOL     | VALUE  |\n    +====+============+========+\n    | 1  | KEYWORD    | int    |\n    +----+------------+--------+\n    | 2  | IDENTIFIER | main   |\n    +----+------------+--------+\n    | 3  | LP         | (      |\n    +----+------------+--------+\n    | 4  | RP         | )      |\n    +----+------------+--------+\n    | 5  | LB         | {      |\n    +----+------------+--------+\n    | 6  | KEYWORD    | int    |\n    +----+------------+--------+\n    | 7  | IDENTIFIER | a      |\n    +----+------------+--------+\n    | 8  | ASSIGN_OP  | =      |\n    +----+------------+--------+\n    | 9  | IDENTIFIER | a      |\n    +----+------------+--------+\n    | 10 | ADD_OP     | +      |\n    +----+------------+--------+\n    | 11 | INTEGER    | 1      |\n    +----+------------+--------+\n    | 12 | SEMICOLON  | ;      |\n    +----+------------+--------+\n    | 13 | IDENTIFIER | cout   |\n    +----+------------+--------+\n    | 14 | LSTREAM    | \u003c\u003c     |\n    +----+------------+--------+\n    | 15 | IDENTIFIER | a      |\n    +----+------------+--------+\n    | 16 | LSTREAM    | \u003c\u003c     |\n    +----+------------+--------+\n    | 17 | IDENTIFIER | endl   |\n    +----+------------+--------+\n    | 18 | SEMICOLON  | ;      |\n    +----+------------+--------+\n    | 19 | KEYWORD    | return |\n    +----+------------+--------+\n    | 20 | INTEGER    | 0      |\n    +----+------------+--------+\n    | 21 | SEMICOLON  | ;      |\n    +----+------------+--------+\n    | 22 | RB         | }      |\n    +----+------------+--------+\n    ```\n\n### Parse Tree Generation\n\n#### Elementary arithmetic\n\n1. Write a config file (in YAML format).\n\n    ```yaml\n    nonterminal_symbols:\n        ? E\n        ? T\n        ? F\n    terminal_symbols:\n        '+': '\\+'\n        '-': '\\-'\n        '*': '\\*'\n        '/': '/'\n        '(': '\\('\n        ')': '\\)'\n        'num': '[0-9]+'\n    ignored_symbols:\n    start_symbol: E\n    production_rules:\n        - E -\u003e E + T\n        - E -\u003e E - T\n        - E -\u003e T\n        - T -\u003e T * F\n        - T -\u003e T / F\n        - T -\u003e F\n        - F -\u003e num\n        - F -\u003e ( E )\n    ```\n\n2. Generate the parse table.\n\n    ```python\n    import ptree\n\n    config = ptree.load_config('config.yaml')\n    grammar = ptree.Grammar(config)\n    grammar.init()\n    parser = ptree.Parser(grammar)\n    ptree.pprint(grammar.parse_table)\n    ```\n\n    ```\n    +----+----------------------------------------------+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    |    | ACTION                                       | GOTO         | STATE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    |    | +   | -   | *   | /   | (  | )   | num | $   | E  | T  | F  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 0  |     |     |     |     | s1 |     | s2  |     | 4  | 5  | 3  | {F -\u003e  . ( E ), *; F -\u003e  . num, *; T -\u003e  . F, $; E -\u003e  . E - T, -; _S -\u003e  . E, $; E -\u003e  . T, $; T -\u003e  . F, /; F -\u003e  . ( E ), $; T -\u003e  . T * F, $; T -\u003e  . T / F, $; E -\u003e  . E + T, -; F -\u003e  . num, $; T -\u003e  . T * F, /; E -\u003e  . E - T, $; T -\u003e  . F, +; E -\u003e  . E + T, $; F -\u003e  . ( E ), /; E -\u003e  . T, +; T -\u003e  . F, -; T -\u003e  . T * F, +; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; E -\u003e  . E - T, +; T -\u003e  . T * F, -; F -\u003e  . num, -; E -\u003e  . T, -; E -\u003e  . E + T, +; F -\u003e  . ( E ), -; T -\u003e  . T * F, *; T -\u003e  . T / F, *}                                                                       |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 1  |     |     |     |     | s6 |     | s7  |     | 8  | 10 | 9  | {F -\u003e  . ( E ), *; F -\u003e  . num, *; E -\u003e  . E - T, -; T -\u003e  . F, /; F -\u003e ( . E ), /; E -\u003e  . E + T, -; T -\u003e  . T / F, ); E -\u003e  . T, ); F -\u003e  . ( E ), ); F -\u003e ( . E ), +; T -\u003e  . T * F, ); T -\u003e  . T * F, /; F -\u003e  . num, ); T -\u003e  . T * F, *; T -\u003e  . F, +; F -\u003e  . ( E ), /; E -\u003e  . E - T, ); E -\u003e  . T, +; E -\u003e  . E + T, ); T -\u003e  . F, -; T -\u003e  . T * F, +; F -\u003e ( . E ), *; F -\u003e ( . E ), -; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; E -\u003e  . E - T, +; T -\u003e  . T * F, -; F -\u003e  . num, -; F -\u003e ( . E ), $; E -\u003e  . T, -; E -\u003e  . E + T, +; F -\u003e  . ( E ), -; T -\u003e  . F, ); T -\u003e  . T / F, *} |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 2  | r7  | r7  | r7  | r7  |    |     |     | r7  |    |    |    | {F -\u003e num . , -; F -\u003e num . , +; F -\u003e num . , /; F -\u003e num . , *; F -\u003e num . , $}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 3  | r6  | r6  | r6  | r6  |    |     |     | r6  |    |    |    | {T -\u003e F . , -; T -\u003e F . , +; T -\u003e F . , /; T -\u003e F . , *; T -\u003e F . , $}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 4  | s12 | s11 |     |     |    |     |     | acc |    |    |    | {E -\u003e E . - T, -; E -\u003e E . - T, $; E -\u003e E . + T, +; _S -\u003e E . , $; E -\u003e E . + T, -; E -\u003e E . + T, $; E -\u003e E . - T, +}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 5  | r3  | r3  | s14 | s13 |    |     |     | r3  |    |    |    | {T -\u003e T . / F, -; T -\u003e T . / F, +; E -\u003e T . , +; T -\u003e T . * F, /; T -\u003e T . * F, +; E -\u003e T . , -; E -\u003e T . , $; T -\u003e T . / F, /; T -\u003e T . / F, *; T -\u003e T . / F, $; T -\u003e T . * F, *; T -\u003e T . * F, $; T -\u003e T . * F, -}                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 6  |     |     |     |     | s6 |     | s7  |     | 15 | 10 | 9  | {F -\u003e ( . E ), ); F -\u003e  . ( E ), *; F -\u003e  . num, *; E -\u003e  . E - T, -; T -\u003e  . F, /; F -\u003e ( . E ), /; E -\u003e  . E + T, -; T -\u003e  . T / F, ); E -\u003e  . T, ); F -\u003e  . ( E ), ); F -\u003e ( . E ), +; T -\u003e  . T * F, ); T -\u003e  . T * F, /; F -\u003e  . num, ); T -\u003e  . T * F, *; T -\u003e  . F, +; F -\u003e  . ( E ), /; E -\u003e  . E - T, ); E -\u003e  . T, +; E -\u003e  . E + T, ); T -\u003e  . F, -; T -\u003e  . T * F, +; F -\u003e ( . E ), *; F -\u003e ( . E ), -; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; E -\u003e  . E - T, +; T -\u003e  . T * F, -; F -\u003e  . num, -; E -\u003e  . T, -; E -\u003e  . E + T, +; F -\u003e  . ( E ), -; T -\u003e  . F, ); T -\u003e  . T / F, *} |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 7  | r7  | r7  | r7  | r7  |    | r7  |     |     |    |    |    | {F -\u003e num . , ); F -\u003e num . , -; F -\u003e num . , +; F -\u003e num . , /; F -\u003e num . , *}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 8  | s16 | s18 |     |     |    | s17 |     |     |    |    |    | {E -\u003e E . + T, ); F -\u003e ( E . ), +; E -\u003e E . - T, ); F -\u003e ( E . ), -; E -\u003e E . - T, -; E -\u003e E . + T, +; F -\u003e ( E . ), *; F -\u003e ( E . ), $; F -\u003e ( E . ), /; E -\u003e E . + T, -; E -\u003e E . - T, +}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 9  | r6  | r6  | r6  | r6  |    | r6  |     |     |    |    |    | {T -\u003e F . , -; T -\u003e F . , +; T -\u003e F . , ); T -\u003e F . , /; T -\u003e F . , *}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 10 | r3  | r3  | s20 | s19 |    | r3  |     |     |    |    |    | {T -\u003e T . / F, -; T -\u003e T . / F, +; E -\u003e T . , +; T -\u003e T . * F, /; T -\u003e T . * F, +; T -\u003e T . * F, -; E -\u003e T . , -; T -\u003e T . / F, /; T -\u003e T . / F, *; T -\u003e T . * F, *; E -\u003e T . , ); T -\u003e T . * F, ); T -\u003e T . / F, )}                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 11 |     |     |     |     | s1 |     | s2  |     |    | 21 | 3  | {F -\u003e  . ( E ), *; F -\u003e  . num, *; T -\u003e  . F, $; E -\u003e E - . T, +; T -\u003e  . F, /; F -\u003e  . ( E ), $; T -\u003e  . T * F, $; T -\u003e  . T / F, $; F -\u003e  . num, $; T -\u003e  . T * F, /; E -\u003e E - . T, -; T -\u003e  . F, +; F -\u003e  . ( E ), /; T -\u003e  . F, -; T -\u003e  . T * F, +; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; E -\u003e E - . T, $; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; T -\u003e  . T * F, -; F -\u003e  . num, -; F -\u003e  . ( E ), -; T -\u003e  . T * F, *; T -\u003e  . T / F, *}                                                                                                                                                                                         |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 12 |     |     |     |     | s1 |     | s2  |     |    | 22 | 3  | {F -\u003e  . ( E ), *; F -\u003e  . num, *; T -\u003e  . F, $; T -\u003e  . F, /; F -\u003e  . ( E ), $; T -\u003e  . T * F, $; T -\u003e  . T / F, $; E -\u003e E + . T, +; F -\u003e  . num, $; T -\u003e  . T * F, /; T -\u003e  . F, +; F -\u003e  . ( E ), /; E -\u003e E + . T, -; T -\u003e  . F, -; T -\u003e  . T * F, +; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; T -\u003e  . T * F, -; F -\u003e  . num, -; E -\u003e E + . T, $; F -\u003e  . ( E ), -; T -\u003e  . T * F, *; T -\u003e  . T / F, *}                                                                                                                                                                                         |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 13 |     |     |     |     | s1 |     | s2  |     |    |    | 23 | {T -\u003e T / . F, +; F -\u003e  . ( E ), *; F -\u003e  . ( E ), /; T -\u003e T / . F, /; T -\u003e T / . F, *; F -\u003e  . num, *; F -\u003e  . num, /; F -\u003e  . num, $; T -\u003e T / . F, $; F -\u003e  . num, -; T -\u003e T / . F, -; F -\u003e  . num, +; F -\u003e  . ( E ), +; F -\u003e  . ( E ), -; F -\u003e  . ( E ), $}                                                                                                                                                                                                                                                                                                                                                                                                                 |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 14 |     |     |     |     | s1 |     | s2  |     |    |    | 24 | {F -\u003e  . ( E ), *; T -\u003e T * . F, /; T -\u003e T * . F, *; F -\u003e  . num, /; F -\u003e  . num, *; F -\u003e  . ( E ), /; T -\u003e T * . F, $; F -\u003e  . num, $; F -\u003e  . ( E ), $; F -\u003e  . num, -; T -\u003e T * . F, -; F -\u003e  . ( E ), +; F -\u003e  . ( E ), -; T -\u003e T * . F, +; F -\u003e  . num, +}                                                                                                                                                                                                                                                                                                                                                                                                                 |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 15 | s16 | s18 |     |     |    | s25 |     |     |    |    |    | {E -\u003e E . + T, ); F -\u003e ( E . ), +; E -\u003e E . - T, ); F -\u003e ( E . ), -; E -\u003e E . - T, -; E -\u003e E . + T, +; F -\u003e ( E . ), *; F -\u003e ( E . ), ); F -\u003e ( E . ), /; E -\u003e E . + T, -; E -\u003e E . - T, +}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 16 |     |     |     |     | s6 |     | s7  |     |    | 26 | 9  | {F -\u003e  . ( E ), *; F -\u003e  . num, *; T -\u003e  . F, /; E -\u003e E + . T, +; T -\u003e  . T / F, ); F -\u003e  . ( E ), ); T -\u003e  . T * F, ); T -\u003e  . T * F, /; F -\u003e  . num, ); T -\u003e  . T * F, *; T -\u003e  . F, +; F -\u003e  . ( E ), /; E -\u003e E + . T, -; F -\u003e  . ( E ), -; T -\u003e  . F, -; T -\u003e  . T * F, +; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; T -\u003e  . T * F, -; F -\u003e  . num, -; E -\u003e E + . T, ); T -\u003e  . F, ); T -\u003e  . T / F, *}                                                                                                                                                                                         |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 17 | r8  | r8  | r8  | r8  |    |     |     | r8  |    |    |    | {F -\u003e ( E ) . , $; F -\u003e ( E ) . , /; F -\u003e ( E ) . , +; F -\u003e ( E ) . , -; F -\u003e ( E ) . , *}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 18 |     |     |     |     | s6 |     | s7  |     |    | 27 | 9  | {F -\u003e  . ( E ), *; F -\u003e  . num, *; E -\u003e E - . T, +; T -\u003e  . F, /; T -\u003e  . T / F, ); F -\u003e  . ( E ), ); T -\u003e  . T * F, ); T -\u003e  . T * F, /; F -\u003e  . num, ); T -\u003e  . T * F, *; E -\u003e E - . T, -; T -\u003e  . F, +; F -\u003e  . ( E ), /; T -\u003e  . F, -; T -\u003e  . T * F, +; T -\u003e  . T / F, +; T -\u003e  . T / F, /; F -\u003e  . ( E ), +; F -\u003e  . num, +; T -\u003e  . T / F, -; F -\u003e  . num, /; T -\u003e  . F, *; T -\u003e  . T / F, *; T -\u003e  . T * F, -; F -\u003e  . num, -; F -\u003e  . ( E ), -; T -\u003e  . F, ); E -\u003e E - . T, )}                                                                                                                                                                                         |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 19 |     |     |     |     | s6 |     | s7  |     |    |    | 28 | {T -\u003e T / . F, +; F -\u003e  . ( E ), *; F -\u003e  . ( E ), /; T -\u003e T / . F, /; T -\u003e T / . F, *; F -\u003e  . num, *; F -\u003e  . num, /; F -\u003e  . ( E ), ); F -\u003e  . num, -; T -\u003e T / . F, -; F -\u003e  . num, ); T -\u003e T / . F, ); F -\u003e  . ( E ), +; F -\u003e  . ( E ), -; F -\u003e  . num, +}                                                                                                                                                                                                                                                                                                                                                                                                                 |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 20 |     |     |     |     | s6 |     | s7  |     |    |    | 29 | {F -\u003e  . ( E ), *; T -\u003e T * . F, /; T -\u003e T * . F, *; F -\u003e  . num, /; F -\u003e  . num, *; F -\u003e  . ( E ), /; F -\u003e  . ( E ), ); F -\u003e  . num, -; T -\u003e T * . F, ); F -\u003e  . num, ); T -\u003e T * . F, -; F -\u003e  . ( E ), +; F -\u003e  . ( E ), -; T -\u003e T * . F, +; F -\u003e  . num, +}                                                                                                                                                                                                                                                                                                                                                                                                                 |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 21 | r2  | r2  | s14 | s13 |    |     |     | r2  |    |    |    | {T -\u003e T . / F, -; T -\u003e T . / F, +; E -\u003e E - T . , +; T -\u003e T . * F, /; T -\u003e T . * F, +; T -\u003e T . / F, /; T -\u003e T . / F, *; E -\u003e E - T . , -; T -\u003e T . / F, $; T -\u003e T . * F, *; E -\u003e E - T . , $; T -\u003e T . * F, $; T -\u003e T . * F, -}                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 22 | r1  | r1  | s14 | s13 |    |     |     | r1  |    |    |    | {T -\u003e T . / F, -; E -\u003e E + T . , -; E -\u003e E + T . , $; T -\u003e T . / F, +; T -\u003e T . * F, /; T -\u003e T . * F, +; T -\u003e T . * F, -; T -\u003e T . / F, /; T -\u003e T . / F, *; T -\u003e T . / F, $; T -\u003e T . * F, *; T -\u003e T . * F, $; E -\u003e E + T . , +}                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 23 | r5  | r5  | r5  | r5  |    |     |     | r5  |    |    |    | {T -\u003e T / F . , $; T -\u003e T / F . , *; T -\u003e T / F . , -; T -\u003e T / F . , +; T -\u003e T / F . , /}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 24 | r4  | r4  | r4  | r4  |    |     |     | r4  |    |    |    | {T -\u003e T * F . , *; T -\u003e T * F . , $; T -\u003e T * F . , -; T -\u003e T * F . , /; T -\u003e T * F . , +}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 25 | r8  | r8  | r8  | r8  |    | r8  |     |     |    |    |    | {F -\u003e ( E ) . , /; F -\u003e ( E ) . , ); F -\u003e ( E ) . , +; F -\u003e ( E ) . , -; F -\u003e ( E ) . , *}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 26 | r1  | r1  | s20 | s19 |    | r1  |     |     |    |    |    | {T -\u003e T . / F, -; E -\u003e E + T . , -; T -\u003e T . / F, +; T -\u003e T . * F, /; T -\u003e T . * F, +; T -\u003e T . * F, -; E -\u003e E + T . , ); T -\u003e T . / F, /; T -\u003e T . / F, *; T -\u003e T . * F, *; E -\u003e E + T . , +; T -\u003e T . * F, ); T -\u003e T . / F, )}                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 27 | r2  | r2  | s20 | s19 |    | r2  |     |     |    |    |    | {T -\u003e T . / F, -; T -\u003e T . / F, +; E -\u003e E - T . , +; T -\u003e T . * F, /; T -\u003e T . * F, +; T -\u003e T . * F, -; T -\u003e T . / F, /; T -\u003e T . / F, *; E -\u003e E - T . , ); E -\u003e E - T . , -; T -\u003e T . * F, *; T -\u003e T . * F, ); T -\u003e T . / F, )}                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 28 | r5  | r5  | r5  | r5  |    | r5  |     |     |    |    |    | {T -\u003e T / F . , *; T -\u003e T / F . , ); T -\u003e T / F . , -; T -\u003e T / F . , +; T -\u003e T / F . , /}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    | 29 | r4  | r4  | r4  | r4  |    | r4  |     |     |    |    |    | {T -\u003e T * F . , *; T -\u003e T * F . , -; T -\u003e T * F . , ); T -\u003e T * F . , /; T -\u003e T * F . , +}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |\n    +----+-----+-----+-----+-----+----+-----+-----+-----+----+----+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n    ```\n\n3. Tokenize the input string.\n\n    The input string is `3*(6+(4/2)-5)+8`.\n\n    ```python\n    lexer = ptree.Lexer(config, symbol_pool=grammar.symbol_pool)\n    tokens = lexer.tokenize('3*(6+(4/2)-5)+8')\n    ptree.pprint(tokens)\n    ```\n   \n    ```\n    +----+--------+-------+\n    |    | SYMBOL | VALUE |\n    +====+========+=======+\n    | 1  | num    | 3     |\n    +----+--------+-------+\n    | 2  | *      | *     |\n    +----+--------+-------+\n    | 3  | (      | (     |\n    +----+--------+-------+\n    | 4  | num    | 6     |\n    +----+--------+-------+\n    | 5  | +      | +     |\n    +----+--------+-------+\n    | 6  | (      | (     |\n    +----+--------+-------+\n    | 7  | num    | 4     |\n    +----+--------+-------+\n    | 8  | /      | /     |\n    +----+--------+-------+\n    | 9  | num    | 2     |\n    +----+--------+-------+\n    | 10 | )      | )     |\n    +----+--------+-------+\n    | 11 | -      | -     |\n    +----+--------+-------+\n    | 12 | num    | 5     |\n    +----+--------+-------+\n    | 13 | )      | )     |\n    +----+--------+-------+\n    | 14 | +      | +     |\n    +----+--------+-------+\n    | 15 | num    | 8     |\n    +----+--------+-------+\n    ```\n\n4. Generate the parse tree.\n\n    ```python\n    parse_tree = parser.parse(tokens)\n    ptree.render(parse_tree, directory='out', name='parse-tree', output_format='svg')\n    ```\n\n    ![Parse Tree](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/parse-tree-1.svg)\n\n\n#### Another example\n\n1. Get the predefined grammar.\n\n    ```\n    1. S'-\u003eS\n    2. S-\u003eCβBA\n    3. A-\u003eAαβ\n    4. A-\u003eαβ\n    5. B-\u003eC\n    6. B-\u003eDβ\n    7. C-\u003eα\n    8. D-\u003eα\n    ```\n\n2. Write a config file (in YAML format).\n\n    ```yaml\n    nonterminal_symbols:\n        # ? name\n        ? A\n        ? B\n        ? C\n        ? D\n        ? S\n    terminal_symbols:\n        # name: regex\n        α: a\n        β: b\n    ignored_symbols:\n    start_symbol: S\n    production_rules:\n        # - left part -\u003e right part\n        - S -\u003e C β B A\n        - A -\u003e A α β\n        - A -\u003e α β\n        - B -\u003e C\n        - B -\u003e D β\n        - C -\u003e α\n        - D -\u003e α\n    ```\n\n3. Generate the parse table.\n\n    ```python\n    import ptree\n\n    config = ptree.load_config('config.yaml')\n    grammar = ptree.Grammar(config)\n    grammar.init()\n    parser = ptree.Parser(grammar)\n    ptree.pprint(grammar.parse_table)\n    ```\n   \n    ```\n    +----+-----------------+-------------------+-----------------------------------------------------------------------------------------+\n    |    | ACTION          | GOTO              | STATE                                                                                   |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    |    | α   | β   | $   | A | B | C | D | S |                                                                                         |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 0  | s1  |     |     |   |   | 3 |   | 2 | {C -\u003e  . α, β; _S -\u003e  . S, $; S -\u003e  . C β B A, $}                                       |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 1  |     | r6  |     |   |   |   |   |   | {C -\u003e α . , β}                                                                          |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 2  |     |     | acc |   |   |   |   |   | {_S -\u003e S . , $}                                                                         |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 3  |     | s4  |     |   |   |   |   |   | {S -\u003e C . β B A, $}                                                                     |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 4  | s5  |     |     |   | 6 | 8 | 7 |   | {C -\u003e  . α, α; S -\u003e C β . B A, $; D -\u003e  . α, β; B -\u003e  . D β, α; B -\u003e  . C, α}           |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 5  | r6  | r7  |     |   |   |   |   |   | {C -\u003e α . , α; D -\u003e α . , β}                                                            |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 6  | s10 |     |     | 9 |   |   |   |   | {A -\u003e  . A α β, $; A -\u003e  . A α β, α; A -\u003e  . α β, $; S -\u003e C β B . A, $; A -\u003e  . α β, α} |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 7  |     | s11 |     |   |   |   |   |   | {B -\u003e D . β, α}                                                                         |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 8  | r4  |     |     |   |   |   |   |   | {B -\u003e C . , α}                                                                          |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 9  | s12 |     | r1  |   |   |   |   |   | {A -\u003e A . α β, $; A -\u003e A . α β, α; S -\u003e C β B A . , $}                                  |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 10 |     | s13 |     |   |   |   |   |   | {A -\u003e α . β, $; A -\u003e α . β, α}                                                          |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 11 | r5  |     |     |   |   |   |   |   | {B -\u003e D β . , α}                                                                        |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 12 |     | s14 |     |   |   |   |   |   | {A -\u003e A α . β, $; A -\u003e A α . β, α}                                                      |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 13 | r3  |     | r3  |   |   |   |   |   | {A -\u003e α β . , $; A -\u003e α β . , α}                                                        |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    | 14 | r2  |     | r2  |   |   |   |   |   | {A -\u003e A α β . , $; A -\u003e A α β . , α}                                                    |\n    +----+-----+-----+-----+---+---+---+---+---+-----------------------------------------------------------------------------------------+\n    ```\n\n4. Tokenize the input string.\n\n    The input string is `abababab`.\n\n    ```python\n    lexer = ptree.Lexer(config, symbol_pool=grammar.symbol_pool)\n    tokens = lexer.tokenize('abababab')\n    ptree.pprint(tokens)\n    ```\n   \n    ![DFA](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/lexer-dfa.svg)\n   \n    ```\n    +---+--------+-------+\n    |   | SYMBOL | VALUE |\n    +===+========+=======+\n    | 1 | α      | a     |\n    +---+--------+-------+\n    | 2 | β      | b     |\n    +---+--------+-------+\n    | 3 | α      | a     |\n    +---+--------+-------+\n    | 4 | β      | b     |\n    +---+--------+-------+\n    | 5 | α      | a     |\n    +---+--------+-------+\n    | 6 | β      | b     |\n    +---+--------+-------+\n    | 7 | α      | a     |\n    +---+--------+-------+\n    | 8 | β      | b     |\n    +---+--------+-------+\n    ```\n\n5. Generate the parse tree.\n\n    ```python\n    parse_tree = parser.parse(tokens)\n    ptree.render(parse_tree, directory='out', name='parse-tree', output_format='svg')\n    ```\n\n    ![Parse Tree](https://raw.githubusercontent.com/AlumiK/images/main/parse-tree/parse-tree-2.svg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falumik%2Fparse-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falumik%2Fparse-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falumik%2Fparse-tree/lists"}