我是一名 CS 学生,今年我有一个编译器项目。
我想知道如何与我的三个合作伙伴一起管理我的项目。
我知道编译器有很多层次和过程,我想利用这些特性来管理我的项目。
感谢您为我提供的任何提示/指针/资源。
我是一名 CS 学生,今年我有一个编译器项目。
我想知道如何与我的三个合作伙伴一起管理我的项目。
我知道编译器有很多层次和过程,我想利用这些特性来管理我的项目。
感谢您为我提供的任何提示/指针/资源。
你还没有真正指定你正在编译的是什么,所以提出具体的建议有点困难。
如果你正在做一些新奇的事情,几周前我写了一篇博文,其中有一些具体的事情需要考虑:
http://www.plsadventures.com/2009/09/why-programming-language-design-is-hard.html
如果它是您正在编译的预先存在的语言,那么我会努力生成一个像样的测试语料库,并考虑使用测试驱动的开发来管理您的进度。
正如您所提到的,大多数编译器中都有一些相对离散的明显组件。我会考虑记录连接这些组件的接口。例如,如果一个人正在编写词法分析器而另一个人正在编写解析器,那么请确保您在某处写下了一个标记列表。解析和/或抽象语法树的格式应该被定义和写下来,以便任何从事优化或代码生成工作的人都在同一页面上。
最重要的是,测试确实有助于这种集成。在大多数情况下,您应该能够单独构建这些组件并将它们组合在一起。
你应该使用像 Git 或 Mercurial 这样的 DCVS,这样你们每个人都可以单独开发,同时仍然很容易合并更改。
接下来,您应该定义测试用例以了解您需要哪些功能以及如何知道某个功能有效。
这应该有助于找出项目的不同领域,这些领域不会重叠太多,这样团队的每个成员都可以工作而不会互相踩踏。