{
  "authors": [
    "Simon Wright"
  ],
  "build-switches": {
    "*": {
      "ada_version": "ada2022"
    },
    "development": {
      "contracts": "yes"
    }
  },
  "depends-on": [
    {
      "libadalang": "*"
    }
  ],
  "description": "Generates XML for Ada source, using libadalang.",
  "executables": [
    "libadalang2xml"
  ],
  "licenses": "GPL-3.0-or-later",
  "long-description": "Libadalang2XML is a tool to extract syntatic aspects of Ada source code into XML.\n\nThe Ada source is initially read using [Libadalang](https://github.com/AdaCore/libadalang). The resulting tree is then traversed, and its structure output in an XML form.\n\nThe [document type definition](https://en.wikipedia.org/wiki/Document_type_definition) isn't explicit; it's simply derived from the tree elements created by Libadalang. Note that Libadalang includes much more semantic information than the surface structure generated by this tool, but nevertheless there's enough there to --- for example --- create a scriptable body for a package spec.\n\n## Building on macOS ##\n\nUsing the standard `langkit_support`, `libadalang` crates, you **must** build with `LIBRARY_TYPE` set to `relocatable`.\n\nYou can obtain versions of those crates adjusted to not require those features, which can therefore build the (default) static libraries, by visiting https://github.com/simonjwright/alire-index.mac.\n\n## Example ##\n\nAs an example of the output, this code\n``` ada\npackage Demo is\n   procedure Square (X : in out Integer);\nend Demo;\n```\ngenerates\n``` xml\n<CompilationUnit>\n  <AdaNodeList/>\n  <LibraryItem>\n    <PrivateAbsent/>\n    <PackageDecl>\n      <DefiningName>\n        <Id>Demo</Id>\n      </DefiningName>\n      <PublicPart>\n        <AdaNodeList>\n          <SubpDecl>\n            <OverridingUnspecified/>\n            <SubpSpec>\n              <SubpKindProcedure>procedure</SubpKindProcedure>\n              <DefiningName>\n                <Id>Square</Id>\n              </DefiningName>\n              <Params>\n                <ParamSpecList>\n                  <ParamSpec>\n                    <DefiningNameList>\n                      <DefiningName>\n                        <Id>X</Id>\n                      </DefiningName>\n                    </DefiningNameList>\n                    <AliasedAbsent/>\n                    <ModeInOut>in out</ModeInOut>\n                    <SubtypeIndication>\n                      <NotNullAbsent/>\n                      <Id>Integer</Id>\n                    </SubtypeIndication>\n                  </ParamSpec>\n                </ParamSpecList>\n              </Params>\n            </SubpSpec>\n          </SubpDecl>\n        </AdaNodeList>\n      </PublicPart>\n      <EndName>\n        <Id>Demo</Id>\n      </EndName>\n    </PackageDecl>\n  </LibraryItem>\n  <PragmaNodeList/>\n</CompilationUnit>\n```\n",
  "maintainers": [
    "Simon Wright <simon@pushface.org>"
  ],
  "maintainers-logins": [
    "simonjwright"
  ],
  "name": "libadalang2xml",
  "origin": {
    "commit": "99ee1dd171cd66736f38e770a751a15ad7ffc334",
    "url": "git+https://github.com/simonjwright/libadalang2xml.git"
  },
  "tags": [
    "ada",
    "xml"
  ],
  "version": "1.0.2",
  "website": "https://github.com/simonjwright/libadalang2xml"
}
