日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++hello world代码_在 Rust 代码中编写 Python 是种怎样的体验?

發布時間:2023/12/19 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++hello world代码_在 Rust 代码中编写 Python 是种怎样的体验? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | Mara Bos,Rust資深工程師譯者 | Arvin 責編 | 屠敏頭圖 | CSDN 下載自東方 IC出品 | CSDN(ID:CSDNnews)

以下為譯文:

大約一年前,我發布了一個名為inline-python(https://crates.io/crates/inline-python)的Rust類庫,它允許大家使用python!{ .. }宏輕松地將一些Python混合到Rust代碼中。在本系列中,我將從頭展示開發此類庫的過程。

預覽

如果不熟悉inline-python類庫,你可以執行以下操作:

main()?{

它允許你將Python代碼直接嵌入Rust代碼行之間,甚至直接在Python代碼中使用Rust變量。

我們將從一個比這個簡單得多的案例開始,然后逐步努力以達到這個結果(甚至更多!)。

運行Python代碼

首先,讓我們看一下如何在Rust中運行Python代碼。讓我們嘗試使第一個簡單的示例生效:

fn?main()?{

我們可以使用std::process::命令來運行python可執行文件并傳遞python代碼,從而實現run_python,但如果我們希望能夠定義和讀回Python變量,那么最好從使用PyO3庫開始。

PyO3為我們提供了Python的Rust綁定。它很好地包裝了Python C API,使我們可以直接在Rust中與各種Python對象交互。(甚至在Rust中編寫Python庫,但這是另一個主題。)

它的Python::run?功能完全符合我們的需求。它將Python代碼作為&str,并允許我們使用兩個可選的PyDicts 來定義范圍內的任何變量。讓我們試一試吧:

fn?run_python(code:?&str)?{
????let?py?=?pyo3::Python::acquire_gil();?//?Acquire?the?'global?interpreter?lock',?as?Python?is?not?thread-safe.
????py.python().run(code,?None,?None).unwrap();?//?No?locals,?no?globals.
}
$?cargo?run
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.29s
?????Running?`target/debug/scratchpad`
Hello?...
...?World!

看,這就成功了!

基于規則的宏

在字符串中編寫Python不是最便捷的方法,所以我們嘗試改進它。宏允許我們在Rust中自定義語法,所以讓我們嘗試一下:

fn?main()?{
????println!("Hello?...");
????python!?{
????????print("...?World!")
????}
}

宏通常是使用macro_rules!進行定義,您可以基于標記和表達式之類的內容使用高級“查找和替換”規則來定義宏。(有關macro_rules!的介紹請參見Rust Book中有關宏的章節,有關Rust宏所有的細節都可以在《Rust宏的小書》中找到。)

由macro_rules!定義的宏在編譯時無法執行任何代碼,這些宏僅是應用了基于模式的替換規則。它非常適合vec![],甚至是lazy_static!{ .. },但對于解析和編譯正則表達式(例如regex!("a.*b"))之類的功能而言,還不夠強大。

在宏的匹配規則中,我們可以匹配表達式,標識符,類型和許多其他內容。由于“有效的Python代碼”不是一個選項,所以我們只能讓宏接受所有內容:大量的原始的符號:

macro_rules!?python?{
????($($code:tt)*)?=>?{
????????...
????}
}

(有關macro_rules!工作原理的詳細信息,請參見上面鏈接的資源。)

對宏的調用應該產生run_python(".."),這是一個包裹了所有Python代碼的字符串文本。幸運的是:有一個內建宏為我們把內容放到一個字符串里,叫做stringify!,因此我不必從頭開始。

macro_rules!?python?{
????($($code:tt)*)?=>?{
????????run_python(stringify!($($code)*));
????}
}

結果如下:

$?cargo?r
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.32s
?????Running?`target/debug/scratchpad`
Hello?...
...?World!

如愿以償得到了期望結果!

但是,如果我們有不止一行的Python代碼會怎樣?

fn?main()?{
????println!("Hello?...");
????python!?{
????????print("...?World!")
????????print("Bye.")
????}
}
$?cargo?r
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.31s
?????Running?`target/debug/scratchpad`
Hello?...
thread?'main'?panicked?at?'called?`Result::unwrap()`?on?an?`Err`?value:?PyErr?{?type:?Py(0x7f1c0a5649a0,?PhantomData)?}',?src/main.rs:9:5
note:?run?with?`RUST_BACKTRACE=1`?environment?variable?to?display?a?backtrace

很不幸,我們失敗了。

為了進行調試,我們需要正確輸出PyErr,并顯示我們傳遞給Python::run的確切Python代碼:

fn?run_python(code:?&str)?{
????println!("-----");
????println!("{}",?code);
????println!("-----");
????let?py?=?pyo3::Python::acquire_gil();
????if?let?Err(e)?=?py.python().run(code,?None,?None)?{
????????e.print(py.python());
????}
}
$?cargo?r
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.27s
?????Running?`target/debug/scratchpad`
Hello?...
-----
print("...?World!")?print("Bye.")
-----
??File?"",?line?1
????print("...?World!")?print("Bye.")
????????????????????????^
SyntaxError:?invalid?syntax

很顯然,兩行Python代碼落在同一行,在Python中這是無效的語法。

現在我們遇到了必須克服的最大問題:stringify!把空白符搞亂了.

空白符和符號

讓我們仔細研究一下stringify!:

fn?main()?{$?cargo?r
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.21s
?????Running?`target/debug/scratchpad`
a?123?b?c?x(y?+?z)?...

它不僅刪除了所有不必要的空格,還刪除了注釋。因為它的工作原理是處理單詞(token),不再是源代碼里面的:a,123,b等。

Rustc編譯器做的第一件事就是將源代碼分為單詞,這使得解析后的工作更容易進行,不必處理諸如1,2,3,這樣的個別字符,只需處理諸如“integer literal 123”這樣的單詞。另外,空白和注釋在分詞之后就消失了,因為它們對編譯器來說沒有意義。

stringify!()是一種將一串單詞轉換回字符串的方法,但它是基于“最佳效果”的:它將單詞轉換回文本,并且僅在需要時才在單詞周圍插入空格(以避免將b、c轉換為bc)。

所以這是一個死胡同。Rustc不小心把寶貴的空白符丟掉了,但這在Python中非常重要。

我們可以嘗試猜測一下哪些代碼的空格必須用換行符代替,但是縮進肯定會成為一個問題:

fn?main()?{
????let?a?=?stringify!(
????????if?False:
????????????x()
????????y()
????);
????let?b?=?stringify!(
????????if?False:
????????????x()
????????????y()
????);
????dbg!(a);
????dbg!(b);
????dbg!(a?==?b);
}
$?cargo?r
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.20s
?????Running?`target/debug/scratchpad`
[src/main.rs:12]?a?=?"if?False?:?x()?y()"
[src/main.rs:13]?b?=?"if?False?:?x()?y()"
[src/main.rs:14]?a?==?b?=?true

這兩個Python代碼片段有不同的含義,但是stringify!給了我們相同的結果。

在放棄之前,讓我們嘗試一下其他類型的宏。

過程宏

Rust的過程宏是定義宏的另一種方法。盡管macro_rules!只能定義“函數樣式的宏”(帶有!標記的宏),過程宏也可以定義自定義派生宏(例如#[derive(Stuff)])和屬性宏(例如#[stuff])。

過程宏是作為編譯器插件實現的。您需要編寫一個函數,該函數可以訪問編譯器看到的單詞流,然后就可以執行所需的任何操作,最后需要返回一個新的單詞流供編譯器使用(或者用于自定義的用途):

#[proc_macro]

上述單詞流不夠好。因為我們需要源代碼,而不僅僅是單詞。雖然目前還沒有成功,但是讓我們繼續吧,也許過程宏更大的靈活性能夠解決問題。

由于過程宏在編譯過程中運行Rust代碼,因此它們需要使用單獨的proc-macro類庫中,這個類庫在您編譯其他內容之前已經被編譯好。

new?--lib?python-macro

查看python-macro/Cargo.toml:

[lib]

查看Cargo.toml:

[dependencies]

讓我們從一個只有panics (todo!())的實現開始,在輸出TokenStream之后:

//?python-macro/src/lib.rs//?src/main.rs$?cargo?r
???Compiling?python-macro?v0.1.0
???Compiling?scratchpad?v0.1.0
error[E0658]:?procedural?macros?cannot?be?expanded?to?statements
?-->?src/main.rs:5:5
??|
5?|?/?????python!?{
6?|?|?????????print("...?World!")
7?|?|?????????print("Bye.")
8?|?|?????}
??|?|_____^
??|
??=?note:?see?issue?#54727??for?more?information
??=?help:?add?`#![feature(proc_macro_hygiene)]`?to?the?crate?attributes?to?enable

天啊,這里發生了什么?

Rust錯誤為“?過程宏不能擴展為語句?”,以及有關啟用“hygienic macros”的內容。Macro hygiene是Rust宏的出色功能,不會意外地將任何名稱“泄漏”給外界(反之亦然)。如果宏擴展使用了名為的x的臨時變量,則它將與宏外部的任何代碼中出現的變量x分開。

但是,此功能對于過程宏還不穩定。因此,過程宏除了作為一個單獨的項(例如在文件范圍內,但不在函數內)之外,不允許出現在任何地方。

接下來,我們會發現存在一個非常可怕但令人著迷的解決方法—讓我們啟用實驗功能#![feature(proc_macro_hygiene)]并繼續我們的冒險。

(如果你將來讀到這篇文章時,proc_macro_hygiene已經穩定下來了:你可以跳過最后幾段。^ ^)

'1i#![feature(proc_macro_hygiene)]'?src/main.rs

在向我們展示了它的字符串輸入參數之后,我們的過程宏即如預期般地崩潰了:

print(

正如預期的那樣,空白符再次被丟棄了。:(

是時候選擇放棄了。

不過或者..也許有一種方法可以解決這個問題。

重建空白符

盡管rustc編譯器只在解析和編譯時使用單詞,但是在某種程度上它仍然可以準確地知道何時報告錯誤。單詞中沒有換行符,但是它仍然知道我們的錯誤發生在第6到第9行。那它如何做到的?

事實證明,單詞中包含很多信息。它們包含一個Span,是單詞在源文件中的開始和結束的位置。Span可以告訴單詞在哪個文件、行和列編號處開始和結束。

如果我們能夠得到這些信息,我們就可以通過在單詞之間放置空格和換行符來重新構造空白符,以匹配它們的行和列信息。

提供這些信息的函數還不穩定,而且還沒有#![feature(proc_macro_span)]。讓我們啟用它,看看我們得到了什么:

#![feature(proc_macro_span)]$?cargo?r
???Compiling?python-macro?v0.1.0
???Compiling?scratchpad?v0.1.0
[python-macro/src/lib.rs:9]?t.span().start()?=?LineColumn?{
????line:?7,
????column:?8,
}
[python-macro/src/lib.rs:9]?t.span().start()?=?LineColumn?{
????line:?7,
????column:?13,
}
[python-macro/src/lib.rs:9]?t.span().start()?=?LineColumn?{
????line:?8,
????column:?8,
}
[python-macro/src/lib.rs:9]?t.span().start()?=?LineColumn?{
????line:?8,
????column:?13,
}

真棒!我們得到了一些數據。

但是只有四個單詞了。原來("... World!") 這里只出現一個單詞,而不是三個((,"... World!",和))。如果看一下TokenStream的文檔,我們會發現它并沒有提供單詞流,而是單詞樹。顯然,Rust的詞法分析器已經匹配了括號(以及大括號和方括號),并且它不僅給出了線性的單詞列表,而且還給出了單詞樹。括號內的單詞可以看成是某個單詞組的后代。

讓我們修改過程宏以遞歸地遍歷組內的所有單詞(并改進一下輸出):

#[proc_macro]
pub?fn?python(input:?TokenStream)?->?TokenStream?{
????print(input);
????todo!()
}

fn?print(input:?TokenStream)?{
????for?t?in?input?{
????????if?let?TokenTree::Group(g)?=?t?{
????????????println!("{:?}:?open?{:?}",?g.span_open().start(),?g.delimiter());
????????????print(g.stream());
????????????println!("{:?}:?close?{:?}",?g.span_close().start(),?g.delimiter());
????????}?else?{
????????????println!("{:?}:?{}",?t.span().start(),?t.to_string());
????????}
????}
}
$?cargo?r
???Compiling?python-macro?v0.1.0
???Compiling?scratchpad?v0.1.0
LineColumn?{?line:?7,?column:?8?}:?print
LineColumn?{?line:?7,?column:?13?}:?open?Parenthesis
LineColumn?{?line:?7,?column:?14?}:?"...?World!"
LineColumn?{?line:?7,?column:?26?}:?close?Parenthesis
LineColumn?{?line:?8,?column:?8?}:?print
LineColumn?{?line:?8,?column:?13?}:?open?Parenthesis
LineColumn?{?line:?8,?column:?14?}:?"Bye."
LineColumn?{?line:?8,?column:?20?}:?close?Parenthesis

符合預期,太棒了!

現在要重建空白符,如果我們不在正確的行中,我們需要插入換行符,如果我們不在正確的列中,則需要插入空格。讓我們來看看效果:

#![feature(proc_macro_span)]$?cargo?r
???Compiling?python-macro?v0.1.0
???Compiling?scratchpad?v0.1.0






????????print("...?World!")
????????print("Bye.")
error:?proc?macro?panicked

看來這是行得通的,但是這些額外的換行符和空格又是怎么回事?對比下源文件,這是對的,第一個標記從第7行第8列開始,因此它正確地將print放在第8列的第7行。我們要查找的位置正是.rs文件中的確切位置。

開始時多余的換行符不是問題(空行在Python中無效)。它甚至具有很好的副作用:當Python報告錯誤時,它報告的行號將與.rs文件中的行號匹配。

但是,這8個空格是個問題。盡管我們內部的Python代碼python!{..}相對于Rust代碼是適當縮進的,但我們提取的Python代碼應以“零”縮進級別開始。否則,Python將發生無效縮進的錯誤。

讓我們從所有列號中減去第一個標記的列號:

start_col:?None,
????//?
????start_col:?Option,//?
????let?start_col?=?*self.start_col.get_or_insert(loc.column);
????let?col?=?loc.column.checked_sub(start_col).expect("Invalid?indentation.");while?self.col?????????self.source.push('?');self.col?+=?1;
????}//?$?cargo?r
???Compiling?python-macro?v0.1.0
???Compiling?scratchpad?v0.1.0






print("...?World!")
print("Bye.")
error:?proc?macro?panicked

結果太棒了!

現在,我們只需要把這個字符串轉換為字符串文字標記?并將其放在run_python();周圍即可:

?TokenStream::from_iter(vec![
????????TokenTree::from(Ident::new("run_python",?Span::call_site())),
????????TokenTree::Group(Group::new(
????????????Delimiter::Parenthesis,
????????????TokenStream::from(TokenTree::from(Literal::string(&s.source))),
????????)),
????????TokenTree::from(Punct::new(';',?Spacing::Alone)),
????])

太糟糕了,直接使用TokenTree太困難了,尤其是從頭開始制作trees和streams。

如果只有一種方法可以編寫我們要生成的Rust代碼,那就只能是quote類庫的quote!宏:

let?

現在使用我們的原始run_python函數對其進行測試:

#![feature(proc_macro_hygiene)]$?cargo?r
???Compiling?scratchpad?v0.1.0
????Finished?dev?[unoptimized?+?debuginfo]?target(s)?in?0.31s
?????Running?`target/debug/scratchpad`
Hello?...
...?World!
Bye.

終于成功了!

封裝成類庫

現在我們把它變成一個可重用的庫,:

  • 刪除fn main,

  • 重命名main.rs為lib.rs,

  • 給類庫起個好名字,例如inline-python,

  • 公開run_python,

  • 更改quote!()中的run_python調用改為::inline_python::run_python,同時添加pub python_macro::python;從python!這個類庫中重新導出宏。

下一步計劃

可能還有很多內容需要改進,還有很多錯誤需要發現,但是至少我們現在可以在Rust代碼行之間運行Python片段了。

目前最大的問題是,這還不是很有用,因為沒有數據可以(輕松)越過Rust-Python的邊界。

在第2部分中,我們將研究如何使Rust變量用于Python代碼。

更新:在等待第2部分的同時,還有第1A部分,只是它沒有改進我們的python!{}宏,但涉及了人們向我詢問的一些細節。具體來說,它涉及:

  • 為什么要像這樣在Rust內部使用Python,

  • 語法問題,例如使用Python的單引號字符串

  • 使用Span::source_text的選項,當我第一次編寫這段代碼時,它其實還不存在。

原文:https://blog.m-ou.se/writing-python-inside-rust-1/

本文為 CSDN 翻譯,轉載請注明來源出處。

更多精彩推薦

?AI 世界的硬核之戰,Tengine 憑什么成為最受開發者歡迎的主流框架?

?說了這么多 5G,最關鍵的技術在這里

?360金融新任首席科學家:別指望AI Lab做成中臺

?AI圖像智能修復老照片,效果驚艷到我了

?程序員內功修煉系列:10 張圖解談 Linux 物理內存和虛擬內存

?當 DeFi 遇上 Rollup,將擦出怎樣的火花?

你點的每個“在看”,我都認真當成了喜歡

總結

以上是生活随笔為你收集整理的c++hello world代码_在 Rust 代码中编写 Python 是种怎样的体验?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

在线观看免费一级片 | 日韩精品一区二区三区免费观看 | 久草视频在线新免费 | 天天干夜夜爱 | 欧美地下肉体性派对 | 激情动态| sesese图片 | 三级av中文字幕 | 亚洲国产美女精品久久久久∴ | 亚洲免费小视频 | 日韩欧美国产精品 | 在线看小早川怜子av | 一区二区视频在线播放 | 麻豆视频免费网站 | 六月色丁香 | 日韩伦理片hd | 在线视频麻豆 | 日韩资源在线观看 | 狠狠色噜噜狠狠 | 久久精品香蕉 | 国产午夜av | 国产精品久久久久久久久久久免费 | 337p西西人体大胆瓣开下部 | 91成人在线免费观看 | 91热精品 | 成人免费视频播放 | 成人sm另类专区 | 波多野结衣精品视频 | 三级小视频在线观看 | 色福利网站 | 中文字幕在线观看视频免费 | 中文网丁香综合网 | 在线免费观看一区二区三区 | 亚洲日本va中文字幕 | 欧美a级免费视频 | 天天操天| 国产精品大片免费观看 | 亚洲精品在线免费观看视频 | 中文字幕首页 | 亚洲综合在线发布 | 国产午夜激情视频 | 亚洲综合在线一区二区三区 | 天天综合天天综合 | 国产精品观看在线亚洲人成网 | 欧美 高跟鞋交 xxxxhd | 午夜av免费在线观看 | 国产v在线观看 | 在线小视频 | 亚洲国产中文在线 | 天天操人人要 | 热99久久精品 | 精品国产一区二区三区久久久久久 | 国产专区视频在线 | 在线观看不卡视频 | 激情丁香综合五月 | 91色在线观看 | 精品国精品自拍自在线 | 人人添人人澡人人澡人人人爽 | 亚洲精品免费观看 | 久久99中文字幕 | 久久久久欠精品国产毛片国产毛生 | 77国产精品 | 久影院| 九九综合九九综合 | 麻豆传媒电影在线观看 | av福利网址导航大全 | 啪啪资源| 九九综合久久 | 欧美一级性生活视频 | 玖玖在线播放 | 久久久国产精品一区二区三区 | 久久这里只有精品首页 | 六月久久婷婷 | 国产在线观看免费观看 | 中文字幕在线专区 | 久久国产精品视频免费看 | 天天干天天拍天天操天天拍 | 欧美精品久久 | 国产午夜精品福利视频 | 国产 在线观看 | 日日干精品 | 麻豆国产精品视频 | 久久理论片 | 人人爽影院 | 蜜臀av性久久久久蜜臀aⅴ流畅 | www.xxxx变态.com | 久久久精品久久日韩一区综合 | 91av中文字幕 | 亚洲精品在线观看网站 | 免费观看成人 | 丁香六月天婷婷 | 特黄特色特刺激视频免费播放 | 日韩av一卡二卡三卡 | 国产xvideos免费视频播放 | av在线电影网站 | 欧美日韩视频在线播放 | 欧美一区三区四区 | 亚洲精品国产精品国自产观看 | 亚洲精品综合欧美二区变态 | 一区二区三区久久精品 | 国产精品视频99 | 在线色视频小说 | 中文字幕中文字幕 | 欧美精品国产综合久久 | 日韩在线字幕 | 久久免费黄色 | bbbbb女女女女女bbbbb国产 | 丁香六月在线 | 在线观看黄色大片 | 日本在线观看视频一区 | 中文字幕国产精品一区二区 | 久久久久亚洲精品成人网小说 | 成年人在线视频观看 | 国产男女免费完整视频 | 欧美精品国产综合久久 | 91在线观看高清 | 亚洲人成在线电影 | 亚洲 综合 精品 | 天天色婷婷 | 精品一区二区影视 | 探花视频免费在线观看 | 天天曰天天 | 麻豆精品视频在线观看免费 | 日本在线视频一区二区三区 | 欧美性超爽 | 国产亚洲久一区二区 | 免费观看黄色12片一级视频 | 婷婷在线免费观看 | 久久久久久久精 | 国产精品小视频网站 | 久久综合九色综合欧美狠狠 | 丁香六月久久综合狠狠色 | 又黄又爽免费视频 | 综合视频在线 | 成人h视频在线播放 | 精品国产大片 | 国内毛片毛片 | 亚州av成人 | 欧美一区二区三区在线 | 夜夜视频| 国产亚洲精品久久久久秋 | 黄网站污| 欧美日韩视频一区二区三区 | 在线观看 国产 | 成人免费在线观看电影 | 免费能看的av | 亚洲免费国产 | 久久精品最新 | 久久视频精品 | 欧美一级视频在线观看 | 久久久91精品国产一区二区三区 | 青青草视频精品 | 日韩精品字幕 | 人人插人人艹 | 久久avav| 国产在线观看91 | 人人草在线视频 | 久久精品这里都是精品 | 色黄久久久久久 | 国产精品视频资源 | 成人黄色小说网 | 91插插影库 | 特级西西www44高清大胆图片 | 国产 一区二区三区 在线 | 特片网久久 | 国产精品久久久久久久免费大片 | 成人国产精品av | 视频在线精品 | 久久久久久久久久久黄色 | 国内精品二区 | 在线高清 | 国产在线免费 | 欧美激情精品久久久久久免费印度 | 免费在线国产视频 | 国产一级一级国产 | 狠狠88综合久久久久综合网 | 久久视 | 国产传媒中文字幕 | 久久不卡国产精品一区二区 | www.黄色在线 | 91亚洲在线观看 | 精品一区二区三区四区在线 | 欧美国产日韩在线视频 | 日韩精品无码一区二区三区 | 午夜私人影院 | 中文字幕免费一区二区 | 亚洲视频99 | 国产黄在线观看 | 91黄色视屏 | 国产一级91 | aa级黄色大片 | 99热这里只有精品在线观看 | 精品一区二区在线免费观看 | 亚洲精选视频免费看 | 国产精品毛片完整版 | 97狠狠干 | 在线观看视频免费播放 | 久久伊人热 | av在观看| 精品国产自| 天天操天天操天天 | 伊人宗合| 中文字幕在线影院 | 久久久久免费网站 | 毛片网站免费 | 国产一区二区午夜 | 狠狠综合网 | 一级淫片在线观看 | 国产一区福利在线 | 精品夜夜嗨av一区二区三区 | 久久综合99| 久久久久久黄色 | 久草免费在线 | 国产主播大尺度精品福利免费 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 天天做天天爱夜夜爽 | 在线观看色网 | 免费日韩 精品中文字幕视频在线 | 亚洲特级片 | 黄色毛片电影 | 成人在线免费观看视视频 | 欧美在线资源 | 亚洲成aⅴ人片久久青草影院 | 成年人在线观看 | 国产精品av一区二区 | 一级电影免费在线观看 | 午夜久久福利 | 日本精品中文字幕 | 97成人资源站 | av大全免费在线观看 | 久久人人爽人人爽人人片av免费 | 伊人影院在线观看 | 色综合激情久久 | 成年人视频免费在线 | 免费视频三区 | 亚洲欧美日韩国产一区二区三区 | 精精国产xxxx视频在线播放 | 色资源网免费观看视频 | 免费热情视频 | 久久艹精品 | 久热色超碰 | 久久 在线 | 麻豆视频大全 | 免费日韩av电影 | 中文字幕久久亚洲 | 一级电影免费在线观看 | 精品九九九九 | 久久经典国产视频 | 成人免费观看视频大全 | 国产精品ssss在线亚洲 | 成人黄色在线电影 | 国产精选在线观看 | 国产视频97| 欧美一级欧美一级 | 在线观影网站 | 日韩在线免费播放 | 911香蕉视频 | 精品96久久久久久中文字幕无 | 中文字幕在线不卡国产视频 | 91精品国产99久久久久久红楼 | 91九色porny在线| 欧美精品一区在线 | 亚洲综合最新在线 | 免费看国产黄色 | 国产在线视频资源 | 日韩二区三区在线 | 国产视频在 | 久久久久女人精品毛片九一 | 3d黄动漫免费看 | 99热都是精品 | 婷婷久久丁香 | 国产一级视频在线观看 | 激情欧美丁香 | 久草视频免费在线观看 | 亚洲人久久久 | 亚洲国内精品在线 | 91色网址| 亚洲精品免费在线 | 国产高清在线永久 | 国产91综合一区在线观看 | 97视频在线观看播放 | 国产69精品久久久久久久久久 | 久久成人麻豆午夜电影 | 丁香久久激情 | 日日日干| 欧美日韩在线观看不卡 | 天天操天天干天天玩 | 一级特黄aaa大片在线观看 | 欧美国产日韩一区 | 在线91网| 日韩黄色av网站 | 91网在线 | 99久久精品一区二区成人 | 天天插天天爱 | 一区精品久久 | 波多野结衣视频在线 | 欧美日韩精品在线播放 | 国产亚洲精品久久久久久网站 | 欧美视频一区二 | 国产精品一区二区三区在线看 | 久久久久久久久久国产精品 | 欧美日韩亚洲一 | 人人讲| 色婷婷影视 | 在线看一级片 | 久久久久久久国产精品视频 | 国产精品久久久电影 | 久久免费a | 欧美成人在线免费观看 | 日本中文字幕在线电影 | 国产69精品久久99的直播节目 | 天堂av网址 | 人人爽人人乐 | 高清av免费看 | 国产精品porn | 国产在线精品一区二区 | 国产精品色婷婷 | 国产一区二区三区高清播放 | 最新国产福利 | 国产精品系列在线播放 | 久草视频免费 | 欧美日韩在线免费观看 | 夜夜操网站 | 天天操天天射天天舔 | 日韩欧美在线观看一区 | 国产精品成人免费一区久久羞羞 | 久久人操| av中文字幕亚洲 | 国产午夜一级毛片 | 黄色小说在线观看视频 | 欧美日韩在线视频一区二区 | 国产 日韩 中文字幕 | 精品国产乱码久久久久久1区2匹 | 国产伦精品一区二区三区照片91 | 在线视频国产区 | 三级av片 | 99精彩视频在线观看免费 | av电影中文| 天堂网中文在线 | 成人av一区二区兰花在线播放 | 免费在线成人 | 中文字幕在线专区 | 欧美午夜一区二区福利视频 | 久久a免费视频 | 91精品视频免费观看 | 国产精品va | 国产精品久99| 在线观看不卡的av | 国产欧美高清 | 欧美日韩久久不卡 | 国产精品视频全国免费观看 | 成人97视频 | 久久久18| 午夜精品久久久久久久99 | 婷婷色站 | 欧洲精品视频一区 | 五月婷婷色 | 欧美一区二区伦理片 | 亚洲精品看片 | 国产精品久久久久久久久搜平片 | 国产成人精品久久亚洲高清不卡 | 亚洲激情在线观看 | 黄色一级免费 | 一级片免费观看 | 天天激情综合网 | 国产亚洲精品久久久久久久久久 | 91精品国产一区二区三区 | 天天天天干 | 亚洲精品av在线 | 91精品日韩| 久草在线久 | 国产精品自在欧美一区 | 欧美美女激情18p | 久久免费视频99 | 国产亚洲成av人片在线观看桃 | 免费一级片久久 | 91成人精品观看 | 中文字幕中文字幕在线中文字幕三区 | 美女久久网站 | 亚洲国产中文字幕在线 | 欧美a级片免费看 | 最近中文字幕在线播放 | 日韩精品视频在线观看免费 | 麻花豆传媒mv在线观看网站 | 丝袜足交在线 | 蜜臀久久99精品久久久无需会员 | a电影免费看 | 亚洲精品久久久久999中文字幕 | 色婷婷九月 | 在线观看视频日韩 | 日本成址在线观看 | 国产精品乱码久久久久 | 国产成人精品一区二区三区在线 | 日韩免费中文字幕 | 久久超 | 午夜在线免费观看 | 中文av在线天堂 | 日精品在线观看 | 最新日韩精品 | 91看片在线免费观看 | 99在线观看视频 | 亚洲一区日韩精品 | 国产精品美女在线观看 | 女人高潮特级毛片 | 国产在线观看免费观看 | 免费在线激情电影 | 激情五月伊人 | 婷婷深爱| 狠狠色香婷婷久久亚洲精品 | 亚洲综合成人婷婷小说 | 成人av资源网 | 亚洲天天| 久久久久免费精品国产 | 国产在线999| 精品一区二区在线播放 | 日日夜夜亚洲 | 日韩欧美国产免费播放 | 日韩欧美在线综合网 | 国产福利a | 国产xxxx| av免费网站观看 | 色a网 | 国产精品久久久久久久久大全 | 国产资源在线免费观看 | 九九亚洲精品 | 麻豆视频91 | 国产污视频在线观看 | 色偷偷网站视频 | 国产不卡av在线 | 国产亚洲婷婷免费 | 五月激情电影 | 欧美日韩国产在线 | 久久久久久不卡 | 久久精品一区二区国产 | 在线免费观看视频一区 | 激情网第四色 | 激情深爱| 超碰国产人人 | 香蕉视频一级 | 69av在线视频 | 免费午夜视频在线观看 | 国产精品3| 黄网站色 | 久草爱 | www.狠狠色.com | 国产精品国产三级国产不产一地 | 久久精品一 | 久久久久久99精品 | 国产亚洲欧美精品久久久久久 | 午夜精品福利影院 | 免费国产在线视频 | 在线播放国产精品 | 黄色成人av在线 | 久久国产成人午夜av影院宅 | 国产午夜精品理论片在线 | 亚洲日日日| 最新不卡av | 久草在线视频精品 | 看片一区二区三区 | 亚洲精品久久久久58 | 久草在线免费看视频 | 99热国产在线中文 | 日韩久久一区二区 | 97超碰超碰久久福利超碰 | 日韩在线视频一区 | 久久久久久久久爱 | 999久久久久久 | 国产色在线视频 | 久久久精品网 | 日韩免费中文 | 91九色免费视频 | 在线免费性生活片 | 国产97碰免费视频 | 中文字幕久久久精品 | 99在线精品观看 | 欧美日韩视频在线一区 | 丁香九月激情 | 国内外成人在线视频 | 亚洲精品在线视频观看 | 久久在线影院 | 日韩欧美视频在线免费观看 | 国产高清不卡av | 国产精品日韩久久久久 | 欧美一级大片在线观看 | 99成人精品 | 国产精美视频 | 久久久91精品国产 | 日韩簧片在线观看 | 麻豆视频免费看 | 色视频网站在线观看一=区 a视频免费在线观看 | 国产精品久久一区二区无卡 | 三级视频片 | 国产成人久久久77777 | 色狠狠一区二区 | 欧美日韩国产综合一区二区 | 国产高清在线一区 | 免费日韩电影 | 很黄很污的视频网站 | 91精品国产一区二区在线观看 | 色噜噜狠狠色综合中国 | 色多多视频在线观看 | 四虎国产永久在线精品 | 午夜国产福利在线观看 | 亚洲精品午夜aaa久久久 | 97成人在线 | 色夜影院| 久久亚洲国产精品 | 成人超碰97| 国产精品久久一区二区三区不卡 | www.夜夜操 | 国产精品第一页在线观看 | 国产精品女主播一区二区三区 | 91精品婷婷国产综合久久蝌蚪 | 中文字幕精品www乱入免费视频 | 69视频永久免费观看 | 黄色福利网 | 永久免费毛片在线观看 | 国产中文视 | av中文字幕亚洲 | 综合精品在线 | 国产午夜在线观看 | 青春草视频在线播放 | 综合色天天 | 成人黄色免费观看 | 国产成人精品999在线观看 | 天天综合天天综合 | 天天天天色射综合 | 91精品在线看 | 国产精品视频99 | 国产精品久久久久久久久久妇女 | 久久久 精品 | 99久久精品午夜一区二区小说 | 99九九视频 | 成人免费观看大片 | 一本一本久久aa综合精品 | 日韩欧三级 | 美女国产| 久久夜色精品国产亚洲aⅴ 91chinesexxx | 九九99靖品| 免费亚洲黄色 | 在线视频国产区 | 一区免费视频 | 我要看黄色一级片 | 一区二区三区三区在线 | 麻豆av一区二区三区在线观看 | 在线小视频你懂得 | 国产成人61精品免费看片 | 成人在线免费视频 | 91精品国产福利 | 国产一区二区三区免费在线观看 | 欧美一级性生活片 | 婷婷在线精品视频 | 国产黄色免费在线观看 | 天天综合狠狠精品 | 在线视频麻豆 | 99免费在线播放99久久免费 | 精品视频资源站 | 狠狠激情中文字幕 | 天天爽夜夜爽人人爽曰av | 久久毛片网站 | 国产 日韩 在线 亚洲 字幕 中文 | 久草视频观看 | 午夜精品99久久免费 | 日韩伦理一区二区三区av在线 | 日韩精品高清不卡 | 日日干夜夜干 | www四虎影院 | 国产小视频在线免费观看视频 | 91视频一8mav | 精品视频亚洲 | 亚洲国产精品成人av | 精品成人免费 | 中文字幕在线免费观看 | 久久久久9999亚洲精品 | 欧美精品国产综合久久 | 欧美性黑人 | 天天操天天吃 | 91在线你懂的 | 人人超在线公开视频 | 亚洲精品999| 成人中心免费视频 | 黄色视屏在线免费观看 | 国产精品九九久久久久久久 | 不卡视频在线 | 日本精品在线 | 成人av在线亚洲 | 天天天干天天射天天天操 | 特级西西444www大胆高清无视频 | 懂色av一区二区三区蜜臀 | 高清精品在线 | 五月综合网站 | 亚洲国产一区在线观看 | 亚洲人成在线观看 | 伊人五月婷 | 五月天久久综合 | 日韩爱爱网站 | 亚洲精品播放 | 成人精品视频久久久久 | 99久久久国产精品免费99 | 97超碰人人爱 | 亚洲精品综合一二三区在线观看 | 亚洲久草在线视频 | 丁香九月激情综合 | 国产99亚洲| 国产精品成人国产乱 | 成人羞羞视频在线观看免费 | www九九热| 91成人亚洲| 色操插| 国产不卡毛片 | 在线小视频你懂的 | 国产在线看 | 久久毛片网 | 日本黄区免费视频观看 | 日韩福利在线观看 | 91亚色视频在线观看 | 国产成人精品在线播放 | 日本三级中文字幕在线观看 | 国产打女人屁股调教97 | 久久国产影视 | 天天操天天干天天爽 | 国产尤物在线 | 亚洲欧洲精品一区二区精品久久久 | 日韩一级电影网站 | 久久九九久久 | 免费在线观看毛片网站 | 91在线日韩 | 男女免费视频观看 | 国产 日韩 在线 亚洲 字幕 中文 | 亚洲免费视频在线观看 | 日本三级中文字幕在线观看 | 久碰视频在线观看 | 色综合久久88色综合天天人守婷 | 久久在线播放 | 久久伊人综合 | 久久久久在线观看 | 日韩欧美一区二区三区免费观看 | 2019中文字幕第一页 | 狠狠操91 | 色综合久久五月天 | 亚洲影院国产 | 色亚洲网| 欧美日韩aaaa | 96精品视频| 欧美在线不卡一区 | 中文字幕九九 | 久久综合色婷婷 | 免费视频 三区 | 日韩精品一区二区三区三炮视频 | 91尤物国产尤物福利在线播放 | 丁香久久婷婷 | 成人久久久久 | 国内精品久久久久影院日本资源 | 国产韩国精品一区二区三区 | 中文字幕 在线 一 二 | 麻豆国产网站入口 | 99免费| 国产在线观看午夜 | 天天躁日日躁狠狠 | 国内久久| 国产一区成人在线 | 又黄又刺激视频 | 尤物97国产精品久久精品国产 | 亚洲精品字幕在线观看 | 毛片www| 美女国产网站 | 日本高清dvd| 亚洲桃花综合 | 最近2019中文免费高清视频观看www99 | 国产精品美女www爽爽爽视频 | 成人国产网站 | 字幕网av | 天堂av最新网址 | 久草91视频 | 一区二区三区视频 | 国产精品6 | 成人黄色av网站 | 成人黄色片免费 | 男女视频91| 久久人人爽人人爽人人片av软件 | 午夜精品久久久久久久久久久 | 国产精品视频观看 | 69欧美视频 | 伊人久在线 | 99热在线看 | 国产一区二区在线观看免费 | 色综合久久综合网 | japanesexxx乱女另类 | 日韩h在线观看 | 美女久久视频 | 欧美aa一级片 | 91秒拍国产福利一区 | 日日夜日日干 | 蜜臀av夜夜澡人人爽人人 | 国产九色在线播放九色 | 亚洲高清视频在线观看免费 | 一本大道久久精品懂色aⅴ 五月婷社区 | 999久久久精品视频 日韩高清www | 五月婷婷色播 | 玖玖视频免费在线 | 国产二区电影 | 国产理论片在线观看 | a级黄色片视频 | 欧美精品久久久久久 | 亚洲国产精品va在线看黑人动漫 | 日韩在线观看视频一区二区三区 | 国产不卡在线看 | 色av色av色av| 精品一区二区三区在线播放 | 99夜色 | 日日夜夜国产 | 国产精品自拍在线 | 超碰夜夜| 这里有精品在线视频 | 精品美女国产在线 | 天天干,夜夜操 | 国产精品欧美久久久久无广告 | 日韩国产精品久久久久久亚洲 | 精品一区二区综合 | 婷婷五月色综合 | 日韩在线观看的 | 久久精品99久久久久久2456 | 日韩三级不卡 | 婷婷丁香在线视频 | 色婷婷六月天 | 在线观看国产中文字幕 | 国产成人精品一区二区三区网站观看 | 亚洲每日更新 | 五月婷婷六月丁香在线观看 | 欧美日韩久久久 | 毛片网站免费在线观看 | 91九色视频导航 | 国产精品九九久久99视频 | 国产在线黄 | 国产h在线观看 | 欧美精品久久久久久久亚洲调教 | 欧美国产日韩在线观看 | 国产做aⅴ在线视频播放 | 在线国产日韩 | 国语黄色片 | 日韩中文字幕亚洲一区二区va在线 | 免费在线观看日韩欧美 | 欧美激情视频在线观看免费 | 江苏妇搡bbbb搡bbbb | 久久久久成 | 美女视频黄网站 | 91大神精品视频在线观看 | 97国产精品视频 | 丁香五香天综合情 | 久草在线手机观看 | 综合伊人av| 草久久久久 | 黄色www在线观看 | 99精品偷拍视频一区二区三区 | 日本韩国精品一区二区在线观看 | 夜夜干天天操 | 国产亚洲精品成人av久久ww | 色网站在线免费 | 天天曰天天 | 在线电影中文字幕 | aⅴ视频在线 | 国内免费的中文字幕 | 狠狠狠色狠狠色综合 | 国产一级视频在线观看 | 亚洲激情网站免费观看 | 亚洲国产wwwccc36天堂 | 最新日韩在线观看视频 | 久草99| 日韩视频免费 | 99久久婷婷国产精品综合 | 精品国产伦一区二区三区观看说明 | 成人午夜电影网站 | 色婷婷88av视频一二三区 | 777视频在线观看 | 五月婷婷在线视频观看 | 丁香六月综合网 | 国产一级在线播放 | 在线成人免费电影 | www日韩欧美| 新版资源中文在线观看 | 在线国产不卡 | 国产精品99久久久久久久久久久久 | av在线亚洲天堂 | 国产成人亚洲在线观看 | 激情网在线视频 | 婷婷五情天综123 | 国产成人免费观看 | 一区二区三区 中文字幕 | 韩国av免费观看 | 日日夜夜天天人人 | 日韩美女免费线视频 | 在线97 | 久久久久久看片 | 中文字幕在线资源 | 美女网站免费福利视频 | 免费在线观看日韩 | 91精品国产一区二区在线观看 | 日本在线观看中文字幕 | 久久免费视频这里只有精品 | 色婷婷综合五月 | 天天爽天天做 | 亚洲精品国产精品国自产 | 国产福利一区在线观看 | 国产九九精品 | 日韩免费观看高清 | 欧洲精品亚洲精品 | 欧美人zozo | 亚洲一区二区三区四区在线视频 | 蜜桃视频色| 91香蕉国产 | 波多野结衣在线视频一区 | 日本在线视频一区二区三区 | 免费在线中文字幕 | 亚洲高清在线观看视频 | 亚洲全部视频 | 少妇av网 | 青草视频在线免费 | 色播亚洲婷婷 | 黄色国产高清 | 国产高清视频免费观看 | 国产专区一 | 97超碰国产精品 | 久草视频中文 | 天天操天天舔天天干 | 亚洲丝袜一区二区 | 91亚洲视频在线观看 | 伊人五月天 | 国产精品21区 | www.五月激情.com| 丰满少妇在线观看网站 | 免费观看久久久 | 激情狠狠干 | 欧美精品久久99 | 亚洲欧洲日韩在线观看 | 中文字幕亚洲综合久久五月天色无吗'' | 国产伦理一区 | 国产在线播放一区 | 色五月成人 | 精品久久精品 | 一区二区三区视频在线 | 一区二区三区在线观看免费视频 | 婷婷伊人综合亚洲综合网 | 国产精品永久 | 91资源在线 | 中文字幕成人在线观看 | 国产福利一区二区三区在线观看 | 色播五月婷婷 | 久久久91精品国产一区二区精品 | 五月婷婷综合激情 | 国产aa免费视频 | 亚洲亚洲精品在线观看 | 国产亚洲欧美日韩高清 | 久香蕉| 成人av在线网址 | 成人免费视频视频在线观看 免费 | 一区二区三区日韩视频在线观看 | 91精品婷婷国产综合久久蝌蚪 | av在线等| 欧美视频在线观看免费网址 | 精品影院 | 欧美精品第一 | 天天色天天操综合 | 黄色三级免费看 | 最近日本中文字幕a | 黄在线免费看 | 日韩欧美在线一区二区 | 久热这里有精品 | 五月综合色婷婷 | 最新亚洲视频 | 国产精品毛片一区二区 | 九九视频在线播放 | 欧美精品久久久久久久久久丰满 | 91在线免费观看国产 | www国产亚洲| 91在线视频在线 | 亚洲专区在线播放 | 国产精品理论视频 | 色黄久久久久久 | 美女网站在线 | 天天射天天操天天干 | a资源在线 | 精品久久一区二区三区 | 久久欧美在线电影 | 亚洲五月花 | 99热官网| 久久99精品一区二区三区三区 | 国产成人99av超碰超爽 | 天天综合视频在线观看 | 中文字幕av日韩 | 日韩一级网站 | 欧美一级片免费播放 | 日韩免费av网址 | 啪啪免费视频网站 | 色播五月婷婷 | 伊人电影在线观看 | 国产剧情一区二区在线观看 | 91精品视频一区二区三区 | 肉色欧美久久久久久久免费看 | 国产 精品 资源 | 久久久69| 精品av在线播放 | 97超碰在| 久久精品视频99 | 久久99国产精品免费网站 | 91精品国产欧美一区二区 | 狠狠伊人| 91在线小视频 | av黄免费看 | 精品国产一区二区三区久久影院 | 天天插天天射 | 欧美韩日精品 | 久久成人麻豆午夜电影 | av黄色av| 天堂久色 | 国内精品中文字幕 | www.狠狠色.com | 久久av伊人| 久久精品国产一区二区三区 | 欧美在线一级片 | 99精品久久久久久久 | 亚洲精品国产电影 | 久久中文字幕在线视频 | 激情综合婷婷 | 天天插视频 | 亚洲最新av| 国产一区二区观看 | 日韩在线资源 | 伊人伊成久久人综合网站 | 人人添人人澡人人澡人人人爽 | 尤物九九久久国产精品的分类 | 高清不卡一区二区在线 | 久久综合天天 | 一区免费视频 | 午夜国产一区二区三区四区 | 国产在线97 | 免费av小说 | 狠狠干天天 | 久久精品日产第一区二区三区乱码 | 91网址在线观看 | 中文字幕资源网 国产 | 99久久精品国产一区二区成人 | 免费视频18 | 中文字幕免费中文 | 中文字幕视频 | 久草久草在线 | 中文亚洲欧美日韩 | a视频在线播放 | 国产色爽 | 久久看看| 久久国产精品免费视频 | av大片免费看 | 综合久久婷婷 | 性色av香蕉一区二区 | 亚洲综合在线视频 | 啪啪av在线| 午夜私人影院 | 这里只有精彩视频 | 8x成人免费视频 | 色婷婷激婷婷情综天天 | 久久高视频 | 操高跟美女 | 中文字幕丝袜 | 国产精品久久一 | 人人澡超碰碰97碰碰碰软件 | av在线播放快速免费阴 | 国产香蕉av | 成人av网站在线播放 | 91精品一 | 黄色av在| 精品国产伦一区二区三区免费 | 久久久久成 | 天堂av最新网址 | 黄色日本免费 | 午夜在线免费观看 | 91在线蜜桃臀 | 国产视频精品久久 | 91av视频免费在线观看 | 亚洲专区在线播放 | 国产福利91精品张津瑜 | 国产成人精品一区在线 | 国产视频不卡一区 | 亚洲区精品 | 亚洲 av网站| 黄色毛片在线 | 国产精品私人影院 | 精品国产aⅴ麻豆 | 国产免费又粗又猛又爽 | 亚洲电影院 | 成人一区不卡 | av免费在线免费观看 | 黄色网在线免费观看 | 国产高清视频在线播放一区 | 欧美亚洲免费在线一区 | 精品成人a区在线观看 | 精品久久久久一区二区国产 | 日韩欧美高清在线观看 | 久久久久免费观看 | 精品毛片久久久久久 |