質問

優先言語:C/C++、Java、Rubyなどがある。

いである図書のチュートリアルの書き方のご自身のコンパイラで教育目的私が知ってC/C++、Java、Ruby、好資源を伴うのが良い資源でも可。

役に立ちましたか?

解決

大きなリソースの一覧:

凡例

  • ¶へのリンクはPDFファイル
  • $へのリンクは印刷された書籍

他のヒント

このかわいらしい漠然とした質問だと思い;での深さの話題ます。コンパイラに分解でき二つの別々の部品がトップやボトムます。上半分は一般に、ソース言語には変換できないため、この中間表現で、下半分の時間をプラットフォームならではのコード。

しかし、ひとつのアイディアを出しやすいようにアプローチこのセキュリティーソフトを利用した私のコンパイラクラスは、少なくとも)を構築し、コンパイラの作品。具体的には、しょうが全体のプロセスでのトップします。

うのきの体験の語彙の分析装置と、パーサを生成ある"コード"(中間表現に述べた).なおソースプログラムを変換すると、いくつかの最適化したい場合は、中心のコンパイラです。下半分にしてくださいする中間表現を生成し、バイトの運営に必要なプログラム特定です。例えば、下半分をお預かり致します中間表現を生成しPE実行形式にまとめたものです。

一部の書籍は、今からあった コンパイラ原理-技法 (またはドラゴン書によるかわいいドラゴンにしていますでも理論は絶対象文脈自由文法も可能です。また、ビルの語彙分析装置およびパーサかの*nixツールlexとyacc.とuninterestinglyのもののようlex由"場所は、ドラゴン図書左offします。

と思い 現代のコンパイラの実装ML 最高入門コンパイラを書います。あ JavaバージョンC版 でも、いずれの可能性のある身近に考える言語背景のもの。本パックの多くの有用な基礎資料(走査、解析、意味解析,活性化の記録指導の選定、RISC、x86ネイティブコード生成)、種々の"先端"トピックの作成○○機能言語の多型、ガーベッジコレクション、最適化および単一の静的課題形式)への比較的小さなスペース(~500のページ).

う現代のコンパイラ実装にドラゴンが現代のコンパイラの実施調査の分野では本当に固体の全ての必要書なり、コンパイラです。お仕事の後は、この書籍できる取り組む研究論文の直接のためのより深度が必要な場合です。

しないと告白していなソフトスポットNiklaus Wirthの コンパイラ。 であ オンライン としてのPDFとしています。見Wirthプログラミングの美的で美しく、しかし一部の人が見たらバタバタすること間違いな最小の(例えばWirth恩再帰降下パーサが、ほとんどのCS科目を中心にパーサの機械Wirthの言語でデザインはかなり保守的な想定に基づくものです。) コンパイラの構築は非常に簡潔蒸留Wirthの基本的なアイデアるかどうかだから自分の気に入っているファッションリーダーになります。読書冊の本にまとまりました。

私も彼の意見に賛成、ドラゴン図書参照IMOの決定版ガイドをコンパイラ。一番ハードコアの理論しました。

だいたい書籍は軽量化理論 ゲームスクリプティングマスタリー がより良います。だぱコンパイラの理論という観点からすれば緩やかに導入。でを網羅していませんより実践的な解析方法を選択のための非予測する再帰降下な議論LLはLR構文解析)ましたけれども、私の記憶するものではありませんで議論し合う最適化理論。プラスではなく、編集機械のコードで統をbytecodeうにVMできます。

まだまだ読場合は特に、より送迎可能ですので格安にAmazon.だけを希望しているのだから簡単に導入コンパイラでコンパイル、ゲームスクリプティングマスタリーでグッドミュージックを発見するがかかるものと思われます。行きたい場合はハードコアなフロントがあり、その解決のためのにほかならないの龍です。

"を構築してみようのコンパイラ" それなりの覚悟を持っても奥高尾にひっそりと建つ料亭。足しています。(い、ということではありませんで少しでもサービスを有効になります。)

又はチェックアウト 俗語.これは同様に"を構築してみようのコンパイラ"が、より良い資源特に初心者です。これは、pdfのチュートリアルを、7つのステップ-アプローチで教育するコンパイラです。追加のquoraの記事リンクとしてではのさまざまなポートの俗語、C++、Java、JS、また通訳者はpythonとjava,書C#とゆったりとしています。純ます。

