<blockquote>
<p>I wonder what makes you guys think this list vs tree(AST) makes things<br>
fundamentally unworkable? It's a complete non-issue to me. It's just a<br>
representation that can be converted as needed.</p>
</blockquote>

<p>No, it's not just a representation - there's completely different information stored in AST. AST contains the complete source code in the form of a tree - see e.g. the picture here:</p>

<p><a href="https://en.wikipedia.org/wiki/Abstract_syntax_tree">https://en.wikipedia.org/wiki/Abstract_syntax_tree</a></p>

<p>You could dump the tree and get back the original source code (except things like whitespace). AST contains everything - operators, keywords, control flow structures etc. The shape of the tree also captures things like operator precedence, block nesting etc.</p>

<p>Moreover, the tree will be very language-specific as it really captures the whole syntax of the given language.</p>

<p>ctags doesn't generate AST and it never will because it only serves for symbol indexing. The only output of it is a list of named symbols, nothing else is stored during parsing. ctags always creates just a flat list of tags - there's no need to store them into tree - you won't gain any extra information by this. This won't "improve" TM.</p>

<p>I believe for a really smart autocompletion you need the info from AST and this is so language-specific that it cannot be done in a generic way.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/1187#issuecomment-243508967">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJye6-vJbh2QO5AJ5xr_1X9ZDKS0yks5qlGMDgaJpZM4JqVBL">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/ABDrJ0Kol8PKH6k0lV2uyQQ_Uh8cL_WGks5qlGMDgaJpZM4JqVBL.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/geany/geany/pull/1187#issuecomment-243508967"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@techee in #1187: \u003eI wonder what makes you guys think this list vs tree(AST) makes things\r\nfundamentally unworkable? It's a complete non-issue to me. It's just a\r\nrepresentation that can be converted as needed.\r\n\r\nNo, it's not just a representation - there's completely different information stored in AST. AST contains the complete source code in the form of a tree - see e.g. the picture here:\r\n\r\nhttps://en.wikipedia.org/wiki/Abstract_syntax_tree\r\n\r\nYou could dump the tree and get back the original source code (except things like whitespace). AST contains everything - operators, keywords, control flow structures etc. The shape of the tree also captures things like operator precedence, block nesting etc.\r\n\r\nMoreover, the tree will be very language-specific as it really captures the whole syntax of the given language.\r\n\r\nctags doesn't generate AST and it never will because it only serves for symbol indexing. The only output of it is a list of named symbols, nothing else is stored during parsing. ctags always creates just a flat list of tags - there's no need to store them into tree - you won't gain any extra information by this. This won't \"improve\" TM.\r\n\r\nI believe for a really smart autocompletion you need the info from AST and this is so language-specific that it cannot be done in a generic way."}],"action":{"name":"View Pull Request","url":"https://github.com/geany/geany/pull/1187#issuecomment-243508967"}}}</script>