{"id":17949080,"url":"https://github.com/izuzak/noam","last_synced_at":"2025-04-07T18:14:30.437Z","repository":{"id":2817456,"uuid":"3819137","full_name":"izuzak/noam","owner":"izuzak","description":"JavaScript library for working with automata and grammars for regular and context-free languages","archived":false,"fork":false,"pushed_at":"2024-08-22T09:41:53.000Z","size":904,"stargazers_count":212,"open_issues_count":22,"forks_count":34,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-07T01:51:30.982Z","etag":null,"topics":["automata","computer-science","educational-software","finite-state-machine","fsms","grammars","javascript","regexes","regular-expressions"],"latest_commit_sha":null,"homepage":"http://ivanzuzak.info/noam/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"douban/code","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/izuzak.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}},"created_at":"2012-03-24T18:28:51.000Z","updated_at":"2025-04-07T00:19:45.000Z","dependencies_parsed_at":"2024-08-22T11:10:01.734Z","dependency_job_id":null,"html_url":"https://github.com/izuzak/noam","commit_stats":{"total_commits":233,"total_committers":5,"mean_commits":46.6,"dds":0.1802575107296137,"last_synced_commit":"262f5a2875425662cdfb39a3fe8f01360a2bd042"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izuzak%2Fnoam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izuzak%2Fnoam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izuzak%2Fnoam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izuzak%2Fnoam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/izuzak","download_url":"https://codeload.github.com/izuzak/noam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247704571,"owners_count":20982298,"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":["automata","computer-science","educational-software","finite-state-machine","fsms","grammars","javascript","regexes","regular-expressions"],"created_at":"2024-10-29T09:11:20.452Z","updated_at":"2025-04-07T18:14:30.408Z","avatar_url":"https://github.com/izuzak.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Noam [![Build Status](https://travis-ci.org/izuzak/noam.png)](https://travis-ci.org/izuzak/noam)\n\nNoam is a JavaScript library for working with automata and formal grammars for regular and context-free languages.\n\nNoam's name comes from [Noam Chomsky](https://en.wikipedia.org/wiki/Noam_Chomsky) and his [hierarchy of formal languages and grammars](https://en.wikipedia.org/wiki/Chomsky_hierarchy).\n\n## Status\n\nPre-alpha.\nHorrible performance, only functions for working with FSMs implemented.\nStay tuned.\nSee [TODO list](TODO.md).\n\n## Web apps\n\n* [Regular Expressions Gym](https://ivanzuzak.info/noam/webapps/regex_simplifier/) - Slim your regexes one step at a time! Source is [here](https://github.com/izuzak/noam/tree/master/webapps/regex_simplifier).\n* [FSM Simulator](https://ivanzuzak.info/noam/webapps/fsm_simulator/) - Visually simulate the operation of your DFAs, NFAs and eNFAs one input symbol at a time! Source is [here](https://github.com/izuzak/noam/tree/master/webapps/fsm_simulator).\n* [FSM2Regex](https://ivanzuzak.info/noam/webapps/fsm2regex/) - Convert your FSMs to regexes and your regexes to FSMs! Source is [here](https://github.com/izuzak/noam/tree/master/webapps/fsm2regex).\n\n## Install\n\nIf you just want to use noam (and not contribute to development), install using npm:\n\n    npm install noam\n\nTo use noam in a browser, add a `\u003cscript\u003e` link to the browser-based versions found in `lib/browser/`:\n\n    \u003cscript src=\"https://ivanzuzak.info/noam/lib/browser/noam.js\"\u003e\u003c/script\u003e\n\nor minified version:\n\n    \u003cscript src=\"https://ivanzuzak.info/noam/lib/browser/noam.min.js\"\u003e\u003c/script\u003e\n\n## Development\n\n1. Fork and/or clone repo: `git clone https://github.com/izuzak/noam.git`\n2. Change dir to noam: `cd noam`\n3. Install dependencies: `npm install`\n4. Make changes to noam sources (`./src`), tests (`./test`) or benchmarks (`./benchmarks`)\n5. Build using grunt (validate -\u003e lint -\u003e concat -\u003e test -\u003e minify): `grunt` (on linux and osx), `grunt.cmd` (on windows)\n6. (bonus points) Run `istanbul cover node_modules/jasmine-node/bin/jasmine-node test` to get code coverage reports in `./coverage`. Add more tests or change existing tests to improve coverage\n7. Fix issues reported by tests and coverage reports, and then repeat 5) and 6)\n8. Commit, push and make a pull request, or send a git patch by e-mail\n9. E-mail me if you have questions (e-mail address is below)\n\n## Credits\n\nNoam is developed by [Ivan Zuzak](https://ivanzuzak.info) \u0026lt;izuzak@gmail.com\u0026gt; and [Ivan Budiselic](https://github.com/ibudiselic). Contributors: [Vedrana Jankovic](http://vedri.ca/).\n\nNoam is built with many awesome open-source projects:\n* [structure.js](https://github.com/ibudiselic/structure.js) - used for its JS hashtable implementation\n* [cli-table](https://github.com/LearnBoost/cli-table) - used for drawing ascii tables in the command-line version of noam\n* [jQuery](https://jquery.com/) - used for the FSM Web application playgrounds\n* [NodeJS](https://nodejs.org/) - used for running the command-line version of noam\n* [viz.js](https://github.com/mdaines/viz.js) - used for drawing FSM graphs in Web applications\n* [Bootstrap](https://getbootstrap.com) - used for styles in regex simplification webapp\n* [JsDiff](https://github.com/kpdecker/jsdiff) - used for diffing regexes in regex simplifier webapp\n* [jasmine-node](https://github.com/mhevery/jasmine-node) and [grunt-jasmine-node](https://github.com/jasmine-contrib/grunt-jasmine-node) - used for unit testing\n* [benchtable](https://github.com/izuzak/benchtable) and [benchmark.js](http://benchmarkjs.com/) - used for performance benchmarking\n* [grunt-jsvalidate](https://github.com/ariya/grunt-jsvalidate) - used for JavaScript validation\n* [grunt](https://gruntjs.com/) - used as the build tool for the project\n* [JSHint](https://www.jshint.com/) - used for linting the noam lib\n* [UglifyJS](https://github.com/mishoo/UglifyJS/) - used for minifying the noam lib\n* [PhantomJS](https://phantomjs.org/index.html) - used for testing webapps\n* [WD.js](https://github.com/admc/wd) - used for testing webapps\n* [Istanbul](https://github.com/yahoo/istanbul) - used for code coverage\n\n## License\n\nLicensed under the [Apache 2.0 License](https://github.com/izuzak/noam/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizuzak%2Fnoam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fizuzak%2Fnoam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizuzak%2Fnoam/lists"}