都内に何件か店を構える使用、高レベルツールによりビル すべ 自分自身でプロジェクトを通じて、測 このコース はなかなか良いオプションです。この言語コースの著者による、JavaのパーサがエンジンAOETOOLS.を得ることができ本コースのPDFファイルから の実践的なプログラマー.

コースの、標準コンパイラのコンパイラもいます。構文解析プタイプチェック、多形シンボルテーブルコード。いるということだけなの対象はユー.最後のプロジェクトはプログラム 統のサブセットC.でご利用のツールAOETOOLSは、LLVMで実行可能な書全体のコンパイラは、一日にしてくれてありがとうございますの存在の事実を証明できるものもいう~24時間対応))。この重実践的な工学をツールには、ビットの軽量化理論.

LLVMようになります。多くの場面が正常にコンパイルを組み立てまいるかに良い状態になるのである。作成のため LLVMの中間表現 です。では、より高いレベルのクロスプラットフォームLLVMはかなり良い成できるよう最適化した組み立てます。

希少し時間をお勧めしま Niklaus Wirthの"コンパイラの建設"(Addison-Wesley.1996年), 小さな小冊子とした読み取りが可能で、その基本を含むの実装方法にlexers、再帰降下パーサは、自分のスタックベースのバーチャル装置)その後、したい場合は深くクライアントのビジネがありませんのドラゴンブックでその他のサ示唆する.

いうLex/Yacc(またはフレックス/バイソンさんしてください。フレックスは語彙分析装置、解析をセマンティック部品(トークン使用)言語、Bisonますを定義するために使用されたときに何各トークンの解析が続けられます。この役割を果たすことができるのではレコード店ディスクユニオンは、印刷Cコードでは、コンパイラがコンパイルにC、または動的に実行ください。

このFAQ だが、 このチュートリアル 見てかなり便利なんですよね。

一般的にはあまりない五分のチュートリアルのためのコンパイラで複雑な話題をいかにコンパイラです。まい自分で検索します。

Python、Ruby、通常は解釈される.もしかしたいで始ま通訳します。一般的に楽になります。

最初のステップは、シンプルにわかりやすく書く正式な記述言語の文法の言語です。そして、ソースコードしたいコンパイルまたは解釈によると、文法、抽象構文ツリー内のソースコードのコンピュータが理解で動作します。このステップは通常という構文解析のソフトウェアを解析し、ソースコードと呼ばれるパーサです。しばしば、パーサによってパーサによる発電機に変換する正式な文法シリコンバレー等でのビジネスoder機械のコードです。良質な非数学的説明の解析をお勧めしま構文解析の手法を実践します。Wikipediaには比較のパーサに発電機から選択できることをする必要があります。によってパーサに発電機を選択し、チュートリアルインターネット上のためのオシャレに飾り楽しむ子パーサに発電機などのGNUバイソン)もあります。

書面にパーサのための言語ができるんでその調子でがんばってくださいこれによって文法を学びます。からく簡単な文法はC++);良い例ではLISP.

第二ステップの抽象構文ツリーからのツリー構造への直線の中間表現。一例として、このユーザのbytecodeあげられている。その中間表現の変化により契約内容の変更をしました。

まビルの通訳までして解釈する中間表現。できるjust-in-timeコンパイルします。をお勧めしまLLVMとlibjit用just-in-timeコンパイル.の言語を使用している入出力機能やかな小さな標準図書館があります。

まとめの言語では複雑化してきております。また書き除去のための異なるコンピュータ-アーキテクチャを機にコードからの中間表現に除去.をお勧めしまLLVMこの課題です。

が書ことができお勧めしています。ほとんども学術的にも実用的です。ありません"教えて自分でコンパイラを書21日"、これを購入する複数の書籍を理解しこの話題です。お探しの場合は、インターネット、ドロップするかのいくつかのオンラインの書籍と講演します。ん、ありがとうございまの大学図書館近くの場を借りることができるコンパイラでコンパイル.

すのもおすすめの良い背景知識の理論計算機科学は、グラフ理論の場を作ってみましょうプロジェクトに深刻です。学位コンピューター科学またご提供いただきました。

