コード例 #1
0
ファイル: parser.py プロジェクト: W-M-T/gsc
def Exp():
    a = yield ConvExp
    b = yield ps.many(ExpMore)

    b = flatten(b)
    return AST.DEFERREDEXPR(contents=[a, *b])
コード例 #2
0
ファイル: parser.py プロジェクト: W-M-T/gsc
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])])
コード例 #3
0
ファイル: AST_prettyprinter.py プロジェクト: W-M-T/gsc
 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, "%%"),