{ "info": { "author": "Lena", "author_email": "typicaltuedsay@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# LnaC\r\n\r\n### A toy functional language compiler written in Python.\r\n\r\n---\r\n\r\nLnaC is a toy functional language compiler written in Python 3 that supports limited program generation.\r\n\r\nFor some sample programs, see the [demos directory](demos).\r\n\r\n## Quickstart\r\n\r\nTo install LnaC:\r\n```\r\npip3 install lnac\r\n```\r\n\r\nTo create, compile, and run an example program:\r\n```c\r\n$ nano return0.lna\r\n$ less return0.lna\r\n\r\nmain : int\r\nmain =\r\n => 0\r\n\r\n$ lnac return0.lna\r\n$ ./return0 && $?\r\nTrue\r\n```\r\n\r\n## Implementation\r\n\r\n### Lexer\r\nThe LnaC lexer is primarily implemented in [`lexer.py`](lnac/lexer.py). Additionally, [`tokens.py`](lnac/tokens.py) contains definitions of the token classes used in the lexer and instances of recognized keyword and symbol tokens.\r\n\r\n### Parser\r\nThe LnaC parser is implemented in [`parser/parser.py`](lnac/parser/) and creates an abstract syntax tree of nodes defined in [`tree/nodes.py`](lnac/tree/nodes.py).\r\n\r\n### Assembly\r\nLnaC writes out an intermediary assembly file that gcc then generates an executable from. This assembly file is written following the AT&T assembly syntax and is deleted following a successful compilation.\r\n\r\n## References\r\n- Writing a C Compiler - https://norasandler.com/2017/11/29/Write-a-Compiler.html\r\n- ShivyC - https://github.com/ShivamSarodia/ShivyC", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/typicaltuesday/lna", "keywords": "lnac lna compiler functional programming parsing lexing", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "lnac", "package_url": "https://pypi.org/project/lnac/", "platform": "", "project_url": "https://pypi.org/project/lnac/", "project_urls": { "Homepage": "https://github.com/typicaltuesday/lna" }, "release_url": "https://pypi.org/project/lnac/0.0.9/", "requires_dist": null, "requires_python": "", "summary": "A toy functional language compiler written in Python", "version": "0.0.9" }, "last_serial": 4065248, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "d5e469d03103a68f31cf0632114b3046", "sha256": "d82ce67e14d38ffd024eab61e50887037efd2367fac6f4a0d965734c07300607" }, "downloads": -1, "filename": "lnac-0.0.1.tar.gz", "has_sig": false, "md5_digest": "d5e469d03103a68f31cf0632114b3046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3508, "upload_time": "2018-07-08T20:49:47", "url": "https://files.pythonhosted.org/packages/c2/a7/2b41dc0f4830879786107caeff44d3707b09265e2341591daf69cfecebb8/lnac-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "6546f30a91f4a7ad4330dcc4fc00eba9", "sha256": "cc6f61dd42993f2fa84aae832ec99da6323437740e79ab1ad6a142cff428598c" }, "downloads": -1, "filename": "lnac-0.0.2.tar.gz", "has_sig": false, "md5_digest": "6546f30a91f4a7ad4330dcc4fc00eba9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3520, "upload_time": "2018-07-08T21:06:14", "url": "https://files.pythonhosted.org/packages/e7/a8/628bd0de4ce89901af4935b90d8d186b565f999534bc355f5093772bd95b/lnac-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "3973c2d86aa3b7ba9c701b7858d58446", "sha256": "65c9012fe8859df11bbc5aa8e3e69e68c80195b06b997fa3781948e26d4d9b80" }, "downloads": -1, "filename": "lnac-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3973c2d86aa3b7ba9c701b7858d58446", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3522, "upload_time": "2018-07-08T21:20:41", "url": "https://files.pythonhosted.org/packages/2f/2d/92d7673797edf4bd7f71e37ad598fd771cd2bc51f4ead0cfa8323fbe35a2/lnac-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "deed39af08a08ba86f2fea7c45de2193", "sha256": "5801a84654354f19b11f9ea311b80ef45cc70c910eb90c513821b857d0f22049" }, "downloads": -1, "filename": "lnac-0.0.4.tar.gz", "has_sig": false, "md5_digest": "deed39af08a08ba86f2fea7c45de2193", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3530, "upload_time": "2018-07-08T21:36:39", "url": "https://files.pythonhosted.org/packages/d8/31/97c082793d7ed3f9a2f4a6ad5c19cc0d5e13815b86d56690c6f9b5d11e32/lnac-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "2dde96753f04d88b36c695d0c1e2776c", "sha256": "76b419f222fc11bddffbf5ef58a7b1124a807cb661f665c4bec1d39e00e5d321" }, "downloads": -1, "filename": "lnac-0.0.5.tar.gz", "has_sig": false, "md5_digest": "2dde96753f04d88b36c695d0c1e2776c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4624, "upload_time": "2018-07-14T20:01:45", "url": "https://files.pythonhosted.org/packages/1f/50/4802546c2144a11bd871349d8cab423c1bae7ccd08cacf324f6efaf7607a/lnac-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "6709165d972ff23a01d205121a1dc2ce", "sha256": "fbc4f4afdc973aeb90864f13faccd1793270f10a775bfd38aaf98a89607fa8f3" }, "downloads": -1, "filename": "lnac-0.0.6.tar.gz", "has_sig": false, "md5_digest": "6709165d972ff23a01d205121a1dc2ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4632, "upload_time": "2018-07-14T20:18:55", "url": "https://files.pythonhosted.org/packages/94/11/49756b627374586136ec958c760a19c53c0c4fc40230ca30526b42358897/lnac-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "7218cc5cd59642261d080bf40cab6732", "sha256": "d8d68ae4e91803261d8a36c5b0356bc5193969e4c2ced426f3efa4a0aa10cd8a" }, "downloads": -1, "filename": "lnac-0.0.7.tar.gz", "has_sig": false, "md5_digest": "7218cc5cd59642261d080bf40cab6732", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4671, "upload_time": "2018-07-14T20:25:15", "url": "https://files.pythonhosted.org/packages/82/89/220e75c556920d7cb0629e99cfce6a09cd29b2f20b19b3c439c064f88267/lnac-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "f88272162a91409931180f2a66ff689d", "sha256": "5e37a9f1a44bfcfffb7cb1902b99572dd4f6450bfd1ae942d883ae64c4483f36" }, "downloads": -1, "filename": "lnac-0.0.8.tar.gz", "has_sig": false, "md5_digest": "f88272162a91409931180f2a66ff689d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4666, "upload_time": "2018-07-15T01:57:20", "url": "https://files.pythonhosted.org/packages/1a/ec/1037e193f97f339caf5ea309133a208ef4e86deee471b19c0fcc4aa5b42c/lnac-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "f3f549a23bfcec046c7ff59f318f5790", "sha256": "768de2b040bf5817ff5748fcc799d8c7abf0c7d3c23347dc691525a9014aedc5" }, "downloads": -1, "filename": "lnac-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "f3f549a23bfcec046c7ff59f318f5790", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 5711, "upload_time": "2018-07-16T10:37:44", "url": "https://files.pythonhosted.org/packages/4b/68/51a3c72687d4f9cc0ba8857ff12b081fc1d61d7cf2856bffc4dc6a6b0ccd/lnac-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58931f66cec24d7d318bd051a83778af", "sha256": "d25b0f92de62e3ba10f8667dbf23c2d5a7792a9c08619c34bb347274921282a2" }, "downloads": -1, "filename": "lnac-0.0.9.tar.gz", "has_sig": false, "md5_digest": "58931f66cec24d7d318bd051a83778af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4754, "upload_time": "2018-07-16T10:37:43", "url": "https://files.pythonhosted.org/packages/8c/b5/d82f998303d43cdce986f033bbb1cf644dbd3e51a177419c4068b28fbdd3/lnac-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f3f549a23bfcec046c7ff59f318f5790", "sha256": "768de2b040bf5817ff5748fcc799d8c7abf0c7d3c23347dc691525a9014aedc5" }, "downloads": -1, "filename": "lnac-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "f3f549a23bfcec046c7ff59f318f5790", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 5711, "upload_time": "2018-07-16T10:37:44", "url": "https://files.pythonhosted.org/packages/4b/68/51a3c72687d4f9cc0ba8857ff12b081fc1d61d7cf2856bffc4dc6a6b0ccd/lnac-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58931f66cec24d7d318bd051a83778af", "sha256": "d25b0f92de62e3ba10f8667dbf23c2d5a7792a9c08619c34bb347274921282a2" }, "downloads": -1, "filename": "lnac-0.0.9.tar.gz", "has_sig": false, "md5_digest": "58931f66cec24d7d318bd051a83778af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4754, "upload_time": "2018-07-16T10:37:43", "url": "https://files.pythonhosted.org/packages/8c/b5/d82f998303d43cdce986f033bbb1cf644dbd3e51a177419c4068b28fbdd3/lnac-0.0.9.tar.gz" } ] }