一冊いないことを示唆が非常に重要であ "志と、ローダー" ジョン-レヴィーン.いない場合は外部からのアセンブルする必要がありま方を出力するオブジェクトファイルをリンクすることができ込最終プログラム。ものを使用している場合は、外部アセンブラか理解する必要の移転がどのようプログラムの読み込みプロセスを作ツールです。この書を収集し、ランダムに伝承周辺のこのプロセスのための様々なシステムを含め、Win32およびプログラムを利用しています。.

竜図書 あの"建築コンパイラ"ブックが合わない場合には言語などの複雑な現在の世代の言語にする場合がありますので通訳のパターンから デザインパターン.

この例は、書籍のデザインを正規表現のような言語が思考を通して、いをさせていただきますので、良い思考の過程でも効果的なんだけ小さい。しかし、ではなく、あく通訳の小さな言語ではこのパターンを学ぶすべての種類のparsers,yaccやlex宅からの...

さえすれば、利用LLVM、これをチェックアウト: http://llvm.org/docs/tutorial/.い方を教えてく書くコンパイラのインスLLVMの枠組みを必要としないときについての知識のです。

のチュートリアルを提案すご自分のパーサおよびその手段としては、どんすみバイソン、フレックスロサンゼルス生まれのアイデアです。彼の人生をより簡単にするものである。

このドラゴン書く読みにくいものとい言語理論とはめったにしながらコンパイラです。

私は追加の オベロン 書を含むフル-ソースの、驚くほど高速で簡単でコンパイラのオベロン プロジェクトオベロン.

Alt text

だいこう七ていましたのでむしろ新しいプラグインです。

私た場合には注意して聞いて、驚くべきことに、しかしく批判していきます。ったものの方向性"ドラゴンを予"が私の考えでは、本当に素晴らしい書籍を説明するんだ、クリエイティブオフィスを書くコンパイラ(すいマ言語。の言語をご存知、次回はもっとドイツ語をしゃべ.).

あり、多くの人が言う本を読んでクレイジんから学ぶことですが、私は国立大学志望の浪人生で全くとのこと。

多くの人に成り立っているとも言え書きコンパイラは愚かなことの意味が無い。でも理由はコンパイラ開発に有用な:

  • で楽しいです。
  • この教育、学習の際の書き方のコンパイラを学習しますについて多くのコンピュータ科学や技術に役立つ書きします。
  • れば誰もが書いたコンパイラは、既存の言語ん。

なかった自分でコンパイラのかなどに聞いて知っていたのが始まります。今後の学習に多くの異なる言語の読み込みドラゴン本書はそんなに多くの問題です。(私の研究を、コンピュータ工学atmが何を知ってプログラミングは自己の授業を行っています。)

その結果、ドラゴン図書は"チュートリアル".が同時にマスタリング言語やつを書くコンパイラです。期待してはいけませんとするコンパイラーグル内の、次の年代ですが。

本書でも良くしたい場合は、履き口とトゥ部分、かかとにはパーサに。

"...を構築してみようのコンパイラ..."

私の第二の http://compilers.iecc.com/crenshaw/ による @sasb.忘れて購入りに過ぎません。

なぜですか?ツール&言語です。

言語の必要はパスカルさんは、正しくはターボ-Pascal.すだけ http://www.freepascal.org/ ダウンロードPascalコンパイラのすべての事例から仕事のページ~ http://www.freepascal.org/download.var のbeautも無料パスカルがお使いいただけますほとんど何でもプロセッサまたはOSでケアします。

だって習得した教訓をしてみて、より高度な "ドラゴンを予" ~ http://en.wikipedia.org/wiki/Dragon_book

いを同じコンセプトに、この有望することによりこの条Joel Pobar,

作成言語コンパイラのためのNETフレームワークがないことが

作成言語コンパイラのためのNETフレームワーク-pdfのコピー元のdocフレーバ

彼はついて高いレベルのコンセプトにコンパイラによる発明自分の言語のために。Net framework.そのめます。Netフレームワークの概念できること再現されています。記事の内容:

  1. 言語の定義
  2. スキャナー
  3. パーサーのビットim関)
  4. を対象に。Netフレームワークの
  5. コード発生装置

ありその他の話題でご利用いただけます。に一本で行けます。

