@@ -22,16 +22,24 @@ local FluentNode = class({
2222 end
2323 end
2424 end
25- if (node [1 ] and # node > 0 ) then
26- self .elements = {}
27- tablex .insertvalues (self .elements , tablex .imap (node_to_type , node ))
25+ tablex .foreachi (node , function (n ) self :insert (node_to_type (n )) end )
26+ end ,
27+
28+ insert = function (self , node )
29+ if type (node ) ~= " table" then return nil end
30+ if node :is_a (node_types .Identifier ) then
31+ self .id = node
32+ elseif node :is_a (node_types .Pattern ) then
33+ self .value = node
34+ else
35+ if not self .elements then self .elements = {} end
36+ table.insert (self .elements , node )
2837 end
2938 end ,
3039
3140 dump_ast = function (self )
3241 local ast = { type = self .type }
3342 for k , v in pairs (self ) do ast [k ] = v end
34- ast .identifier = nil
3543 return ast
3644 end ,
3745
@@ -70,17 +78,6 @@ node_types.Message = class({
7078 _base = FluentNode ,
7179 _init = function (self , node )
7280 self :super (node )
73- for key , value in ipairs (self .elements ) do
74- if value :is_a (node_types .Identifier ) then
75- self .identifier = value .name
76- self .id = value
77- self .elements [key ] = nil
78- elseif value :is_a (node_types .Pattern ) then
79- self .value = value
80- self .elements [key ] = nil
81- end
82- end
83- if # self .elements == 0 then self .elements = nil end
8481 self .attributes = {}
8582 end ,
8683 format = function (self , parameters )
@@ -170,6 +167,13 @@ node_types.NumberLiteral = class({
170167 end
171168 })
172169
170+ node_types .VariableReference = class ({
171+ _base = FluentNode ,
172+ _init = function (self , node )
173+ self :super (node )
174+ end
175+ })
176+
173177node_types .Comment = class ({
174178 appendable = true ,
175179 _base = FluentNode ,
@@ -292,7 +296,7 @@ local FluentResource = class({
292296 insert = function (self , node )
293297 table.insert (self .body , node )
294298 if node :is_a (node_types .Message ) then
295- self .index [node .identifier ] = # self .body
299+ self .index [node .id . name ] = # self .body
296300 end
297301 end ,
298302
0 commit comments