{ "info": { "author": "William Song", "author_email": "songcwzjut@163.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: Public Domain", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "Introduction\n=============\n\nAbstract\n----------\nExtension of [pyparsing](https://github.com/pyparsing/pyparsing). You can easily build your own languages. :v:\n\nKeywords\n----------\n* PEG\n* Regular Expressions\n* Parser\n* Formal Grammar\n* Operating Semantics\n\n\n## Awesome Feature:\n\n 1. mixedExpression\n 2. build languages (see example)\n\nRequirements\n-----------\npyparsing\n\n\n\n## Download\n\n`pip install pyparsing_ext`\n\n\n\n## Structure\n\n- core: basic token classes\n- actions: classes for parsing actions\n- expressions: complicated expressions\n- utils: some useful tools\n\nContent\n=========\n\nClasses::\n\n Tokens:\n \n Wordx: powerful Word\n CharsNot: powerful CharsNotIn\n PrecededBy: as FollowedBy (moved to pyparsing)\n MeanWhile:\n LinenStart:\n \n Actions:\n BaseAction: Base Class of Actions\n BifixAction: action for bifix operators such as \n ...\n\n\nFunctions::\n\n```python\nkeyRange(s)\nordRange(s)\nchrRange(s)\nCJK # for matching Chinese Japanese Korean\nenumeratedItems\ntupleExpression # tuple as in python (1,), (), (1,2)...\ndelimitedMatrix # delimitedList with two seps (just call it 2-order list)\n```\n\nExample\n=========\n\n```python\nw = Wordx(lambda x: x in {'a', 'b', 'c', 'd'}) # == Word('abcd')\n\nM = delimitedMatrix(w, ch1=' ', ch2=pp.Regex('\\n+').leaveWhitespace())\np = M.parseString('a b\\n c d')\nprint(p.asList())\n\ns = '''\n[1]hello, world\n[2]hello, kitty\n'''\nprint(enumeratedItems().parseString(s))\n\ncjk = ordRange(0x4E00, 0x9FD5)\ncjk.parseString('\u6211\u7231\u4f60, I love you') # => ['\u6211\u7231\u4f60']\n\ncjk = ordRanges((0x4E00, 0x9FD5, 0, 256))\ncjk.parseString('\u6211\u7231\u4f60 I love you') # => ['\u6211\u7231\u4f60 I love you']\n\nimport pyparsing as pp\ninteger = pp.pyparsing_common.signed_integer\nvarname = pp.pyparsing_common.identifier\n\narithOplist = [('-', 1, pp.opAssoc.RIGHT),\n (pp.oneOf('* /'), 2, pp.opAssoc.LEFT),\n (pp.oneOf('+ -'), 2, pp.opAssoc.LEFT)]\n\ndef func(EXP):\n return pp.Group('<' + EXP + pp.Suppress(',') + EXP +'>')| pp.Group('||' + EXP + '||') | pp.Group('|' + EXP + '|') | pp.Group(IDEN + '(' + pp.delimitedList(EXP) + ')')\nbaseExpr = integer | varname\nEXP = mixedExpression(baseExpr, func=func, opList=arithOplist)\n\na = EXP.parseString('5*g(|-3|)+<4,5> + f(6)')\nprint(a)\n# [[[5, '*', ['g', '(', ['|', ['-', 3], '|'], ')']], '+', ['<', 4, 5, '>'], '+', ['f', '(', 6, ')']]]\n```\n\n\n\n## build your own languages\n\nrun `example1.py` for a simple example\n\noutput:\n```C\nExample 1:\n|-1| -> ('|', '|')(-(1))\nExample 2:\nparse source code:\n \nx=|-1|; # absolute value\ny=x*2+1;\nif x == 1\n{z=[3.3_]; # the floor value\n}\nprint \"z =\", z;\n \nresult:\nz = 3 \nsee the dictionary of variables:\n{'x': Decimal('1'), 'y': Decimal('3'), 'z': 3}\n```\n\nIn example2.py, we create a programming language, \"Small Python\".\nrun `example2.py` for a complicated example, to parse text files `test.spy` or `test1.py`\n\n`example2.smallpy.cmdline()` # in mode of command line", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Freakwill/pyparsing_ext", "keywords": "Parsing,Text Processing", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyparsing-ext", "package_url": "https://pypi.org/project/pyparsing-ext/", "platform": "", "project_url": "https://pypi.org/project/pyparsing-ext/", "project_urls": { "Homepage": "https://github.com/Freakwill/pyparsing_ext" }, "release_url": "https://pypi.org/project/pyparsing-ext/1.0.2/", "requires_dist": null, "requires_python": "", "summary": "A cool tool for parsing. It is an extension of pyparsing. One can build his own programming language with it.", "version": "1.0.2" }, "last_serial": 4918635, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "d4f6ac8407a8e931e212c0cc380a24d9", "sha256": "a562cdad55007d8ab393b7c1c5a2706fc4ad87d489c87b9e880121d3a475f5c0" }, "downloads": -1, "filename": "pyparsing_ext-0.2.2.tar.gz", "has_sig": false, "md5_digest": "d4f6ac8407a8e931e212c0cc380a24d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2298, "upload_time": "2018-09-20T13:43:59", "url": "https://files.pythonhosted.org/packages/87/eb/5540057554fd2f40645f4161e41d1e5f697197788c82a2ce7f9ba1c11b52/pyparsing_ext-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "67bd37c30d64098ce34e7a17a1489027", "sha256": "1a4bcbd2620c8080baaed5ea26ae34b873b7fa88680c77934f8a2029b6e004f0" }, "downloads": -1, "filename": "pyparsing_ext-0.2.3.tar.gz", "has_sig": false, "md5_digest": "67bd37c30d64098ce34e7a17a1489027", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2308, "upload_time": "2018-10-03T05:42:22", "url": "https://files.pythonhosted.org/packages/ec/94/512b94a4b7c110430432d4ca6dfac2135acc517a281bc4efdf5c3e2f3075/pyparsing_ext-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d4038735a263884611cb1781db45d35d", "sha256": "9201cf96c42983437229b632f3bc074ff38cdf1f2d0ba62bede7285a893a9bb5" }, "downloads": -1, "filename": "pyparsing_ext-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d4038735a263884611cb1781db45d35d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2471, "upload_time": "2018-10-08T01:56:00", "url": "https://files.pythonhosted.org/packages/15/11/bc8dc8d5c51c1cc61cd568e57248113e71d51dd1a99ed86c650c6fb403e1/pyparsing_ext-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "bf3535657326499cdc639842d0a8ab6a", "sha256": "9d97de5915b81f11b78ccecdaa92f41e194994b1d5d445c9de479ed147d90fe4" }, "downloads": -1, "filename": "pyparsing_ext-0.3.0.tar.gz", "has_sig": false, "md5_digest": "bf3535657326499cdc639842d0a8ab6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2794, "upload_time": "2019-01-07T10:40:57", "url": "https://files.pythonhosted.org/packages/0a/85/77a58e4cefbd065edf0c977fe7005e8055a338e39492d6730e5ddf2b6aeb/pyparsing_ext-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "5877fa60ef5ddbceda60dfb8f8dbdc27", "sha256": "bf38b62ea84b33795acc85c2608f5d78569280b0401430f3330493579795f4e0" }, "downloads": -1, "filename": "pyparsing_ext-0.3.1.tar.gz", "has_sig": false, "md5_digest": "5877fa60ef5ddbceda60dfb8f8dbdc27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2798, "upload_time": "2019-01-11T15:27:19", "url": "https://files.pythonhosted.org/packages/91/0c/3b6bb030874a57cb2ea0ed7e07a39b7a82d5de0be7c95fd3a5ff9fe40989/pyparsing_ext-0.3.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b3c7854e2625af346a27f20e44f23be2", "sha256": "3854fa1f344462930b9acd2161c78f777756ce966b01b749caa462c72d4547dd" }, "downloads": -1, "filename": "pyparsing_ext-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b3c7854e2625af346a27f20e44f23be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2718, "upload_time": "2019-03-07T09:38:45", "url": "https://files.pythonhosted.org/packages/58/77/4a7ec8c22f07b753b8bae4eec89b34f25e8b8c3eca6e750e72e2bf7f86bb/pyparsing_ext-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "965f56faecdc76657a0b58c31cf7ea48", "sha256": "12591696c29052dd0b58494a113ba356b1d1794f3931714624ad724744f58ac0" }, "downloads": -1, "filename": "pyparsing_ext-1.0.1.tar.gz", "has_sig": false, "md5_digest": "965f56faecdc76657a0b58c31cf7ea48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2744, "upload_time": "2019-03-09T10:22:37", "url": "https://files.pythonhosted.org/packages/0b/9f/190f5038df648a4b8706f673c9f2e75be83f5d40eb5208933b48560a9385/pyparsing_ext-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "a8f41fdff205ed72436e9173e1d6a6d4", "sha256": "67f00cfb7beab092ee6e4f242d7720eac0e8ed95158e669c264e01f1f3d6f484" }, "downloads": -1, "filename": "pyparsing_ext-1.0.2.tar.gz", "has_sig": false, "md5_digest": "a8f41fdff205ed72436e9173e1d6a6d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3238, "upload_time": "2019-03-09T12:22:11", "url": "https://files.pythonhosted.org/packages/87/82/296386215dfbb5b0a469b1cf25583d9a336aa74bdd7047558b6d2a8f7047/pyparsing_ext-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a8f41fdff205ed72436e9173e1d6a6d4", "sha256": "67f00cfb7beab092ee6e4f242d7720eac0e8ed95158e669c264e01f1f3d6f484" }, "downloads": -1, "filename": "pyparsing_ext-1.0.2.tar.gz", "has_sig": false, "md5_digest": "a8f41fdff205ed72436e9173e1d6a6d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3238, "upload_time": "2019-03-09T12:22:11", "url": "https://files.pythonhosted.org/packages/87/82/296386215dfbb5b0a469b1cf25583d9a336aa74bdd7047558b6d2a8f7047/pyparsing_ext-1.0.2.tar.gz" } ] }