{"id":20757124,"url":"https://github.com/coala/coast","last_synced_at":"2025-04-28T20:56:47.315Z","repository":{"id":36175655,"uuid":"40479776","full_name":"coala/coAST","owner":"coala","description":"Universal and language-independent abstract syntax tree","archived":false,"fork":false,"pushed_at":"2021-05-18T08:17:48.000Z","size":203,"stargazers_count":52,"open_issues_count":28,"forks_count":32,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-28T20:56:39.967Z","etag":null,"topics":["abstract-syntax-tree","ast","coala","jinja2","programming-languages","static-site","syntax","yaml"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coala.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-10T11:47:35.000Z","updated_at":"2025-02-21T00:11:52.000Z","dependencies_parsed_at":"2022-08-18T02:55:08.118Z","dependency_job_id":null,"html_url":"https://github.com/coala/coAST","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coala%2FcoAST","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coala%2FcoAST/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coala%2FcoAST/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coala%2FcoAST/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coala","download_url":"https://codeload.github.com/coala/coAST/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251389338,"owners_count":21581778,"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":["abstract-syntax-tree","ast","coala","jinja2","programming-languages","static-site","syntax","yaml"],"created_at":"2024-11-17T09:39:56.703Z","updated_at":"2025-04-28T20:56:47.293Z","avatar_url":"https://github.com/coala.png","language":"CSS","readme":"# coAST\n\ncoAST is a universal abstract syntax tree that allows to easily analyze\neach programming language. Especially adding new languages should be easy and\ngeneric.\n\n## Goals\n\n1. Describe languages using theoretical components, aimed at human\n   comprehension, so that further understanding of concepts used by a\n   language can be obtained by reading online resources rather than code.\n\n2. Provide multiple usable levels of parse-ability, so that a file can\n   be accurately split into parts which are not yet parse-able, or the\n   use case has no benefit in parsing, and the parts may be modified\n   and re-joined into an otherwise semantically equivalent file.\n\nPerformance and algorithmic beauty are not goals.\nReversibility, like augeas, is not a goal, as that requires a Context\nSensitive Tree.\n\nTo achieve the first goal, the primary output of this repository is a\nstatic website which allows the reader to understand the definitions\ncontained here, and link to other online resources where more information\ncan be obtained.\n\nLinks to Wikidata, Antlr definitions, E(BNF) files, example files, will\nbe integral components of the definitions here.\n\nTerminology used to describe language components will be consistent\nacross languages where-ever possible, and defer to terminology used\nin academic literature or study guides, to make these definitions more\naccessible and useful to students of language theory.\n\n## Stages\n\n1. Organically grow a human readable fact based database of any syntax,\n   stored in YAML files, covering any language from large and complicated\n   programming languages down to strings like a URL, especially focusing\n   on style description which describe a subset of a language.\n\n2. Create programs to load these definitions and convert input files\n   into a universal AST, primarily for building a test suite to verify the\n   language definitions are able to parse files at useful levels of detail,\n   again focusing on style-defined subsets of languages which are easier\n   and also more useful.\n\n   These programs may use existing parsers, by converting the coAST\n   definitions into metasyntax used by other parsing toolkits, such as BNF\n   and derivatives, Antlr .g4, and augeas.\n\n3. Standardise the definition schema once a sufficiently large number\n   of language definitions have been adequately verified to determine\n   the schema is able to usefully describe most concepts found in\n   commonly used grammars.\n\n## Phases\n\nThese phases will be overlapping slightly.\n\n### Phase 1: Replace coala language definitions\n\nThe language definitions found at\nhttps://github.com/coala/coala/tree/master/coalib/bearlib/languages\nwill be manually added as language definitions here, growing the schema\nas necessary.  Once the import of facts is complete, a generator will\ncreate the coala language definitions from a snapshot of the coAST language\ndefinitions, putting the collated coAST definitions into use.\n\n### Phase 2: Import other language definitions\n\nThere are many other collections of language definitions.\nInitially the coAST definitions will only link to these external resources,\nand then in the second phase those external grammars will be converted\ninto coAST facts, using batch import tools or manually where necessary.\n\nIn this phase tools to convert the coAST definitions into other syntax\nwill be needed, to round trip the language definitions, providing verification\nthat the imports are complete, or that partial definitions allow correct\npartial parsing of those languages where complete parsing is too complex.\n\n### Phase 3: Create language style definitions\n\nCreate declarative descriptions of common styles, such as the Google Python\ncoding guidelines, and Airbnb JavaScript style.\n\nThe schema for describing styles will borrow from the coala aspects\ndefinitions, and should allow users to define their own custom styles,\nhowever the priority will be accurately describing well established\nstyle guides, and important features of commonly used linters of various\nlanguages.\n\n### Phase 4: Replace coala aspects\n\ncoala aspects development is driven by the needs of users, the complexity\nof bears, and pre-existing implementation choices of coala.\n\nFor avoid these influences causing incorrect design decisions in coAST,\nimporting of aspects will not be considered until after style definitions\nare in place.\n\n# Authors\n\ncoAST is maintained by the [coala](https://github.com/coala)\ncommunity. Contact us on [gitter](https://gitter.im/coala/coala)!\n\n# Licenses\n\nThe facts in this repository are inherently public domain, and are\nexplicitly released under the CC-0 license.\nhttps://creativecommons.org/publicdomain/zero/1.0/\n\nThe website templates and assets included in this repository are released\nunder the Creative Commons Share-alike license 4.0.\nhttps://creativecommons.org/licenses/by-sa/4.0/\n\nAny code in this repository is to be release under the MIT license.\nhttps://opensource.org/licenses/MIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoala%2Fcoast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoala%2Fcoast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoala%2Fcoast/lists"}