+***** TODO Add mdats to IR to handle multiple mappings for archetypes
+ CLOCK: [2016-10-20 Thu 20:12]--[2016-10-20 Thu 23:12] => 3:00
+ Recording: Lexer Lex(Mapfile)
+ Maps can have variants and animations. Adding a state machine
+ into the lexer that will parse png files and return its frame information.
+ CLOCK: [2016-10-20 Thu 19:28]--[2016-10-20 Thu 19:46] => 0:18
+ insert_mdat now compiles
+ CLOCK: [2016-10-20 Thu 18:10]--[2016-10-20 Thu 18:53] => 0:43
+ CLOCK: [2016-10-20 Thu 15:24]--[2016-10-20 Thu 16:24] => 1:00
+ CLOCK: [2016-10-20 Thu 13:13]--[2016-10-20 Thu 14:10] => 0:57
+ #+BEGIN: clocktable :maxlevel 2 :scope subtree
+ #+CAPTION: Clock summary at [2016-10-20 Thu 14:10]
+ | Headline | Time |
+ |--------------+--------|
+ | *Total time* | *0:57* |
+ |--------------+--------|
+ #+END:
+****** DONE Create variant_list in odat
+****** DONE Init num_variants
+****** DONE Create mdat struct
+****** DONE Create new quad struct
+****** DONE Change insert_quad() to insert x,y,z, and ref_id
+****** DONE Change parser.y to include quad_list
+****** DONE In elements, populate parent_id with set. In sets, set parent_id to null.
+****** DONE Incorporate mdat into parser and ir
+****** TODO Implement Lexer_lexmapfile
+Where are we storing the map file animations? Mdats will have framesheets.
+****** TODO Remove set name token in elements being passed back
+****** DONE Lexer_lex should pass control to lexer_lexmapfile
+When it recognizes a '_m\0', call lexer_lexmapfile
+The const str passed to lexer_lex is screwing up the state machine because
+the suffix isnt truly pruned (so pe == . instead of \0)
+Mappings come before archetypes.
+****** TODO
+****** TODO
+****** TODO
+****** TODO
+****** TODO
+parent_id should be pointer or ref_id? pointer
+Root mandatory, hitbox optional? Only a variant list?
+mopen/close in skeleton rule requires lexer to pass a operator
+for every new skeleton
+inesrt_mdat() needs more?
+