{"id":22734613,"url":"https://github.com/devorein/fauton","last_synced_at":"2025-04-19T16:36:50.438Z","repository":{"id":39859683,"uuid":"425215348","full_name":"Devorein/fauton","owner":"Devorein","description":"An ecosystem of packages to work with automaton and parsers (dfa/nfa/e-nfa/regex/cfg/pda)","archived":false,"fork":false,"pushed_at":"2023-03-07T00:29:40.000Z","size":6590,"stargazers_count":40,"open_issues_count":31,"forks_count":2,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2025-01-08T20:11:38.272Z","etag":null,"topics":["automaton","cfg","cnf","cyk-algorithm","dfa","epsilon-nfa","finite-automata","ll1-parser","lr1-parser","nfa","nfa-to-dfa-conversion","parser","regex","typescript"],"latest_commit_sha":null,"homepage":"http://docs.fauton.xyz","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Devorein.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-11-06T10:29:26.000Z","updated_at":"2024-11-26T13:02:09.000Z","dependencies_parsed_at":"2023-07-25T20:18:36.021Z","dependency_job_id":null,"html_url":"https://github.com/Devorein/fauton","commit_stats":null,"previous_names":["devorein/fauton","devorein/dfa-test","reinforz/fauton"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devorein%2Ffauton","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devorein%2Ffauton/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devorein%2Ffauton/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Devorein%2Ffauton/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Devorein","download_url":"https://codeload.github.com/Devorein/fauton/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233641230,"owners_count":18707118,"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":["automaton","cfg","cnf","cyk-algorithm","dfa","epsilon-nfa","finite-automata","ll1-parser","lr1-parser","nfa","nfa-to-dfa-conversion","parser","regex","typescript"],"created_at":"2024-12-10T20:49:48.560Z","updated_at":"2025-01-12T17:49:02.783Z","avatar_url":"https://github.com/Devorein.png","language":"TypeScript","readme":"\u003cbr/\u003e\r\n\r\n\u003cp align=\"center\"\u003e\u003ca href=\"https://docs.fauton.xyz\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg width=\"250\" src=\"https://raw.githubusercontent.com/Devorein/fauton/dev/docs/static/img/logo.svg\" alt=\"Fauton logo\"\u003e\u003c/a\u003e\u003c/p\u003e\r\n\r\n\u003cdiv align=\"center\"\u003e \u003ch1\u003eFauton\u003c/h1\u003e \u003c/div\u003e\r\n\u003cdiv align=\"center\"\u003e\u003cb\u003eAn ecosystem of packages to work with automaton and parsers (dfa/nfa/e-nfa/regex/cfg/pda)\u003c/b\u003e\u003c/div\u003e\r\n\u003cbr/\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003ca href=\"https://github.com/Devorein/fauton/actions?query=workflow%3A%22Lint%2C+Build+and+Test%22\"\u003e\u003cimg src=\"https://github.com/devorein/fauton/workflows/Lint,%20Build%20and%20Test/badge.svg\"/\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://app.codecov.io/gh/Devorein/fauton/branch/main\"\u003e\u003cimg src=\"https://img.shields.io/codecov/c/github/devorein/fauton?color=blue\"/\u003e\u003c/a\u003e\r\n  \u003cimg src=\"https://img.shields.io/github/commit-activity/m/devorein/fauton?color=yellow\" /\u003e\r\n  \u003cimg src=\"https://img.shields.io/github/repo-size/devorein/fauton?style=flat-square\u0026color=ocombo\"/\u003e\r\n  \u003cimg src=\"https://img.shields.io/github/contributors/devorein/fauton?label=contributors\u0026color=red\"/\u003e\r\n  \u003cimg src=\"https://img.shields.io/github/issues/devorein/fauton\"/\u003e\r\n\u003c/p\u003e\r\n\r\n- [Features](#features)\r\n- [Packages](#packages)\r\n- [Algorithm Sources](#algorithm-sources)\r\n- [Credits](#credits)\r\n- [Contributors](#contributors)\r\n\r\n## Features\r\n\r\n1. Full typescript support\r\n2. Easy to use api\r\n3. High test coverage\r\n4. Supports both node and browser environment (except a few packages)\r\n5. Well documented with examples\r\n\r\n## Packages\r\n\r\n- **`@fauton/cfg`** [Github](https://github.com/Devorein/fauton/tree/main/packages/cfg) [NPM](https://www.npmjs.com/package/@fauton/cfg): A package to work with cfg\r\n- **`@fauton/fa`** [Github](https://github.com/Devorein/fauton/tree/main/packages/fa) [NPM](https://www.npmjs.com/package/@fauton/fa): A package to work with finite automata\r\n- **`@fauton/regex`** [Github](https://github.com/Devorein/fauton/tree/main/packages/regex) : A package to work with regex validation and parsing\r\n- **`@fauton/testing`** [Github](https://github.com/Devorein/fauton/tree/main/packages/testing) [NPM](https://www.npmjs.com/package/@fauton/testing) : A package to test your automaton (regex/dfa/nfa/e-nfa/cfg)\r\n- **`@fauton/language`** [Github](https://github.com/Devorein/fauton/tree/main/packages/language) : A package to generate language from a given set of tokens\r\n\r\n## Algorithm Sources\r\n\r\nWikipedia sources for all the algorithms used in the package\r\n\r\n1. [Thompson-McNaughton-Yamada](https://en.wikipedia.org/wiki/Thompson%27s_construction) algorithm for converting regex to e-nfa\r\n2. [Hopcroft](https://en.wikipedia.org/wiki/DFA_minimization#Hopcroft's_algorithm) algorithm for dfa-minimization\r\n3. [Rabin–Scott powerset construction](https://en.wikipedia.org/wiki/Powerset_construction) algorithm to convert nfa to dfa\r\n4. [Shunting-Yard](https://en.wikipedia.org/wiki/Shunting-yard_algorithm) algorithm to convert regex string from infix to postfix\r\n5. [Chomsky Normal Form](https://en.wikipedia.org/wiki/Chomsky_normal_form) Algorithm to make parsing a string easier\r\n6. [Cocke–Younger–Kasami](https://en.wikipedia.org/wiki/CYK_algorithm) Parsing algorithm using a CFG\r\n7. [Earley Parser](https://en.wikipedia.org/wiki/Earley_parser) algorithm for parsing strings that belong to a given context-free language\r\n8. [LL parser](https://en.wikipedia.org/wiki/LL_parser) a top-down parser for a restricted context-free language\r\n\r\n## Credits\r\n\r\nBig thanks to all these wonderful repos.\r\n\r\n1. [Orban](https://github.com/wevial/orban) Regular expression engine that uses the Thompson-McNaughton-Yamada algorithm implemented in Python.\r\n2. [CFGChecker](https://github.com/mattany/CFGChecker) A program that cross references a context free grammar with a given language.\r\n3. [CFG Epsilon Removal](https://eli.thegreenplace.net/2010/02/08/removing-epsilon-productions-from-context-free-grammars) A detailed article on how to remove epsilon from CFG\r\n4. [python-formal-langs-practicum-automata-cfg](https://github.com/persiyanov/python-formal-langs-practicum-automata-cfg) Automata, Context-free-grammar classes (implementation of CYK algorithm, converting grammar to Chomsky normal form, Thompson algo for building automaton from regex, etc.)\r\n5. [earley-parser-js](https://github.com/lagodiuk/earley-parser-js) Tiny JavaScript implementation of context-free languages parser - Earley parser (including generation of the parsing-forest).\r\n6. [probabilistic-earley-parser-javascript](https://github.com/digitalheir/probabilistic-earley-parser-javascript) An efficient implementation of a probabilistic Context Free Grammar parser in Javascript\r\n7. [https://github.com/caleb531/automata](https://github.com/caleb531/automata) A Python library for simulating finite automata, pushdown automata, and Turing machines\r\n\r\n## Contributors\r\n\r\n1.  Safwan Shaheer [github](https://github.com/Devorein) Author, Maintainer\r\n\r\nFeel free to submit a pull request or open a new issue, contributions are more than welcome.\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevorein%2Ffauton","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevorein%2Ffauton","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevorein%2Ffauton/lists"}