我正在考虑编写一个编译器,在我完成了一些"C“风格的东西之后,我正在考虑将其适应于其他模型。您希望在“自然”编程语言中看到哪些语法结构?
这个编译器的目标平台将是CLR,我目前正在使用Oslo+MGrammar作为词法分析器/解析器(正如你可能知道的那样,这只是一个借口)。
我的项目的目标之一是让编程感觉更像是一场对话,而不是结构化的语法和需求。
我想我应该稍微扩展一下。我正在使用的一个想法是让类声明读起来像一个段落。
A Dog is a mammal. It may Bark and Run. To Run it
uses its feet to move forward. It does Lay....would翻译也是...
public class Dog : Mammal{
public Feet Feet { get; set;}
public virtual void Bark() {}
public virtual void Run() {
this.Feet.MoveForward();
}
public void Lay(){}
}发布于 2009-05-19 22:53:03
如果你想让你的设计从某种在“自然”方向上达到极端的东西中获得灵感,Graham Nelson已经在基于自然语言的领域特定编程语言上做了一些really stunning new work。这个系统被称为Inform 7,在我看来,它将会给分析带来足够的回报。
Info7的一个问题是,演示完全是面向非程序员的。甚至不容易发现语法是什么!但结果给我留下了深刻的印象,我相信有一些新的绑定结构提供了真正的新想法-它不仅仅是非常吸引人的包装中的旧东西。非常值得一看!
发布于 2009-08-25 01:38:48
在过去一个月左右的时间里,我一直在用Inform7写一些互动小说,它真的是一门令人印象深刻的语言。我发现它与我通常使用的语言不同,因为我仍然在创建一些东西,但以一种更自然的方式描述它。
例如,这将是一个在Inform7中完全有效(尽管很短)的程序:
The Building Lobby is a room. "You are standing in the lobby of a building."
There is a supporter called desk here. "A large reception desk is to your right."
There is a device called lamp on the desk which is switched off.
There is a container called trash can on the floor next to the desk.
There is a thing called crumpled paper in the trash can.发布于 2009-05-19 22:07:54
我知道有一种英语试图像编程语言一样严谨(但失败了):法律术语。律师的训练是用英语或类似英语的东西明确地写作。(大量的拉丁语,一些神奇的短语,等等)
如果你想要一种通用的编程语言,它不会像自然语言那样。自然语言是模棱两可的,它依赖于高度智能的处理,在许多情况下,还需要问答练习来消除剩余的歧义。嗯,试图去掉它;在很多情况下,如果A对B说了什么,A对B理解的看法与B的理解是不同的。
这并不是技术的问题,而是自然语言与人工语言的本质问题。
当然,您可以尝试在您的语言中实现某种形式的歧义,但我不认为这是有用的。不过,玩起来可能会很有趣,这就是你的目标。
https://stackoverflow.com/questions/885097
复制相似问题