{"id":13442535,"url":"https://github.com/s-expressionists/Concrete-Syntax-Tree","last_synced_at":"2025-03-20T14:31:19.815Z","repository":{"id":47669244,"uuid":"86214944","full_name":"s-expressionists/Concrete-Syntax-Tree","owner":"s-expressionists","description":"Concrete Syntax Trees represent s-expressions with source information","archived":false,"fork":false,"pushed_at":"2023-03-16T02:22:14.000Z","size":413,"stargazers_count":60,"open_issues_count":3,"forks_count":12,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-02-10T01:38:39.003Z","etag":null,"topics":["compiler","parsing","syntax-tree"],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/s-expressionists.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.text","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-03-26T07:19:53.000Z","updated_at":"2024-12-09T12:43:35.000Z","dependencies_parsed_at":"2024-03-29T06:00:43.792Z","dependency_job_id":null,"html_url":"https://github.com/s-expressionists/Concrete-Syntax-Tree","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/s-expressionists%2FConcrete-Syntax-Tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FConcrete-Syntax-Tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FConcrete-Syntax-Tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FConcrete-Syntax-Tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s-expressionists","download_url":"https://codeload.github.com/s-expressionists/Concrete-Syntax-Tree/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244630153,"owners_count":20484325,"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":["compiler","parsing","syntax-tree"],"created_at":"2024-07-31T03:01:46.955Z","updated_at":"2025-03-20T14:31:19.401Z","avatar_url":"https://github.com/s-expressionists.png","language":"Common Lisp","readme":"This library is intended to solve the problem of source tracking for\nCommon Lisp code.\n\nBy \"source tracking\", we mean that code elements that have a known\norigin in the form of a position in a file or in an editor buffer are\nassociated with some kind of information about this origin.\n\nSince the exact nature of such origin information depends on the\nCommon Lisp implementation and the purpose of wanting to track that\norigin, we do not impose a particular structure of this information.\nInstead, we provide utilities for manipulating source code in the form\nof what we call concrete syntax trees (CSTs for short) that preserve\nthis information about the origin.\n\nFor example, we provide code utilities for canonicalizing\ndeclarations, parsing lambda lists, separating declarations and\ndocumentation strings and code bodies, checking whether a form is a\nproper list, etc.  All these utilities manipulate the code in the form\nof a CST, and provide CSTs as a result of the manipulation that\npropagates the origin information as much as possible.\n\nIn particular, we provide an \"intelligent macroexpander\".  This\nfunction takes an original CST and the result of macroexpanding the\nRAW code version of that CST, and returns a new CST representing the\nexpanded code in such a way that as much as possible of the origin\ninformation is preserved.\n","funding_links":[],"categories":["Common Lisp"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-expressionists%2FConcrete-Syntax-Tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs-expressionists%2FConcrete-Syntax-Tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-expressionists%2FConcrete-Syntax-Tree/lists"}