• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
                類型推導(dǎo)過(guò)于復(fù)雜,已經(jīng)到了無(wú)法Step In/Over的地步了,于是只好靠輸出大量調(diào)試信息來(lái)解決問(wèn)題。這里給出了我為Kernel FP開發(fā)的一些簡(jiǎn)單的調(diào)試用宏。在不需要調(diào)試信息的時(shí)候,可以通過(guò)簡(jiǎn)單關(guān)閉調(diào)試而將產(chǎn)生調(diào)試信息的運(yùn)行時(shí)負(fù)擔(dān)完全去除。

                這里是宏的代碼:
             1 /*******************************************************************************
             2 Vczh Library++ 2.0
             3 Kernel FP::調(diào)試庫(kù)
             4 開發(fā)者:陳梓瀚
             5 
             6 類:
             7 函數(shù):
             8 *******************************************************************************/
             9 #ifndef VL_KFPPRIVATEDEBUGLIBRARY
            10 #define VL_KFPPRIVATEDEBUGLIBRARY
            11 
            12 #define ENABLE_KFP_DEBUG_MODE
            13 
            14 #ifdef ENABLE_KFP_DEBUG_MODE
            15 
            16 #define Debug_IncreaseLevel()                Info.DebugInfo.IncreaseLevel()
            17 #define Debug_DecreaseLevel()                Info.DebugInfo.DecreaseLevel()
            18 #define Debug_AppendSeparator()                Info.DebugInfo.AppendSeparator()
            19 #define Debug_AppendMessage(Message)        Info.DebugInfo.AppendMessage(Message)
            20 
            21 #else
            22 
            23 #define Debug_IncreaseLevel()
            24 #define Debug_DecreaseLevel()
            25 #define Debug_AppendSeparator()
            26 #define Debug_AppendMessage(Message)
            27 
            28 #endif
            29 
            30 #endif

                于是編譯器通過(guò)閱讀代碼輸出兩個(gè)文件,一個(gè)是推導(dǎo)結(jié)果,另一個(gè)是推導(dǎo)過(guò)程中產(chǎn)生的調(diào)試信息:
             1 【模塊:system】
             2   module system::system
             3   type bool
             4   type char
             5   type int
             6   type list T
             7   type void
             8   ctor empty :: type list T
             9   ctor false :: type bool
            10   ctor list :: <T> -> (system.list <T>-> type list T
            11   ctor true :: type bool
            12   func chr :: (system.int -> system.char) alias chr codefrom -1
            13   func iadd :: (system.int -> (system.int -> system.int)) alias iadd codefrom -1
            14   func idiv :: (system.int -> (system.int -> system.int)) alias idiv codefrom -1
            15   func iequ :: (system.int -> (system.int -> system.bool)) alias iequ codefrom -1
            16   func ilg :: (system.int -> (system.int -> system.bool)) alias ilg codefrom -1
            17   func imod :: (system.int -> (system.int -> system.int)) alias imod codefrom -1
            18   func imul :: (system.int -> (system.int -> system.int)) alias imul codefrom -1
            19   func ism :: (system.int -> (system.int -> system.bool)) alias ism codefrom -1
            20   func isub :: (system.int -> (system.int -> system.int)) alias isub codefrom -1
            21   func ord :: (system.char -> system.int) alias ord codefrom -1
            22 【模塊:sysutils】
            23   module sysutils::sysutils
            24   import system
            25   type pair T1 T2
            26   ctor pair :: <T1> -> <T2> -> type pair T1 T2
            27   func and :: (system.bool -> (system.bool -> system.bool)) codefrom 4
            28   func if T1 :: (system.bool -> (<T1> -> (<T1> -> <T1>))) codefrom 9
            29   func ineg :: (system.int -> system.int) codefrom 11
            30   func not :: (system.bool -> system.bool) codefrom 2
            31   func or :: (system.bool -> (system.bool -> system.bool)) codefrom 6
            32   func pairop T1 T2 T3 :: ((<T1> -> (<T2> -> <T3>)) -> ((sysutils.pair <T1> <T2>-> <T3>)) codefrom 12
            33   func xor :: (system.bool -> (system.bool -> system.bool)) codefrom 8
            34 【模塊:sysutils.1
            35   module sysutils::sysutils.1
            36   import sysutils
            37   name a
            38 【模塊:sysutils.2
            39   module sysutils::sysutils.2
            40   import sysutils
            41   name a
            42   name b
            43 【模塊:sysutils.3
            44   module sysutils::sysutils.3
            45   import sysutils
            46   name a
            47   name b
            48 【模塊:sysutils.4
            49   module sysutils::sysutils.4
            50   import sysutils
            51   name a
            52   name b
            53 【模塊:sysutils.5
            54   module sysutils::sysutils.5
            55   import sysutils
            56   name cond
            57   name f
            58   name t
            59 【模塊:sysutils.5.1
            60   module sysutils::sysutils.5.1
            61   import sysutils.5
            62   func result T1 :: <T1> codefrom 0
            63 【模塊:sysutils.6
            64   module sysutils::sysutils.6
            65   import sysutils
            66   name num
            67 【模塊:sysutils.7
            68   module sysutils::sysutils.7
            69   import sysutils
            70   name op
            71 【模塊:sysutils.7.1
            72   module sysutils::sysutils.7.1
            73   import sysutils.7
            74   name p
            75 【模塊:sysutils.7.1.1
            76   module sysutils::sysutils.7.1.1
            77   import sysutils.7.1
            78   name a
            79   name b

                這里就是調(diào)試信息了。調(diào)試信息給出了類型推導(dǎo)的全過(guò)程:
              1 進(jìn)行一輪推導(dǎo),單元名"system"
              2 *********************************************
              3 進(jìn)行一輪推導(dǎo),單元名"sysutils"
              4     開始推導(dǎo)函數(shù)"sysutils::and"
              5     期望類型:(system.bool -> (system.bool -> system.bool))。
              6     假定參數(shù)"b"的類型:system.bool
              7     假定參數(shù)"a"的類型:system.bool
              8     假定結(jié)果的類型:system.bool
              9         <VL_KfpCodeSelectExpression> 推導(dǎo)表達(dá)式:
             10           select a of
             11             case true : b
             12             case false : false
             13           end
             14         期望類型:system.bool
             15             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             16             a
             17             期望類型:空。
             18             類型[1]:system.bool
             19             源:sysutils.2.a。
             20             產(chǎn)生類型:system.bool
             21         判斷Case匹配表達(dá)式類型:true
             22         Case匹配表達(dá)式類型:system.bool
             23         融合Case匹配表達(dá)式類型:system.bool
             24         判斷Case匹配表達(dá)式類型:false
             25         Case匹配表達(dá)式類型:system.bool
             26         融合Case匹配表達(dá)式類型:system.bool
             27         Case分支期望類型:system.bool
             28             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             29             b
             30             期望類型:system.bool
             31             類型[1]:system.bool
             32             源:sysutils.2.b。
             33         Case分支期望類型:system.bool
             34             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             35             false
             36             期望類型:system.bool
             37             類型[1]:system.bool
             38             源:system.false
             39         推導(dǎo)結(jié)果:system.bool
             40     結(jié)果類型:(system.bool -> (system.bool -> system.bool))。
             41     *********************************************
             42     開始推導(dǎo)函數(shù)"sysutils::if"
             43     期望類型:空。
             44     假定參數(shù)"f"的類型:<$1>
             45     假定參數(shù)"t"的類型:<$2>
             46     假定參數(shù)"cond"的類型:<$3>
             47     假定結(jié)果的類型:<$4>
             48         <VL_KfpCodeLetInExpression> 推導(dǎo)表達(dá)式:
             49           (let
             50             def result = 
             51               select cond of
             52                 case true : t
             53                 case false : f
             54               end
             55           inresult)
             56         期望類型:<$4>
             57         對(duì)內(nèi)部函數(shù)進(jìn)行推導(dǎo)。
             58             開始推導(dǎo)函數(shù)"sysutils.5.1::result"
             59             期望類型:空。
             60             假定結(jié)果的類型:空。
             61                 <VL_KfpCodeSelectExpression> 推導(dǎo)表達(dá)式:
             62                   select cond of
             63                     case true : t
             64                     case false : f
             65                   end
             66                 期望類型:空。
             67                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             68                     cond
             69                     期望類型:空。
             70                     類型[1]:<$3>
             71                     源:sysutils.5.cond。
             72                     產(chǎn)生類型:<$3>
             73                 判斷Case匹配表達(dá)式類型:true
             74                 Case匹配表達(dá)式類型:system.bool
             75                 融合Case匹配表達(dá)式類型:system.bool
             76                 判斷Case匹配表達(dá)式類型:false
             77                 Case匹配表達(dá)式類型:system.bool
             78                 融合Case匹配表達(dá)式類型:system.bool
             79                 Case分支期望類型:空。
             80                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             81                     t
             82                     期望類型:空。
             83                     類型[1]:<$2>
             84                     源:sysutils.5.t。
             85                     產(chǎn)生類型:<$2>
             86                 Case分支期望類型:<$2>
             87                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             88                     f
             89                     期望類型:<$2>
             90                     類型[1]:<$1>
             91                     源:sysutils.5.f。
             92                     產(chǎn)生類型:<$2>
             93                 推導(dǎo)結(jié)果:<$2>
             94             結(jié)果類型:<$2>
             95             *********************************************
             96         對(duì)表達(dá)式進(jìn)行推導(dǎo)。
             97             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
             98             result
             99             期望類型:<$4>
            100             類型[1]:<$2>
            101             源:sysutils.5.1.result。
            102             產(chǎn)生類型:<$4>
            103         結(jié)果類型:(system.bool -> (<$4> -> (<$4> -> <$4>)))。
            104         *********************************************
            105         開始推導(dǎo)函數(shù)"sysutils::ineg"
            106         期望類型:(system.int -> system.int)。
            107         假定參數(shù)"num"的類型:system.int
            108         假定結(jié)果的類型:system.int
            109             <VL_KfpCodeInvokeExpression> 推導(dǎo)表達(dá)式:
            110             ((isub 0) num)
            111             期望類型:system.int
            112                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            113                 num
            114                 期望類型:空。
            115                 類型[1]:system.int
            116                 源:sysutils.6.num。
            117                 產(chǎn)生類型:system.int
            118             推導(dǎo)的參數(shù)類型:system.int
            119                 <VL_KfpCodeInvokeExpression> 推導(dǎo)表達(dá)式:
            120                 (isub 0)
            121                 期望類型:(system.int -> system.int)。
            122                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            123                     0
            124                     期望類型:空。
            125                     類型[1]:system.int
            126                     源:<INTEGER-CONSTANT>
            127                     產(chǎn)生類型:system.int
            128                 推導(dǎo)的參數(shù)類型:system.int
            129                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            130                     isub
            131                     期望類型:(system.int -> (system.int -> system.int))。
            132                     類型[1]:(system.int -> (system.int -> system.int))。
            133                     源:system.isub。
            134                 推導(dǎo)的函數(shù)類型:(system.int -> (system.int -> system.int))。
            135                 推導(dǎo)結(jié)果:(system.int -> system.int)。
            136             推導(dǎo)的函數(shù)類型:(system.int -> system.int)。
            137             推導(dǎo)結(jié)果:system.int
            138         結(jié)果類型:(system.int -> system.int)。
            139         *********************************************
            140         開始推導(dǎo)函數(shù)"sysutils::not"
            141         期望類型:(system.bool -> system.bool)。
            142         假定參數(shù)"a"的類型:system.bool
            143         假定結(jié)果的類型:system.bool
            144             <VL_KfpCodeSelectExpression> 推導(dǎo)表達(dá)式:
            145               select a of
            146                 case true : false
            147                 case false : true
            148               end
            149             期望類型:system.bool
            150                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            151                 a
            152                 期望類型:空。
            153                 類型[1]:system.bool
            154                 源:sysutils.1.a。
            155                 產(chǎn)生類型:system.bool
            156             判斷Case匹配表達(dá)式類型:true
            157             Case匹配表達(dá)式類型:system.bool
            158             融合Case匹配表達(dá)式類型:system.bool
            159             判斷Case匹配表達(dá)式類型:false
            160             Case匹配表達(dá)式類型:system.bool
            161             融合Case匹配表達(dá)式類型:system.bool
            162             Case分支期望類型:system.bool
            163                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            164                 false
            165                 期望類型:system.bool
            166                 類型[1]:system.bool
            167                 源:system.false
            168             Case分支期望類型:system.bool
            169                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            170                 true
            171                 期望類型:system.bool
            172                 類型[1]:system.bool
            173                 源:system.true
            174             推導(dǎo)結(jié)果:system.bool
            175         結(jié)果類型:(system.bool -> system.bool)。
            176         *********************************************
            177         開始推導(dǎo)函數(shù)"sysutils::or"
            178         期望類型:(system.bool -> (system.bool -> system.bool))。
            179         假定參數(shù)"b"的類型:system.bool
            180         假定參數(shù)"a"的類型:system.bool
            181         假定結(jié)果的類型:system.bool
            182             <VL_KfpCodeSelectExpression> 推導(dǎo)表達(dá)式:
            183               select a of
            184                 case true : true
            185                 case false : b
            186               end
            187             期望類型:system.bool
            188                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            189                 a
            190                 期望類型:空。
            191                 類型[1]:system.bool
            192                 源:sysutils.3.a。
            193                 產(chǎn)生類型:system.bool
            194             判斷Case匹配表達(dá)式類型:true
            195             Case匹配表達(dá)式類型:system.bool
            196             融合Case匹配表達(dá)式類型:system.bool
            197             判斷Case匹配表達(dá)式類型:false
            198             Case匹配表達(dá)式類型:system.bool
            199             融合Case匹配表達(dá)式類型:system.bool
            200             Case分支期望類型:system.bool
            201                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            202                 true
            203                 期望類型:system.bool
            204                 類型[1]:system.bool
            205                 源:system.true
            206             Case分支期望類型:system.bool
            207                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            208                 b
            209                 期望類型:system.bool
            210                 類型[1]:system.bool
            211                 源:sysutils.3.b。
            212             推導(dǎo)結(jié)果:system.bool
            213         結(jié)果類型:(system.bool -> (system.bool -> system.bool))。
            214         *********************************************
            215         開始推導(dǎo)函數(shù)"sysutils::pairop"
            216         期望類型:空。
            217         假定參數(shù)"op"的類型:<$1>
            218         假定結(jié)果的類型:<$2>
            219             <VL_KfpCodeLambdaExpression> 推導(dǎo)表達(dá)式:
            220             (p -> 
            221               select p of
            222                 case ((pair a) b) : ((op a) b)
            223               end)
            224             期望類型:<$2>
            225             融合后的期望類型:(<$3> -> <$4>)。
            226                 <VL_KfpCodeSelectExpression> 推導(dǎo)表達(dá)式:
            227                   select p of
            228                     case ((pair a) b) : ((op a) b)
            229                   end
            230                 期望類型:<$4>
            231                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            232                     p
            233                     期望類型:空。
            234                     類型[1]:<$3>
            235                     源:sysutils.7.1.p。
            236                     產(chǎn)生類型:<$3>
            237                 判斷Case匹配表達(dá)式類型:((pair a) b)。
            238                 Case匹配表達(dá)式類型:(sysutils.pair <$5> <$6>)。
            239                 融合Case匹配表達(dá)式類型:(sysutils.pair <$5> <$6>)。
            240                 Case分支期望類型:<$4>
            241                     <VL_KfpCodeInvokeExpression> 推導(dǎo)表達(dá)式:
            242                     ((op a) b)
            243                     期望類型:<$4>
            244                         <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            245                         b
            246                         期望類型:空。
            247                         類型[1]:<$6>
            248                         源:sysutils.7.1.1.b。
            249                         產(chǎn)生類型:<$6>
            250                     推導(dǎo)的參數(shù)類型:<$6>
            251                         <VL_KfpCodeInvokeExpression> 推導(dǎo)表達(dá)式:
            252                         (op a)
            253                         期望類型:(<$6> -> <$4>)。
            254                             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            255                             a
            256                             期望類型:空。
            257                             類型[1]:<$5>
            258                             源:sysutils.7.1.1.a。
            259                             產(chǎn)生類型:<$5>
            260                         推導(dǎo)的參數(shù)類型:<$5>
            261                             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            262                             op
            263                             期望類型:(<$5> -> (<$6> -> <$4>))。
            264                             類型[1]:<$1>
            265                             源:sysutils.7.op。
            266                             產(chǎn)生類型:(<$5> -> (<$6> -> <$4>))。
            267                         推導(dǎo)的函數(shù)類型:(<$5> -> (<$6> -> <$4>))。
            268                         推導(dǎo)結(jié)果:(<$6> -> <$4>)。
            269                     推導(dǎo)的函數(shù)類型:(<$6> -> <$4>)。
            270                     推導(dǎo)結(jié)果:<$4>
            271                 推導(dǎo)結(jié)果:<$4>
            272             推導(dǎo)結(jié)果:((sysutils.pair <$5> <$6>-> <$4>)。
            273         結(jié)果類型:((<$5> -> (<$6> -> <$4>)) -> ((sysutils.pair <$5> <$6>-> <$4>))。
            274         *********************************************
            275         開始推導(dǎo)函數(shù)"sysutils::xor"
            276         期望類型:(system.bool -> (system.bool -> system.bool))。
            277         假定參數(shù)"b"的類型:system.bool
            278         假定參數(shù)"a"的類型:system.bool
            279         假定結(jié)果的類型:system.bool
            280             <VL_KfpCodeSelectExpression> 推導(dǎo)表達(dá)式:
            281               select a of
            282                 case true : (not b)
            283                 case false : b
            284               end
            285             期望類型:system.bool
            286                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            287                 a
            288                 期望類型:空。
            289                 類型[1]:system.bool
            290                 源:sysutils.4.a。
            291                 產(chǎn)生類型:system.bool
            292             判斷Case匹配表達(dá)式類型:true
            293             Case匹配表達(dá)式類型:system.bool
            294             融合Case匹配表達(dá)式類型:system.bool
            295             判斷Case匹配表達(dá)式類型:false
            296             Case匹配表達(dá)式類型:system.bool
            297             融合Case匹配表達(dá)式類型:system.bool
            298             Case分支期望類型:system.bool
            299                 <VL_KfpCodeInvokeExpression> 推導(dǎo)表達(dá)式:
            300                 (not b)
            301                 期望類型:system.bool
            302                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            303                     b
            304                     期望類型:空。
            305                     類型[1]:system.bool
            306                     源:sysutils.4.b。
            307                     產(chǎn)生類型:system.bool
            308                 推導(dǎo)的參數(shù)類型:system.bool
            309                     <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            310                     not
            311                     期望類型:(system.bool -> system.bool)。
            312                     找不到符號(hào)"not"或該符號(hào)不具有可參考的類型信息,無(wú)法進(jìn)行類型推導(dǎo)。
            313                 推導(dǎo)的函數(shù)類型:空。
            314                 推導(dǎo)失敗。
            315             Case分支期望類型:system.bool
            316                 <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            317                 b
            318                 期望類型:system.bool
            319                 類型[1]:system.bool
            320                 源:sysutils.4.b。
            321             推導(dǎo)結(jié)果:system.bool
            322         結(jié)果類型:(system.bool -> (system.bool -> system.bool))。
            323         *********************************************
            324     *********************************************
            325 進(jìn)行一輪推導(dǎo),單元名"sysutils"
            326     開始推導(dǎo)函數(shù)"sysutils::if"
            327     期望類型:(system.bool -> (<T1> -> (<T1> -> <T1>)))。
            328     假定參數(shù)"f"的類型:<$1>
            329     假定參數(shù)"t"的類型:<$1>
            330     假定參數(shù)"cond"的類型:system.bool
            331     假定結(jié)果的類型:<$1>
            332         <VL_KfpCodeLetInExpression> 推導(dǎo)表達(dá)式:
            333           (let
            334             def result = 
            335               select cond of
            336                 case true : t
            337                 case false : f
            338               end
            339           inresult)
            340         期望類型:<$1>
            341         對(duì)內(nèi)部函數(shù)進(jìn)行推導(dǎo)。
            342         對(duì)表達(dá)式進(jìn)行推導(dǎo)。
            343             <VL_KfpCodePrimitiveExpression> 推導(dǎo)表達(dá)式:
            344             result
            345             期望類型:<$1>
            346             類型[1]:<T1>
            347             源:sysutils.5.1.result。
            348             產(chǎn)生類型:<$1>
            349         結(jié)果類型:(system.bool -> (<$1> -> (<$1> -> <$1>)))。
            350         *********************************************
            351     *********************************************
            posted on 2008-10-29 10:04 陳梓瀚(vczh) 閱讀(2257) 評(píng)論(3)  編輯 收藏 引用 所屬分類: 腳本技術(shù)

            評(píng)論:
            # re: 改進(jìn)Kernel FP編譯器,生成類型推導(dǎo)的調(diào)試信息 2008-10-31 18:59 | 金山毒霸2008
            這么完整的類型推導(dǎo)的全過(guò)程,太寶貴了。  回復(fù)  更多評(píng)論
              
            # re: 改進(jìn)Kernel FP編譯器,生成類型推導(dǎo)的調(diào)試信息 2008-11-29 22:32 | jge
            其實(shí),在大多數(shù)通用向的編程語(yǔ)言中(不包含特殊的語(yǔ)義),類型推導(dǎo)是很簡(jiǎn)單的。我看你貼出的log你可能對(duì)類型是什么還比較模糊,不過(guò)方向是對(duì),即語(yǔ)法樹中節(jié)點(diǎn)對(duì)子節(jié)點(diǎn)提出期望類型,子節(jié)點(diǎn)與該類型做unification。 google下Hindley–Milner吧。  回復(fù)  更多評(píng)論
              
            # re: 改進(jìn)Kernel FP編譯器,生成類型推導(dǎo)的調(diào)試信息 2008-11-30 10:52 | 陳梓瀚(vczh)
            通用的編程語(yǔ)言的類型,幾乎只有python是需要推導(dǎo)的。我的類型指的是形式語(yǔ)言中“類型系統(tǒng)”的那種類型。

            Kernel FP推導(dǎo)的主要問(wèn)題在于,需要推導(dǎo)模板參數(shù),而且參數(shù)還可能是另一種模板函數(shù)。而且let-in語(yǔ)句帶來(lái)的互相引用的問(wèn)題也很復(fù)雜。  回復(fù)  更多評(píng)論
              
            久久人妻无码中文字幕| 久久精品国产网红主播| 国产精品熟女福利久久AV| 国产亚洲精品自在久久| 久久综合给合久久国产免费| 欧美激情精品久久久久久久| 99久久精品费精品国产一区二区| 亚洲午夜久久久影院| 一级女性全黄久久生活片免费| 久久午夜福利电影| 久久热这里只有精品在线观看| 久久久久久国产a免费观看黄色大片 | 性做久久久久久久久久久| 久久精品国产第一区二区| 久久综合九色综合欧美就去吻| 热久久国产欧美一区二区精品| 日韩久久无码免费毛片软件| 久久国产精品视频| 亚洲精品tv久久久久| 99久久综合国产精品免费| 亚洲中文字幕无码久久2020| 中文字幕久久精品无码| 久久精品九九亚洲精品| 91精品国产91热久久久久福利| 亚洲国产视频久久| 久久综合九色综合网站| 久久精品www| 香蕉久久夜色精品国产2020| 欧美精品九九99久久在观看| 一本一道久久a久久精品综合| 色综合久久无码五十路人妻| 久久精品亚洲精品国产色婷| 精品永久久福利一区二区| 99精品伊人久久久大香线蕉| 国产精品热久久无码av| 久久人人青草97香蕉| .精品久久久麻豆国产精品| 久久国产福利免费| 久久精品亚洲一区二区三区浴池| 国产精品永久久久久久久久久 | 久久中文字幕精品|