{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Compilers" ], "description": "# What is this?\n\nFor now there are three major components. Eventually there will be more. These are:\n\n* MiniParse -- Provides Minimal-LR(1)* or LALR(1) or Canonical-LR(1) with operator-precedence grammar facilities (like Lemon, YACC, or Bison).\n* MiniScan -- Provides a DFA-based backtracking scanner (like Flex or Lex) with a few extra goodies.\n* MacroParse -- This is the crown jewel of the package right now. It:\n * provides for a separate document containing the definitions of a scanner and parser.\n * uses markdown format to make [just such a document](https://github.com/kjosib/booze-tools/tree/master/example/json.md) into a [literate program](http://www.literateprogramming.com/). \n * enables a single such definition to be used for different applications on different host languages.\n * supports a macro language for simplifying otherwise-redundant parser specifications.\n * provides a suitable runtime library so the [examples](https://github.com/kjosib/booze-tools/tree/master/example/)\n run and pass the [tests](https://github.com/kjosib/booze-tools/tree/master/tests/).\n * can prepare parse and scan tables ahead of time (serialized to JSON) or just-in-time according to your needs.\n * can generate [DOT graphs](https://github.com/kjosib/booze-tools/blob/master/example/json.png) from grammars.\n\nThe \"minimal-LR(1)\" algorithm used here is -- I believe -- provably minimal, even while it\nrespects precedence and associativity declarations in the usual way. It is strongly inspired\nby the IELR(1) algorithm, but it is NOT exactly that algorithm. As far as I can tell it is a\nnew contribution. As such, I would appreciate feedback respecting your results with it.\n\nFull documentation is at [the wiki page](https://github.com/kjosib/booze-tools/wiki).\nWorked examples may be found at [/example/](https://github.com/kjosib/booze-tools/tree/master/example/).\n\n# Priorities?\n* These operate within a Python environment.\n* They have some features not found in other such tools.\n* The code is deliberately kept simple, small and well-factored:\n * Easy to extend, approachable, and informative. \n * Aiming for suitability in an instructional context.\n* These modules do not generate free-standing code:\n * Mini-Foo plugs directly into a Python application and works right away, which is nice for rapid prototyping.\n * MacroParse compiles automatons to JSON, and appropriate run-time support is in the library.\n * Code generation for other languages is foreseeable: translate the JSON and supply a suitable runtime.\n* Performance is accordingly NOT a top priority, but:\n * the profiler has been used to solve one or two problems,\n * if someone wants to play with the profiler they are welcome, and\n * contributions in that vein will be accepted as long as they are consistent with the higher priorities.\n\n# What Else?\nThere are several complete worked example scanners and parsers in the `example` folder. Start with the JSON ones: they have the best introductory commentary to walk you through getting started.\n\nThere are unit tests. They're not vast and imposing, but they exercise the interface both directly and via the example code.\n\nThere is a wiki linked above. It has background and more detail about what this is and how to use it.\n\n# Oh by the way..\nI'm NOT a [crack-pot](https://github.com/kjosib/booze-tools/blob/master/docs/P%20vs%20NP.md). Really I'm not.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kjosib/booze-tools", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "booze-tools", "package_url": "https://pypi.org/project/booze-tools/", "platform": "", "project_url": "https://pypi.org/project/booze-tools/", "project_urls": { "Homepage": "https://github.com/kjosib/booze-tools" }, "release_url": "https://pypi.org/project/booze-tools/0.3.1.post0/", "requires_dist": null, "requires_python": "", "summary": "A panoply of tools for parsing and lexical analysis", "version": "0.3.1.post0" }, "last_serial": 5603927, "releases": { "0.3.1.post0": [ { "comment_text": "", "digests": { "md5": "3af3c6c36e3cf4a7655a3298b82d3dd3", "sha256": "fe7f3344ca5b3ebad1986192b61ecfe645d00145544a7e6c8402f3daa83e54c4" }, "downloads": -1, "filename": "booze-tools-0.3.1.post0.tar.gz", "has_sig": false, "md5_digest": "3af3c6c36e3cf4a7655a3298b82d3dd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65478, "upload_time": "2019-07-30T04:53:34", "url": "https://files.pythonhosted.org/packages/ef/2e/322e34cf259a7b9f1213168e9a104c8ddb57588bc5e7bb786d972eeaebe2/booze-tools-0.3.1.post0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3af3c6c36e3cf4a7655a3298b82d3dd3", "sha256": "fe7f3344ca5b3ebad1986192b61ecfe645d00145544a7e6c8402f3daa83e54c4" }, "downloads": -1, "filename": "booze-tools-0.3.1.post0.tar.gz", "has_sig": false, "md5_digest": "3af3c6c36e3cf4a7655a3298b82d3dd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65478, "upload_time": "2019-07-30T04:53:34", "url": "https://files.pythonhosted.org/packages/ef/2e/322e34cf259a7b9f1213168e9a104c8ddb57588bc5e7bb786d972eeaebe2/booze-tools-0.3.1.post0.tar.gz" } ] }