# Expression type identifier symbols

**URL:** <https://discourse.julialang.org/t/expression-type-identifier-symbols/71409>\
**Category:** General Usage\
**Created:** [November 12, 2021, 10:39pm UTC](https://discourse.julialang.org/t/expression-type-identifier-symbols/71409 "2021-11-12T22:39:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![andrey2185](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/andrey2185/32/9889_2.png) [@andrey2185](https://discourse.julialang.org/u/andrey2185)\
**Post date:** [November 12, 2021, 10:39pm UTC](https://discourse.julialang.org/t/expression-type-identifier-symbols/71409/1 "2021-11-12T22:39:22Z")

</div>

hello, is there any documentation on expression type identifier symbols?  
except [Metaprogramming · The Julia Language](https://docs.julialang.org/en/v1/manual/metaprogramming/)  
:call  
:kw  
:macrocall  
:quote  
…

---

<div class="post-metadata">

**Author:** ![goerch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/goerch/32/29122_2.png) [@goerch](https://discourse.julialang.org/u/goerch)\
**Post date:** [November 12, 2021, 11:01pm UTC](https://discourse.julialang.org/t/expression-type-identifier-symbols/71409/2 "2021-11-12T23:01:31Z")

</div>

Excellent question. I’ve recently started macro programming and am quite lost on how to imagine the variations (and constraints/conventions) of the abstract syntax tree.

---

<div class="post-metadata">

**Author:** ![gustaphe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gustaphe/32/18174_2.png) [@gustaphe](https://discourse.julialang.org/u/gustaphe)\
**Post date:** [November 13, 2021, 7:00am UTC](https://discourse.julialang.org/t/expression-type-identifier-symbols/71409/3 "2021-11-13T07:00:22Z")

</div>

Hm. One thing one could do is write a `@collectheads` macro that postwalks an expression tree and stores every head in a vector which it returns. Then run that on a large module. It will not be guaranteed to catch every head, but a lot of them.

---

<div class="post-metadata">

**Author:** ![CameronBieganek](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cameronbieganek/32/6915_2.png) [@CameronBieganek](https://discourse.julialang.org/u/CameronBieganek)\
**Post date:** [November 13, 2021, 1:55pm UTC](https://discourse.julialang.org/t/expression-type-identifier-symbols/71409/4 "2021-11-13T13:55:29Z")

</div>

There is some documentation in the developer section of the manual:

[https://docs.julialang.org/en/v1/devdocs/ast/#Julia-ASTs](https://docs.julialang.org/en/v1/devdocs/ast/#Julia-ASTs)
