{"library":"pygmars","title":"pygmars","description":"A library for crafting simple regex-based small language lexers and parsers. Build parsers from grammars and accept Pygments lexers as input. Derived from NLTK. Current version 1.0.0, released May 2024. Maintained by aboutcode-org, release cadence irregular.","language":"python","status":"active","last_verified":"Fri May 01","install":{"commands":["pip install pygmars"],"cli":null},"imports":["from pygmars import Lexer","from pygmars import Grammar","from pygmars import Parser","from pygmars import ParseString","from pygmars import Tree"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from pygmars import Lexer, Grammar, Parser\n\n# Define a simple grammar for arithmetic expressions\nlexer = Lexer()\nlexer.add_token('NUM', r'\\d+')\nlexer.add_token('PLUS', r'\\+')\nlexer.add_token('MINUS', r'-')\nlexer.add_token('TIMES', r'\\*')\nlexer.add_token('DIVIDE', r'/')\nlexer.add_token('LPAREN', r'\\(')\nlexer.add_token('RPAREN', r'\\)')\nlexer.add_ignore(' ')\n\ngrammar = Grammar()\ngrammar.add_production('E', ['E', 'PLUS', 'T'])\ngrammar.add_production('E', ['T'])\ngrammar.add_production('T', ['T', 'TIMES', 'F'])\ngrammar.add_production('T', ['F'])\ngrammar.add_production('F', ['LPAREN', 'E', 'RPAREN'])\ngrammar.add_production('F', ['NUM'])\n\nparser = Parser(grammar)\n\ntokens = lexer.tokenize('2+3*4')\nparse_tree = parser.parse(tokens)\nprint(parse_tree.pformat())","lang":"python","description":"Create a lexer for arithmetic expressions, define a grammar, and parse a simple expression.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}