2011-04-11 50 views
1

我在考虑创建一个基于C的自定义(小)编程语言(语法)。 我不明白苹果如何用像[testClass runThis:true]这样的运算符实现objective-c;用那个语法。创建编程语言问题

我将如何实现自定义的语法为我定制的C语言

回答

5

你可能想看看Clang(在C,C++和LLVM编译器的对象 - 前端)和Eero Programming Language,基于一种新的语言在用LLVM构建的Objective-C上。这两个项目都是开源的。

2

你需要实现一个解析器和一个词法分析器来开始。一种方法是从K的“C编程语言”中获取C语法和语法,并将其用作Flex和Bison的输入来创建独立的解析器。这将解析语法上有效的C程序。之后,您可以根据需要对其进行调整并对其进行自定义。

然而这是一个不平凡的项目,你必须准备好自学大量的编译器。祝你好运!

+0

我正在尝试创建基于C的自定义语法编程语言,如objective-c – Daniel 2011-04-11 10:34:57

0

升级到C++并且您可以创建DSEL(特定于域的嵌入式语言)。我不知道你想解决什么问题,但是精心设计的DSEL可能比设计自己的语言和创建解析器,编译器等方便得多。拿一本这本书的副本来获得一些见解:C++ Template Metaprogramming

1

你必须编写一个编译器。如果你的语义符合,你可能会直接编译为C代码;否则你还必须为你的语言编写一些运行库,这些运行库不容易直接翻译成C语言。鉴于你在谈论一个基于C语言的小型语言,但这可能不是问题。

你如何去做这件事?哦。人。

关于writing a compiler的主题有几十本书,文章,教程等。尽管没有单独的编译器特别困难(至少对于天真的非优化编译器),但是有很多东西需要通过很多不同的方式来应对,通常是彼此巧妙地不兼容的方式。

至少,你会希望有一个lexer(通常是通过像flex或作为一个编译器套件像ANTLR的一部分自动化工具),一个parser(通常是通过自动化的工具,如Bison和上述ANTLR)和code generator (通常由手工产生)。实际上,你可能想要在解析器和代码生成器之间插入一个abstract syntax tree,以便为您(或其他人)提供实现各种optimizations的空间,并使代码生成变得更简单。

lots of books这个主题,更不用说研究论文。玩的开心。你试图做的是具有挑战性,但当你把它关掉时会有所收获。