{ "info": { "author": "jan grant", "author_email": "jang@ioctl.org", "bugtrack_url": null, "classifiers": [], "description": "Yet Another LR Implementation\n=============================\n\nThis is another implementation of the classic LR(1) parsing\nalgorithm, along with Knuth's LR(1) table generation algorithm.\n\nRather than follow the model of tools like yacc and require\nexternal code generation, this library is driven dynamically\nfrom Python code.\n\nAn obvious question is, \"why?\"\n\nTwo reasons:\n\n- firstly, to experiment with surface syntax for expressing\n grammars in Python code in as uninvasive a way as possible.\n\n The package \"ptk\" takes a similar approach here.\n\n- secondly, to provide a playground to look at other\n \"cutting-edge\" parsing algorithms, as a basis for improving\n my own understanding of them.\n\nBy \"cutting-edge\" I'm largely referring to the late 1970s.\n\nThe current implementation is largely inspired by yacc,\nincluding yacc's various deficiencies:\n\n- there's a linearisation used for reduce/reduce conflict\n resolution;\n\n- there's a linearisation used for token precedence.\n\nIn practice, it's easy to get bitten by both of these - as\nit is for the default shift/reduce resolution to mask\nerrors. A more flexible partial ordering is certainly feasible.\n\nCredits\n=======\n\nSome of the example grammars included in the tests are derived\nfrom the (Red) Dragon Book, which I've had since I was about 16;\nit's a book which definitely shaped my life.\n\nI've no idea how the reference numbers line up with later\nadditions.\n\n Compilers: Principles, Techniques, and Tools (1986)\n by Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman\n\n", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jan-grant/python-yalr", "keywords": null, "license": "Copyright 2016 Jan Grant (jang@ioctl.org)", "maintainer": null, "maintainer_email": null, "name": "yalr", "package_url": "https://pypi.org/project/yalr/", "platform": null, "project_url": "https://pypi.org/project/yalr/", "project_urls": { "Homepage": "https://github.com/jan-grant/python-yalr" }, "release_url": "https://pypi.org/project/yalr/0.0.5/", "requires_dist": null, "requires_python": null, "summary": "Yet Another LR(1) implementation", "version": "0.0.5" }, "last_serial": 1927967, "releases": { "0.0.5": [ { "comment_text": "", "digests": { "md5": "bf4061825dc24d8964620d1ba0611e9d", "sha256": "49d6b4f4f1f0da2e21b59955f9fa1e3968f8dee8a1f8c0d8a55df088cf90ccec" }, "downloads": -1, "filename": "yalr-0.0.5.tar.gz", "has_sig": false, "md5_digest": "bf4061825dc24d8964620d1ba0611e9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9625, "upload_time": "2016-01-24T21:22:49", "url": "https://files.pythonhosted.org/packages/1d/eb/365779a3e64904e15c3e3c088cd6198862d9430201fd884877b5455069dd/yalr-0.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bf4061825dc24d8964620d1ba0611e9d", "sha256": "49d6b4f4f1f0da2e21b59955f9fa1e3968f8dee8a1f8c0d8a55df088cf90ccec" }, "downloads": -1, "filename": "yalr-0.0.5.tar.gz", "has_sig": false, "md5_digest": "bf4061825dc24d8964620d1ba0611e9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9625, "upload_time": "2016-01-24T21:22:49", "url": "https://files.pythonhosted.org/packages/1d/eb/365779a3e64904e15c3e3c088cd6198862d9430201fd884877b5455069dd/yalr-0.0.5.tar.gz" } ] }