その目的は人々を始め、クライアントまで、フルのC#(なJava)

HTH

簡単に作成するための方法をコンパイラ用バイソン、フレックス(またはそれに類似するもの)を構築し、ツリー(AST)とのコードを生成します。C.を生成しながらCコードの重要な一歩です。により生成コードをC言語に自動的に作業をすべてのプラットフォームしているCコンパイラです。

電Cコードとしても使用された発生HTMLで利用印刷またはそれに相当する)よりも容易に文書CのパーサまたはHTMLパーサです。

から comp.コンパイラのFAQ:

"プログラミングソコンピュータ"よりBrinchハンセン プレンティスホールは1982年ISBN0-13-730283-5

この残念なことには"書 のデザインと創造のシングルユーザプログラミング環境 のためのミクロス、パスカル-言語というエジソン。著者に贈 すべてのソースコードおよび説明のためのステップ-バイ-ステップの実施 エジソンのコンパイラおよび簡単な営業支援システム、すべての記述 エジソンそのものを除く小さな支援のカーネルで書かれた象徴的な アセンブラPDP用11/23;の完全なソースでも受け付けており、IBM PC。

最も興味深いものについ:1)力 を作成、自己、自己維持 有用なコンパイラとオペレーティングシステム、2つの興味深い議論 言語のデザインや仕様の問題と貿易-ド第2章

"BrinchハンセンにPascalコンパイラ"よりBrinchハンセン プレンティスホール1985年ISBN0-13-083098-4

他の光に理論 重ン-語用論で-どのようにコードです。の著者の デザイン、実装、完全なソースコードをコンパイラおよびpコード 通訳のためのパスカル-(パスカル"マイナス、パスカルサブセットとのbooleanと 整数型が文字reals,subrangedまたは列挙型 定数や変数の定義および配列を記録種類が満載の バリアントのセットは、ポインター、無名の、名前の変更、またはファイルの種類)、表情 割り算の入れ子式手続きの定義と価値の変動 パラメータの場合、諸表は、諸表を開始末のブロックが 機能の定義を参照する場合は、手続きのパラメータは、後藤諸表やラベル、 例諸表の繰り返し計算書、計算書、計算書関係).

のコンパイラおよび通訳者はPascal*(パスカル"スター") カサブセットの拡張とエジソン-スタイルが特徴の作成 ソフトウェア開発システム。Aパスカル*コンパイラのための、IBM PC販売 著者のものですポートの場合は、パスカル-コンパイラ載 便利なPascalます。

この本の設計と実装コンパイラを見ても簡単です。I 特には、著者が関品質、 信頼性テスト実施をしておりました。のコンパイラと通訳者が使っていただけるようにするとい として関わるように言語やコンパイラプロジェクト だが押されぐにも成功しています。

すべDariusベーコンの"ichbinsである"コンパイラのための小さなLisp方言を対象に、以上6ページコードです。のでほとんどのおもちゃコンパイラの言語が完了することを十分にコンパイラが書いてあるんですよね。のtarballまた、日本語の通訳ブートストラップのこと。)

りも何かに役立つ学習への書きのコンパイラのマ Ur-スキーム ウェブページです。

Pythonずpythonコンパイラで記述エラーになります。きのソースコードを含むすべての段階から、解析、抽象構文ツリー発光コードなど。Hackです。

