# Egel, or, A bit more documentation on the C AST

**URL:** <https://talk.commonmark.org/t/egel-or-a-bit-more-documentation-on-the-c-ast/2607>\
**Category:** Implementation\
**Created:** [September 23, 2017, 2:18am UTC](https://talk.commonmark.org/t/egel-or-a-bit-more-documentation-on-the-c-ast/2607 "2017-09-23T02:18:11Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![spruit11](https://cdn.commonmark.org/letter_avatar_proxy/v2/letter/s/58956e/32.png) [@spruit11](https://talk.commonmark.org/u/spruit11)\
**Post date:** [September 23, 2017, 2:18am UTC](https://talk.commonmark.org/t/egel-or-a-bit-more-documentation-on-the-c-ast/2607/1 "2017-09-23T02:18:12Z")

</div>

Dear people,

Thank you for designing and implementing the Commonmark specification. I wrote a [wrapper](https://github.com/egel-lang/egel-mark) around libcmark in a [toy language](https://egel-lang.github.io/) I developed but I now find myself a bit mesmerized by the AST and ‘what it all means.’ For example, the AST is very generic and because every node _can_ have children it isn’t clear when they _must_, _don’t_, or _may_ have them. And what are these custom nodes for?

A bit more documentation on the C AST would be nice in the future.

Thanks, spruit11
