ジャック・コンパイラ

ssignment 3 -ジャック・コンパイラ
Weightingandためには、日付
、この割り当てのためMarksは、コース全体のマークの15%を拠出します。
機能性のためMarksは、Web投稿システムによって自動的に授与されます。
Due日付:マイルストーン-11:11週の金曜日55pm、Final-週の11:55 pmの金曜日12
Late罰則:各部品について、受賞最大のマークが遅く日/パート日あたり25%削減されます。あなたのマークが最大値よりも大きい場合、それを最大限に削減されます。
知識のCoreボディ(CBOK)地域:抽象化、設計、ハードウェアとソフトウェア、データ、情報、およびプログラミング。
プロジェクトの説明
この割り当てでは、プロジェクト10とnand2tetrisコースでは11、再加工し、以下に示す説明ofNand2Tetrisプロジェクト10と11アールの変化を完了します。:特に、あなたはハック仮想マシン(VM)のコードにaJackクラスをコンパイルし最適化するジャックコンパイラのさまざまなコンポーネントを実装するために使用されている以下のプログラム書き込みます
parser-このparsesaJackプログラムと抽象syntaxtreeを構築します。
このtakesan抽象syntaxtreeandoutputsequivalentVMコードをcodegen-。
pretty-これは抽象syntaxtreeを受け取り、acarefullyフォーマットされたジャック・プログラムを生成します。
optimiser-E *可能であれば式を事前に評価しcopiesan抽象syntaxtreeandを-これ。
optimiser-R ^ -このcopiesan抽象syntaxtreeandremovesredundantコード。
SVNリポジトリは、
<年> / <学期> / CS / assignment3:あなたは、あなたの名前のSVNリポジトリ内のディレクトリを作成する必要があります。このディレクトリには、次のファイルが含まれており、サブdirectories- thewebの提出は、これをチェックsystemwillことがあります。
このファイルMakefile-modifythisファイルをしませ-doあなたの提出をコンパイルbymaketo使用されています。
.cppC++のソースファイル-以下に指定として命名。
以下指定されているよう.hC++は、ファイル-命名が含まれています。
lib-このディレクトリには、コンパイル済みのプログラムおよびコンポーネントは、このディレクトリを変更しないで致し含まれています。
プリコンパイルされたため、このディレクトリcontains.hfilesincludes-クラスを-んthisdirectoryを変更しません。
このディレクトリtests-テストスクリプトとテストデータが含まれている、あなたもあなた自身のテストを追加することができます。
theparserprogramの実装をparser-。
yourcodegenprogramを実行するスクリプトをcodegen-。
yourprettyprogramを実行するスクリプトをpretty-。
* youroptimiser-eprogramを実行するスクリプトをoptimiser-E-。
^ youroptimiser-rprogramを実行するスクリプトをoptimiser-R-。
注:
thelib / * / lib.afilesは、あなたのSVNリポジトリに追加されませんifあなたはそれらを追加し、別のコミットを行い、明示的に必要になります
%のsvn libを追加/ * / lib.a
%のsvn-欠落しているライブラリを追加する-mコミット
:本当の実行可能プログラムは、あなたが明示的にそれらを削除し、別のコミットを行う必要がありますあなたのSVNリポジトリに追加されif
%SVNのrmのlib / * /パーサのlib / * / codegenをlibに/ * /かなりのlib / * /オプティマイザ-E libに/ * /オプティマイザ-R
のsvn削除-実行ファイルの-mコミット
ノート:
*学生は学部募集に在籍のみのため、COMP SCI 2000
^だけ大学院募集に在籍学生のために、COMP SCI 7081.
提出およびマーキングスキーム
この割り当てはsystemnamed theweb提出中3つの割り当てがあります割り当て、3-マイルストーンの提出を、割り当て、3-最終的な提出- UGandAssignment、3-最終的な提出- PG。評価は、「プログラミングの割り当ての評価」に基づいています。theweb提出におけるこれらの割り当てのいずれかへの提出は、自動的に他の割り当てに提出になりsystemwill。これは間違って割り当てへの提出は、マークの偶発損失が生じないようにすることです。
割り当て、3-マイルストーンの提出:週11のため、11:55 pmの金曜日
マーキングの割り当てが完了したときに割り当て3.Yourmilestone提出マークのためにあなたのマークの20%までtheweb提出systemforAssignment、3-マイルストーンSubmissionscontributeによって授与マークは、後半に罰則を適用した後、myuni評定表に掲載されます。
あなたのプログラムはC ++で書かれなければならないとitwillはtheMakefileandがcomponentsin thelibdirectoryをプリコンパイル使用してコンパイルします。それは、または文法的に正しくない可能性がありジャック言語programsthatを使用してテストされます。テストのAwide範囲はworkingparserprogram.Noteを必要とするテストのために授与されますsomesecrettests.Marks含めて、実行することができる:あなたがthesecrettestsに何のフィードバックを得るんでしょう、あなたが求める場合にも!
課題3 -最終提出:12週の11時55分午後に起因金曜日
UGorAssignment 3 - 最終的な提出 - - PG、あなたのログブックのためのマークとあなたのコードのためのマークYourfinal提出マークがeitherAssignment、3-最終提出systemfor theweb提出によって授与加重マークの幾何平均になります。それはtheweb投稿システムによって授与themarksよりも20%以上に制限されます。マークが組み合わされる方法の例について - 「マークの計算アセスメント」を参照してください。マーキングの割り当てが完了したときYourfinal提出マークは、後半に罰則を適用した後、myuni評定表に掲載されます。
あなたのプログラムはC ++で書かれなければならないとitwillはtheMakefileandがcomponentsin thelibdirectoryをプリコンパイル使用してコンパイルします。それは、または文法的に正しくない可能性がありジャック言語programsthatを使用してテストされます。テストのAwide範囲はsomesecrettests.Note含めて、実行することができる:あなたがthesecrettestsに何のフィードバックを得るんでしょう、あなたが求める場合にも!
マーキング自動
次のようにtheweb提出systemforeachコンポーネントプログラムによって授与最終提出マークが加重されます。
学生はinCOMP SCI 2000コンピュータシステム登録の場合:
Assignment、3-最終的な提出を- UG
parser-30%
codegen-40%
pretty-10 %の
optimiser-E-20%
学生の場合はinCOMP SCI 7081のコンピュータシステム在籍
PG - Assignment、3-最終的な提出を
30%parser-
codegen-40%
pretty-10%
optimiser-R-20%の
マーキングログブック
重要:ログブックは、あなたのマイルストーンの提出およびコンポーネントプログラムのすべてを含め、この割り当てですべての作業のためのエントリを持っている必要があります。samesharedログブックへの割り当て3ポイントのtheweb提出systemassignmentsのすべてのログブックへのリンク。あなたのログブックが評価される方法の詳細について- 「ログブックレビュー評価」を参照してください。
マーキングコードレビュー
コードが評価される方法の詳細については、 -あなたがよくwrittencode.See「コードレビュー評価」を提出することが期待されているプログラミングの割り当てのそれぞれについて。
割り当て、3-参加マークス
割り当て2週間以上前に作られたが、3週間未満の最終提出の割り当てのための期日前の最終提出の任意の提出は、参加マークを授与することができます。参加マークは、0と10の間の数であることを今週中に資格申請のマーキング自動によって授与最高のマークをスケーリングすることで計算される
前に、一週間以上行われ、最終的な提出の割り当てにどれ提出が、2週間以内最終提出の割り当てのための期日前に、参加マークを授与することができます。参加マークは0と10の間の数であることがこの週の間対象提出のマーキング自動によって授与された最良のマークをスケーリングすることにより計算される
20参加マークの最大値が利用可能です。
Nand2Tetrisプロジェクト10&11:コンパイラI&II
の背景
現代のコンパイラは、JavaやC#のものと同様に、多段に配置されたコンパイラのフロントエンドは、中間VM言語に高レベル言語から翻訳します。コンパイラのバックエンドは、ホストプラットフォームのネイティブコードにVM言語からさらに変換されます。以前のワークショップでは、ジャック・コンパイラ(私たちはVM翻訳それとも呼ばれる)のバックエンド層の構築を開始しました。私たちは今、コンパイラのフロントエンドの構築に向けます。構文解析とコード生成:この構造は二つの部分にまたがるます。
目的
本プロジェクトでは、我々は、プログラムの構造を捉え、抽象構文木を生成する、ジャックの文法に従ったジャック・プログラムを解析し、構文解析を構築します。私達