のLCCコンパイラ(wikipedia) (プロジェクトのホームページ のフレイザー、ハンソンはその著書"、Retargetable Cコンパイラ:設計と実装".ではなかなか読み、説明全体のコンパイラ、コード。

申し訳ではスペイン語でもこのプロジェクトの位置付けを理解コースという"Compiladores e Intérpretes"(コンパイラでコンパイルおよび通訳)アルゼンチン

のコースから形式言語理論のコンパイラの建設、これらの課題を構築する必要がある、少なくとも、簡単なコンパイラ:

  • コンパイラでコンパイルデザインC
    Allen S.スHolub

    プレンティス-ホールです。1990年.

  • Compiladores.Teoría y Construcción.
    Sanchís Llorca,F.J.,Galánルバ,C.編集Paraninfo.1988年に定めました。

  • コンパイラ。
    Niklaus Wirth

    Addison-Wesley.1996年.

  • Lenguajes,Gramáticas y Autómatas.国連enfoque práctico.
    ペドロ Isasiビニュエラでは、パロマMartínez ン-フェルナンデス、ダニエルBorrajo Millán.Addison-Wesley Iberoamericana (エスパーニャ).1997年.

  • のコンパイラのデザイン。理論と実践です。
    トーマス Pittman、ジェームス-ピーターズ.

    プレンティス-ホールです。1992年.

  • オブジェクト指向コンパイラ。
    ジム-ホームズ.
    プレンティスホール、イングルウッド 崖、N.J.1995年

  • Compiladores.Conceptos Fundamentales.
    B.Teufel,S.シュミット,T.Teufel.

    Addison-Wesley Iberoamericana.1995年までさかのぼります。

  • 紹介によりオートマトン理論、言語、計算機、などがあげられます。

    John E.Hopcroft.Jeffref D.Ullman.
    Addison-Wesley.1979年.

  • 入門形式の言語である。
    György E.Révész.

    Mc Grawヒルがあります。1983年.

  • 構文解析技術です。実践します。
    Dick Grune,Ceriel ジェイコブス.
    Impreso por los autores.1995年
    http://www.cs.vu.nl/~dick/PTAPG.html

  • Yacc:他のコンパイラ-コンパイラです。
    スティーブン C.ジョンソン
    計算科学 技術研究報告Nº32,1975年.ベル 所とする。マレーヒル、ニ
    れています。

  • Lex:は、字句解析器ジェネレータ。
    M.E.Lesk,E.-シュミット計算科学技術 報告Nº39,1975年.ベル研究所.マレーヒル、ニュージャージー

  • lex&yacc.
    ジョンR.レヴィーン、ニューヨークにMason,Doug褐色をしています。
    オ&。1995年までさかのぼります。

  • 要素の理論計算である。
    ハリー-R.ルイス クリストスに関するPapadimitriou.セグンダEdición.プレンティスホールです。1998年.

  • 国連Algoritmo Eficiente para la ConstrucciónデルGrafoデDependencia de。
    サルバドールV.Cavadini.
    Trabajo最終デGradoパラobtenerエルTítuloデIngeniero ja Computación.
    FacultadデMatemática Aplicada.U.S.E.C.2001年.

  1. この広大な。侮ってはいけません。と侮ってはいけません自分は過小評価します。
  2. 聞こえるのですが ドラゴンを予 である(?) タとを示すことが知られています。:)をしっかり取りの検索おりますが、最終的には人生です。
  3. 自分のプログラミング言語は絶対に良いです。なかには使用いたしません実用的な目的です。例は少なく 非常に れます。

ませんが、学術論文にまとめ、非常に楽しい学習体験の場合などについて知りたいと考えていのコンパイラ(およびmetacompilers)...本サイトを散策すを完全コンパイラシステムでコンパイルそのものその他の言語:

チュートリアル:Metacompilers第1部

これらはすべてに基づくも少し10ページの技術論文:

Val Schorre メタII書式指向のコンパイラの文書の言語

から正直に神1964年にスタートしていた。り方を教えていただきましたコンパイラの構築からこの後1970年.あ部の人にとった瞬間は最grokどのようにコンパイラで再生そのものです。...

ピックアップしました。サイトの著者からの私の学生時代、私ものではないものである。

あのコミュニケーションも楽しみの良い答えがここにいながらよく集めたものだと思うけついでにもう一つ付け加えるリスト:

しているというのがプロジェクトオベロン以前は、一部のものを記述テキストをコンパイラです。書籍の本当の意味でのソースや説明は非常に手やすことはないですね。完全にテキスト(2005年版)"をpdfでダウンロードできます。のコンパイラについては、第12章:

http://www-old.oberon.ethz.ch/WirthPubl/ProjectOberon.pdf

Niklaus Wirth,ヨーグGutknecht

の処理が広範囲ではな著書にコンパイラ)

私は読書をコンパイラでコンパイルに、できる第二のドラゴン本時間この本は非常に価値がある。

ご興味のある方は書面でコンパイラのための機能言語ではなく手続き)サイモン-ロケ-ジョーンズデイヴィッドゲストハウスはマリの"実施言語:チュートリアル"優れた。

