{"id":19855758,"url":"https://github.com/jcs-elpa/parse-it","last_synced_at":"2025-05-02T01:31:12.324Z","repository":{"id":97568017,"uuid":"214120252","full_name":"jcs-elpa/parse-it","owner":"jcs-elpa","description":"Basic Parser in Emacs Lisp.","archived":false,"fork":false,"pushed_at":"2025-04-23T00:10:36.000Z","size":171,"stargazers_count":26,"open_issues_count":0,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-23T01:22:39.289Z","etag":null,"topics":["ast","emacs","grammar","lex","lexer","lexing","parse","parser"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcs-elpa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["jcs-elpa","jcs090218"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2019-10-10T07:49:45.000Z","updated_at":"2025-04-23T00:10:39.000Z","dependencies_parsed_at":"2024-01-01T10:31:23.449Z","dependency_job_id":"ce9bbc2c-4946-49af-97b5-df261917c176","html_url":"https://github.com/jcs-elpa/parse-it","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs-elpa%2Fparse-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs-elpa%2Fparse-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs-elpa%2Fparse-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs-elpa%2Fparse-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcs-elpa","download_url":"https://codeload.github.com/jcs-elpa/parse-it/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251969377,"owners_count":21673192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ast","emacs","grammar","lex","lexer","lexing","parse","parser"],"created_at":"2024-11-12T14:13:38.895Z","updated_at":"2025-05-02T01:31:12.318Z","avatar_url":"https://github.com/jcs-elpa.png","language":"Emacs Lisp","readme":"[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![MELPA](https://melpa.org/packages/parse-it-badge.svg)](https://melpa.org/#/parse-it)\n[![MELPA Stable](https://stable.melpa.org/packages/parse-it-badge.svg)](https://stable.melpa.org/#/parse-it)\n\n# parse-it\n\u003e Basic Parser in Emacs Lisp.\n\n![CI](https://github.com/jcs-elpa/parse-it/workflows/CI/badge.svg)\n\nFor most of the `major-mode` that needed a parser to act correctly. This is\na regular expression base parser. The goal of this project is to generate AST for\ntargeting programming language.\n\n## 🔨 Supported Langauges\n\n* ActionScript - `actionscript`\n* Assembly Language - `asm`\n* C - `c`\n* C++ - `c++`\n* C# - `csharp`\n* CSS - `css`\n* Emacs Lisp - `elisp`\n* Go - `go`\n* HTML - `html`\n* JSON - `json`\n* Java - `java`\n* JavaScript - `js`\n* Kotlin - `kotlin`\n* Lisp - `lisp`\n* Lua - `lua`\n* Markdown - `markdown`\n* Objective-C - `objc`\n* PHP - `php`\n* Python - `python`\n* R - `r`\n* SQL - `sql`\n* Swift - `swift`\n* TypeScript - `typescript`\n* XML - `xml`\n\n## 🔰 Try it yourself!\n\nYou can simply test with any script like the code under.\n\n```el\n(require 'parse-it)\n(parse-it-util--print-ast-tree (parse-it 'typescript \"path/to/file.ts\"))\n```\n\nAll tokens are listed under programming language's file itself.\n\n## 💫 How to write one parser/AST for your favorite language?\n\nThere are 4 files you need to know before you write your own parser/AST.\nAnd these 4 files are listed under below.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"arch\" src=\"./docs/arch.png\" width=\"532\" height=\"202\"\u003e\n\u003c/p\u003e\n\n1. `parse-it.el` - Entry.\n2. `parse-it-lex.el` - Lexer functionalities.\n3. `parse-it-ast.el` - Build AST after lexing.\n4. `parse-it-uitl` - Other helpers.\n\nOther file than these files are the implementation for specific programming\nlanguage due to their filename. For instance, `parse-it-c.el` is for programming\nlanguage `C`. If you are trying to implement c-like programming language you should check\nout `parse-it-c.el` and reuse those identifier regular expression within that\nfile.\n\n## 🛠️ Contribute\n\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n[![Elisp styleguide](https://img.shields.io/badge/elisp-style%20guide-purple)](https://github.com/bbatsov/emacs-lisp-style-guide)\n[![Donate on paypal](https://img.shields.io/badge/paypal-donate-1?logo=paypal\u0026color=blue)](https://www.paypal.me/jcs090218)\n[![Become a patron](https://img.shields.io/badge/patreon-become%20a%20patron-orange.svg?logo=patreon)](https://www.patreon.com/jcs090218)\n\nIf you would like to contribute to this project, you may either\nclone and make pull requests to this repository. Or you can\nclone the project and establish your own branch of this tool.\nAny methods are welcome!\n\n### 🔬 Development\n\nTo run the test locally, you will need the following tools:\n\n- [Eask](https://emacs-eask.github.io/)\n- [Make](https://www.gnu.org/software/make/) (optional)\n\nInstall all dependencies and development dependencies:\n\n```sh\neask install-deps --dev\n```\n\nTo test the package's installation:\n\n```sh\neask package\neask install\n```\n\nTo test compilation:\n\n```sh\neask compile\n```\n\n**🪧 The following steps are optional, but we recommend you follow these lint results!**\n\nThe built-in `checkdoc` linter:\n\n```sh\neask lint checkdoc\n```\n\nThe standard `package` linter:\n\n```sh\neask lint package\n```\n\n*📝 P.S. For more information, find the Eask manual at https://emacs-eask.github.io/.*\n\n## ⚜️ License\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\nSee [`LICENSE`](./LICENSE.txt) for details.\n","funding_links":["https://github.com/sponsors/jcs-elpa","https://github.com/sponsors/jcs090218","https://www.paypal.me/jcs090218","https://www.patreon.com/jcs090218"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcs-elpa%2Fparse-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcs-elpa%2Fparse-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcs-elpa%2Fparse-it/lists"}