代写ジャックコンパイラ作业、ourabstract構文木に変換の任意の数を適用することができ代写Nand2Tetrisプロジェクトthenwrite別々のロジック。変換はかなり、元のプログラムを印刷する特定の最適化にtheabstract構文treeor生成VMコードを適用することを含むことができます。これは、ワークショップをusedinアプローチを反映しています。

リソースの
このプロジェクトに関連する読書がしかし章10と11で、あなたは章10で、以前のワークショップで使用するプログラム構造ではなく、提案された構造に従うべきであると11.YouはC ++であなたのプログラムを記述しなければなりません。あなたは、Linux commanddifftoを使用する必要があります私たちが供給する例の出力ファイルにあなたのプログラムの出力を比較。代代写
ハック仮想マシンの  ワークショップや以前の割り当てに使用されるものと同様のプリコンパイルされたクラスのセットは、以下に添付のzipファイルにあります。このプロジェクトのために必要なすべてのテストファイルとテストスクリプトは、以下に添付のzipファイルで提供されています。

テストとIOは、
我々は独自のページ上の各コンポーネントプログラムの要件の説明を提供してきました。これは、コンパイルを実行して、各コンポーネントプログラムをテストする方法について説明します。しかし、コンポーネントプログラムのいずれかの作業を開始する前に、あなたはテストとIOコントロール上のページを確認してください。
テスト
各テストの名前期待される出力に使用される規則を含むテストデータはtheAssignment 3で説明されています| testingpage。
IOコントロール
各コンポーネントプログラムはどのようなことはすべきかすべきでない出力、それが正しく機能しているとどのようなエラーが発生したときに実行するための特定の要件があります。残念ながら、これはそれが困難なあなたのプログラムの実行をトレースし、開発中に、そこから意味のあるエラーメッセージを取得することができます。あなたは両方を達成できるようにするには、出力バッファリングおよびエラーレポート機能の数が提供されているとtheAssignment 3で説明されています| IO controlspage。
コンポーネントプログラム
パーサ
Theparserprogramジャックプログラムを解析し、同等の抽象syntaxtreeを構築するために提供さトークナイザを使用しています。|このコンポーネントプログラムの具体的な要件はtheAssignment 3で説明されています parserpage。
コード生成
Thecodegenprogramトラバースanabstract syntaxtreeto仮想マシンコードを生成します。このコンポーネントプログラムの具体的な要件は、theAssignment 3 describedonあり| codegenpage。
かなり
Theprettyprogramは、生成抽象的なsyntaxtreeを横断し、このコンポーネントプログラムのコーディングstandard.The特定の要件がtheAssignment 3 describedonある特定のフォーマットされたジャック・プログラムを出力します| prettypage。
オプティマイザ-E *
Theoptimiser-eprogramトラバースanabstract syntaxtreeproduced andgeneratesすべての式を使用して新しい抽象構文木このコンポーネントプログラムのpossible.The特定の要件がtheAssignment 3 describedonある場合は事前に評価| optimiser_epage。
オプティマイザ-R ^
Theoptimiser-rprogramトラバースanabstract syntaxtreeproduced andgenerates冗長プログラム要素を持つ新しい抽象構文木theAssignment 3 describedonあり、このコンポーネントプログラムの特定の要件をremoved.The | optimiser_rpage。
スタートアップファイル
起動ファイルは、ほとんどの64ビットLinuxシステム上およびMac上で動作するはずです。詳細については、ワークショップやAssignmentspageためtheStartupファイルを参照してください。
assignment-compiler.zip

プロ、とても信頼できるので。必要に応じて、QQを追加してください:99515681または電子メール:[email protected]

マイクロ手紙:codehelp

おすすめ

転載: www.cnblogs.com/jCompiler/p/11689812.html