の概念的基礎をどのように機能評価作業による指導の事例は強力な機能語という"コア".また、各部の言語コンパイラが説明されたコード例ではミランダ(純粋な機能的な言語と類似ウ).

複数の異なる種類のコンパイラで記述していても従うだけでなく、いわゆるテンプレート用のコンパイラコアについて優れた理解のうプログラミングtick.

ない私にとって Crenshawチュートリアル でも、でも絶対に明らかにコンパイラのうち、いくつかのプログラムを読み込み入力に書きるかもしれます。

読みます。

仕事もしたい場合は、その他の参考資料としてどのようになればと思って完全にコンパイラは本当に書かれています。

を読む 信頼の信頼, を手がかりに、世の中には、もしかできないこと。

利用できる BCEL により、Apacheソフトウェアです。このツールが作成できるアセンブラ-コードでJavaのBCEL APIに含まれています。学ぶことができどのような形を生成することができます中間言語コード(この場合はバイトコード)

簡単な例

  1. を作成したJavaクラスはこの機能:

    public String maxAsString(int a, int b) {
        if (a > b) {
            return Integer.valueOf(a).toString();
        } else if (a < b) {
            return Integer.valueOf(b).toString();
        } else {
            return "equals";
        }
    }
    

現在はBCELifierこのクラス

BCELifier bcelifier = new BCELifier("MyClass", System.out);
bcelifier.start();

結果を見るにはコンソールのクラスをバイトコードMyClass.java).このコードの機能のこと:

private void createMethod_1() {
  InstructionList il = new InstructionList();
  MethodGen method = new MethodGen(ACC_PUBLIC, Type.STRING, new Type[] { Type.INT, Type.INT }, new String[] { "arg0", "arg1" }, "maxAsString", "MyClass", il, _cp);

  il.append(InstructionFactory.createLoad(Type.INT, 1)); // Load first parameter to address 1
  il.append(InstructionFactory.createLoad(Type.INT, 2)); // Load second parameter to adress 2
    BranchInstruction if_icmple_2 = InstructionFactory.createBranchInstruction(Constants.IF_ICMPLE, null); // Do if condition (compare a > b)
  il.append(if_icmple_2);
  il.append(InstructionFactory.createLoad(Type.INT, 1)); // Load value from address 1 into the stack
  il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Constants.INVOKESTATIC));
  il.append(_factory.createInvoke("java.lang.Integer", "toString", Type.STRING, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
  il.append(InstructionFactory.createReturn(Type.OBJECT));
  InstructionHandle ih_13 = il.append(InstructionFactory.createLoad(Type.INT, 1));
  il.append(InstructionFactory.createLoad(Type.INT, 2));
    BranchInstruction if_icmpge_15 = InstructionFactory.createBranchInstruction(Constants.IF_ICMPGE, null); // Do if condition (compare a < b)
  il.append(if_icmpge_15);
  il.append(InstructionFactory.createLoad(Type.INT, 2));
  il.append(_factory.createInvoke("java.lang.Integer", "valueOf", new ObjectType("java.lang.Integer"), new Type[] { Type.INT }, Constants.INVOKESTATIC));
  il.append(_factory.createInvoke("java.lang.Integer", "toString", Type.STRING, Type.NO_ARGS, Constants.INVOKEVIRTUAL));
  il.append(InstructionFactory.createReturn(Type.OBJECT));
  InstructionHandle ih_26 = il.append(new PUSH(_cp, "equals")); // Return "equals" string
  il.append(InstructionFactory.createReturn(Type.OBJECT));
  if_icmple_2.setTarget(ih_13);
  if_icmpge_15.setTarget(ih_26);
  method.setMaxStack();
  method.setMaxLocals();
  _cg.addMethod(method.getMethod());
  il.dispose();
}

一覧表には掲載していないことが本書である:

基礎コンパイラの設計(Torben Mogensen) (部コンピュータ科学、コペンハーゲン大学法学部教授)

私もの学習に興味をもっているつのコンパイラおよび計画を作ることができる産業のするというものである。この本は、理想的な理論書始まる学習コンパイラとして参加者をリーフへお連れします。無料でコピーを再現システムの実現を目指して、再び時において充分に注意し、できる英語をスウェーデン語翻訳で見ずにコードがまだの力学による指示や図表など。一見の価値ありと思う。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top