views:

73

answers:

2

I am a CS student and I have a compiler project this year.

I want to know how to manage my project with my three partners.

I know that the compiler has many level and process, and I want to make use of these features to mange my project.

Thanks for any tips/pointers/resources you can provide for me to start.

A: 

You should use a DCVS like Git or Mercurial, so each of you can develop individually while it's still easy to merge changes.

Next, you should define test cases to know which features you'll need and how you will know that a feature works.

That should help to figure out different areas of the project which don't overlap too much so each member of the team can work without stepping on each others toes.

Aaron Digulla
+2  A: 

You haven't really specified what it is that you are compiling, so it's a little difficult to make specific recommendations.

If you're doing something novel, I wrote a blog post a couple of weeks ago that has some specific things to consider:

http://www.plsadventures.com/2009/09/why-programming-language-design-is-hard.html

If it is a pre-existing language you are compiling, then I would work to generate a decent test corpus, and consider using test-driven development to manage your progress.

As you mentioned, there are some obvious components in most compilers that are relatively discrete. I would consider documenting the interfaces that connect these components. For example, if one person is writing the lexer and another is writing the parser, then ensure that you have a list of tokens written down somewhere. The format for your parse and/or abstract syntax trees should be defined and written down so that anybody working on optimisation or code generation is on the same page.

Above all, tests really help this kind of integration. You should be able to build these components separately and put them together, for the most part.

Gian