很久没有写代码了,现在的状况下很怕自己的手生了,所以一直想给自己找个小项目来做做。能赚钱的项目要么落不到我头上,要么就是太麻烦、太没技术含量、太廉价,干脆找点自己喜欢的事情做好了。
既然这点想通了,偶觉得最适合自己的项目就是在llvm的框架下构建一个ttcn-3的编译器了。虽然好像有点大了,但是无所谓,自己做着玩的。如果真做成“玩具”也就罢了,何况这块我还真没看到什么市场(这点和找工作时的想法一样)……
Idea
分成前端(编译器)和后端(执行器,ttcn-3有自己的执行语义)应该是没有什么异议了。
Frontend
前端的输入:应该是ttcn-3的文本描述形式,至于表描述形式和图描述形式,暂且推迟考虑。
前端的输出:LLVM的bytecode?(这一块还真是不了解)后续工作应该再支持输出ttcn-3的图、表描述形式。
前端的实现:本来想着是不是用lex和yacc来实现词法和语法分析,后来决定还是自己手工实现吧。要不然作为号称的“编译器爱好者”,没自己动手做过词法、语法实在说不过去,再者想深入学习一下clang里面的东西(手工实现可以强迫自己读一下parser)。代码优化,先pass吧……代码生成,还不知道该怎么做,继续学习……图、表生成,先仅在设计阶段考虑好了……
准备工作:t3核心语义忘得差不多了,需要复习一下;clang的parser,是无论如何都要深入研读了;原来项目的东西,也需要回顾回顾。
Backend
对于后端的认识,太有限了,有空先看看ttcn-3的操作语义、TRI、TCI吧。而且对于llvm后端的认识,应该说为0。
唉,就想了这么多。做一步,想一步;想一步,写一步吧。
具体的例如进度表什么的,就不给自己定了,事情太多,忙不过来。