ginko 0.0.3

A device-tree source parser and analyzer
Documentation

Ginko

A device-tree source parser, analyzer and language server. The main goal of this project is to make working with device-trees easy. For example, for the following device-tree:

/dts-v1/;

/ {
    pic@10000000 {
        phandle = <1>;
        interrupt-controller;
        reg = <0x10000000 0x100>;
    }
};

dtc produces the following output:

Error: test.dts:9.1-2 syntax error
FATAL ERROR: Unable to parse input tree

whereas ginko produces the following output:

 --> test.dts:8:6
  |
8 |     }
  |      ^ Expected ';'

Projects

ginko

Goals:

  • A complete device-tree source parser.
  • Error tolerant parsing for device-tree usage
  • Providing readable and helpful feedback to the user

Shortcomings

This project is in its infancy. Therefore, a couple of features aren't supported yet:

  • C-style includes (i.e., #include "some_header.h")
  • Expressions (parenthesized expressions are ignored and do not throw an error)
  • Binary Device Tree format
  • Stable API

ginko_ls

ginko_ls is meant to be a feature-complete language server for device-trees. Language servers can be used in many editors, such as Visual Studio Code, Emacs or Vim

Features

  • Outline
  • Go to definition (nodes)
  • hover

Planned features

  • Incremental analysis
  • completion
  • formatting

All contributions, whether in the form of Pull Requests or Issues are highly appreciated and welcome.