Exploring what I can do with tree-sitter :)

A quick spike:

And a result:

(compilation (compilation_unit (subprogram_body (procedure_specification name: (identifier)) (handled_sequence_of_statements (null_statement)) endname: (identifier))))

I want to check:

  • how much LSP-like context I can get
  • how much gnatdoc-like documentation parsing I can get

Nice!

There was a guy here some months back working on restoring/re-engineering an Ada83 compiler (one using DIANA). I’m in the middle of reading through the documentation to implement IDL (DIANA is an instance of IDL), and interested in producing a new/updated version of DIANA. — Integrating your tree-sitter with these would give you a full frontend.


Note:

  • DIANA: An abstract datatype which is an attributed tree, originally produced/defined by/in/with IDL for the express purpose of storing Ada programs. — Designed to:
    • be source-text recoverable,
    • only store valid Ada programs,
    • be a common IR for compilers and tools, and
    • allow a common-core so that consumers and producers can interoperate.
      (E.G. A new static analyzer or proof-system decorating the tree with custom ‘Proof_Nodes’ which could direct code generation from backends aware of these proofs, or else be ignored by code-generators ignorant of this class of nodes.)
  • IDL: A definition language for specifying data-structures in a language-portable manner.

Found it. Thanks!

Hi there !

I am still working in my corner on the Ada 83 compiler. It is a very complex task, but there is some progress, TEXT_IO has many usable features. I am working on type templates and DIRECT_IO. A second repository (mainly synchronised with framagit) is on github : GitHub - ViMoBr/Ada83_TLALOC · GitHub . If somebody needs information, just ask.