Browse Source

FragmentSpread;

bjorn 9 years ago
parent
commit
b96a7825ae
1 changed files with 3 additions and 1 deletions
  1. 3 1
      ast.lua

+ 3 - 1
ast.lua

@@ -11,13 +11,15 @@ local alias = space * name * P(':')
 local value = space * C(R('09') ^ 1) -- todo values are hard
 local value = space * C(R('09') ^ 1) -- todo values are hard
 local argument = space * Ct(Cg(name, 'name') * P(':') * Cg(value, 'value')) * comma
 local argument = space * Ct(Cg(name, 'name') * P(':') * Cg(value, 'value')) * comma
 local arguments = P('(') * Ct(argument ^ 1) * P(')')
 local arguments = P('(') * Ct(argument ^ 1) * P(')')
+local fragmentName = space * (name - 'on')
+local fragmentSpread = space * P('...') * fragmentName
 
 
 -- Nonterminals
 -- Nonterminals
 local graphQL = P {
 local graphQL = P {
   'input',
   'input',
   input = space * V('selectionSet') * -1,
   input = space * V('selectionSet') * -1,
   selectionSet = space * P('{') * space * Ct(V('selection') ^ 0) * space * P('}'),
   selectionSet = space * P('{') * space * Ct(V('selection') ^ 0) * space * P('}'),
-  selection = space * V('field'),
+  selection = space * (V('field') + fragmentSpread),
   field = Ct(space * Cg(alias ^ -1, 'alias') * Cg(name, 'name') * Cg(arguments ^ -1, 'arguments') * Cg(V('selectionSet'), 'children') ^ 0) * comma,
   field = Ct(space * Cg(alias ^ -1, 'alias') * Cg(name, 'name') * Cg(arguments ^ -1, 'arguments') * Cg(V('selectionSet'), 'children') ^ 0) * comma,
 }
 }