跳转到内容

Compiler 2014

来自ACM Class Wiki

News

  • (May 25) 5月25日LOG,测试分数统计请看shared_table。
  • (May 21) 5月21日LOG,测试分数统计请看shared_table。
  • (May 19) 5月19日LOG,测试分数统计请看shared_table。
  • (May 7)Final testing deadline is set on May 25.
  • (April 25) Testcases are modified.
  • (April 18) Compiler 2014: What to do in the day after tomorrow
  • (April 18) 4月19日测试结果
  • (April 9) More testcases are uploaded. (Task and document resp. of next phase are released. If you have more time, try it.)
  • (April 4) The helper bonus is raised to 3(max) per person.
  • (April 1) Test environment specification and appetizer updated.
  • (Mar 25) You can download new testcases in the acmcompiler account in BitBucket. :) (Do not waste too much time on the bonus testcases if you have no idea about how to deal with them. They are just toy programs with special ideas.)
  • (Mar 24) Update testcases for the first code review.
  • (Mar 8) Introduction, grammar and an appetizer are uploaded.
  • (Mar 6) Hello, world!

Target Language Definition

Compiler 2014: Introduction by example

Compiler 2014: Tokens

Compiler 2014: Types

Compiler 2014: Grammar

Compiler 2014: An appetizer IMPORTANT

Compiler 2014: Standard libraries

Compiler 2014: Semantic specification

Compiler 2014: Testing environment specification (For finalterm examination)

Students who are going to use a language other than Java MUST apply explicitly. Whatever language you use, only the following tools are allowed: lex, yacc, Quex, flex, Bison, re2c, lemon, JFlex, CUP, ANTLR (v3 or v4), Ragel, Gson.

Mail List Summary

Compiler 2014: Mail List Summary Phase 1

Compiler 2014: Mail List Summary Phase 2

Compiler 2014: Mail List Summary Phase 3

Google Group

  • 学生群:tiger-acm-sjtu@googlegroups.com
  • 助教群:tiger-round-table@googlegroups.com
  • 学生群会被用来助教和同学之间的交流。任何问题请往这个群问,除非敏感话题我们不提倡与助教私信。请大家(特别是你在进行讨论或者回答问题的时候)在邮件中附上你的姓名,在群里的活跃程度最后会被考虑到得分中。
  • 没进群的同学请直接联系cloudygooseg@gmail.com,我手动把你加进去,因为翻墙的关系我用google group有时不稳定。

Schedule

* 周五晚6点半到8点半,教室为电院3-404
Date Lecture Project Deadline
2014.3.21 Introduction&Overview&SA(解东), FlexCup起步(贺天行), Antlr起步(金天行) Syntactic analysis 2014.4.4
2014.3.28 Phase1 Code Review data 1,Code Review data 2 Syntactic analysis 2014.4.4
2014.4.4 Phase2 Semantic Check(吴航) Semantic analysis 2014.4.18(Midterm Examination)
2014.4.18 Phase3 Intermediate Representation(金天行) Translating to intermediate code 2014.5.9
2014.4.25 Phase4 Register Allocation(贺天行) Register allocation 2014.5.9
2014.5.9 Phase4 Optimization(解东)& Phase4 Code review Final optimization 2014.5.9
2014.5.18 Final Testing deadline 2014.5.19-2014.5.25

Grading

We publish all of the test-cases:

Grading Dashboard:

  • shared_table
  • The tutors can edit it, and you can view it.
  • If you cannot visit docs.google.com, please see the advise below.

Base:

  • Data Correctness(60)
  • Performance(20)(你的指令数会与一个门限做比较)
  • Code review(5)
  • Attendance(5)(接受有正当理由的提前请假,不然会扣分)

Bonus:

  • Report(7)
  • Maillist Summary(2 per phase)
  • Helper(3)(给在群里活跃讨论的同学,个数不限,按活跃程度给分,注意提问和回答都算是贡献)
  • Book reader(0.5 per question)(助教会上上课随机提出一个有关龙书理论的问题由同学抢答)
  • Fastest(1,0.5,0.5)(给在指定数据中表现抢眼的同学)

关于报告:

  • 首先页数至少得是1页半A4,字号最大小四,中英文随意,格式随意,你用latex或者word都行,最后给我们pdf。只要你写够页数了那么苦劳分2分就会给你。
  • 然后的评分就看评你的助教欣不欣赏你的工作了,每篇文章都会由两个助教看,如果分差不大取max。
  • 注意,哪怕你没做什么牛B功能和优化,你只要总结的够清楚(比如一个不懂编译器的人看了你的报告后就会写了),也能获得高分。
  • 而对于做了一些额外功能和优化的同学,应该着重写你们这方面的成果。
  • 评测的deadline是25号,报告是6月1号,把pdf放在你的repo根目录下就行,tag还是finalterm。

Possible innovation for your project (Please report if you do these and you will get bonus):

  • Use C language to implement the compiler. (You will achieve a full score by doing this, but you also need to do the register allocation.)
  • Implement typedef
  • Implement higher order functions. (lambda expression, etc.)
  • Static analyzer (abstract interpreter)
  • Garbage collection (If you pass our testcases, you can get this bonus.)
  • Optimization (loop-unrolling, constants propagation, inline functions, dead code elimination, etc.)
  • Concurrency and scheduling
  • Reconstruct the AST
  • Design pattern you used in your code
  • Implement the dynamic array
  • Implement free()
  • ...

Please notice you can write anything you did and you find interesting in your report,just do your best to surprise the tutors!

Submission Guideline and Version Control

  • You are required to use BitBucket.
  • Cheat is forbidden.
  • You can use the latest GoAgent to visit BitBucket. If this does not work, try this:
    • Modify local/proxy.ini: change profile = google_cn into profile = google_hk in [gae].

Preparation

  1. Create a Bitbucket account and a private git repository compiler2014
  2. Add username acmcompiler to your repository with read permission

Refer to Bitbucket 101 on how to install git and how to create accounts and repos, etc.

Warning: You must create a private repository so others cannot access your code. If you share code with others, you will get a score of zero for this course. It is recommended to create the .gitignore file with the following content.

bin/
*.class

Resources

Please inform us if you find a file unaccessible.

Books

Papers

Useful links about the MIPS Assembly Language

Other Useful links

Tutors

Name Email cell-phone
贺天行 cloudygooseg@gmail.com 18721535886
解东 xiedong1993@gmail.com
吴航 wuzhongminghang@gmail.com
金天行 121665841@qq.com