Changes from Python 3.4 to Python 3.5ΒΆ

--- /home/docs/checkouts/readthedocs.org/user_builds/restrictedpython/checkouts/latest/docs/contributing/ast/python3_4.ast
+++ /home/docs/checkouts/readthedocs.org/user_builds/restrictedpython/checkouts/latest/docs/contributing/ast/python3_5.ast
@@ -1,7 +1,7 @@
--- Python 3.4 AST
+-- Python 3.5 AST
 -- ASDL's six builtin types are identifier, int, string, bytes, object, singleton
 
-module Python version "3.4"
+module Python version "3.5"
 {
     mod = Module(stmt* body)
         | Interactive(stmt* body)
@@ -15,11 +15,15 @@
                        stmt* body,
                        expr* decorator_list,
                        expr? returns)
+         | AsyncFunctionDef(identifier name,
+                            arguments args,
+                            stmt* body,
+                            expr* decorator_list,
+                            expr? returns)
+
          | ClassDef(identifier name,
                     expr* bases,
                     keyword* keywords,
-                    expr? starargs,
-                    expr? kwargs,
                     stmt* body,
                     expr* decorator_list)
          | Return(expr? value)
@@ -30,9 +34,11 @@
 
          -- use 'orelse' because else is a keyword in target languages
          | For(expr target, expr iter, stmt* body, stmt* orelse)
+         | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse)
          | While(expr test, stmt* body, stmt* orelse)
          | If(expr test, stmt* body, stmt* orelse)
          | With(withitem* items, stmt* body)
+         | AsyncWith(withitem* items, stmt* body)
 
          | Raise(expr? exc, expr? cause)
          | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody)
@@ -65,6 +71,7 @@
          | DictComp(expr key, expr value, comprehension* generators)
          | GeneratorExp(expr elt, comprehension* generators)
          -- the grammar constrains where yield expressions can occur
+         | Await(expr value)
          | Yield(expr? value)
          | YieldFrom(expr value)
          -- need sequences for compare to distinguish between
@@ -72,9 +79,7 @@
          | Compare(expr left, cmpop* ops, expr* comparators)
          | Call(expr func,
                 expr* args,
-                keyword* keywords,
-                expr? starargs,
-                expr? kwargs)
+                keyword* keywords)
          | Num(object n) -- a number as a PyObject.
          | Str(string s) -- need to specify raw, unicode, etc?
          | Bytes(bytes s)
@@ -109,6 +114,7 @@
     operator = Add
              | Sub
              | Mult
+             | MatMult
              | Div
              | Mod
              | Pow
@@ -150,8 +156,8 @@
     arg = (identifier arg, expr? annotation)
           attributes (int lineno, int col_offset)
 
-    -- keyword arguments supplied to call
-    keyword = (identifier arg, expr value)
+    -- keyword arguments supplied to call (NULL identifier for **kwargs)
+    keyword = (identifier? arg, expr value)
 
     -- import name with optional 'as' alias.
     alias = (identifier name, identifier? asname)