def Exp(): a = yield ConvExp b = yield ps.many(ExpMore) b = flatten(b) return AST.DEFERREDEXPR(contents=[a, *b])
def PrefixOpExp(): op = yield ps.token(TOKEN.OP_IDENTIFIER) exp = yield ConvExp return AST.FUNCALL(kind=FunKind.PREFIX, id=op, args=[AST.DEFERREDEXPR(contents=[exp])])
imports=[ AST.IMPORT(name=Token(None, TOKEN.IDENTIFIER, "stdlib"), importlist=None), AST.IMPORT(name=Token(None, TOKEN.IDENTIFIER, "math"), importlist=[ AST.IMPORTNAME(name=Token(None, TOKEN.IDENTIFIER, "power"), alias=Token(None, TOKEN.IDENTIFIER, "pow")) ]) ], decls=[ AST.VARDECL( type=None, id=Token(None, TOKEN.IDENTIFIER, "temp"), expr=AST.DEFERREDEXPR(contents=[Token(None, TOKEN.INT, 2)])), AST.VARDECL( type=AST.TYPE(val=AST.BASICTYPE( type_id=Token(None, TOKEN.TYPE_IDENTIFIER, "Char")) ), # TODO make this work for type node id=Token(None, TOKEN.IDENTIFIER, "hey"), expr=AST.DEFERREDEXPR( contents=[Token(None, TOKEN.CHAR, 'a')])), AST.TYPESYN(type_id=Token(None, TOKEN.TYPE_IDENTIFIER, "String"), def_type=AST.TYPE(val=AST.LISTTYPE(type=AST.TYPE( val=AST.BASICTYPE(type_id=Token( None, TOKEN.TYPE_IDENTIFIER, "Char")))))), AST.FUNDECL( kind=FunKind.INFIXL, fixity=Token(None, TOKEN.INT, 4), id=Token(None, TOKEN.OP_IDENTIFIER, "%%"),