Parsing 有没有语义接近英语的编程语言?

Parsing 有没有语义接近英语的编程语言?,parsing,compiler-construction,programming-languages,nlp,Parsing,Compiler Construction,Programming Languages,Nlp,大多数语言都允许“tweek”来扩展您将在代码(,)中使用的语法(,)和/或语义的某些部分。但我还没有听说过一种语言可以完全定义代码的外观。那么,难道没有一种已经存在的语言具有覆盖所有语法和定义语义的能力吗 我想做的示例基本上来自下面的C代码: foreach(Fruit fruit in Fruits) { if(fruit is Apple) { fruit.Price = fruit.Price/2; } } 我希望能够用我的完美语言编写上述代码,如下所示: Che

大多数语言都允许“tweek”来扩展您将在代码(,)中使用的语法(,)和/或语义的某些部分。但我还没有听说过一种语言可以完全定义代码的外观。那么,难道没有一种已经存在的语言具有覆盖所有语法和定义语义的能力吗

我想做的示例基本上来自下面的C代码:

foreach(Fruit fruit in Fruits)
{
  if(fruit is Apple)
  {
    fruit.Price =  fruit.Price/2;
  }
}
我希望能够用我的完美语言编写上述代码,如下所示:

Check if any fruits are Macintosh apples and discount the price by 50%.
从程序员的角度来看,这种“想象”语言的优势在于:

  • 这是非常清楚的发生了什么(自我描述)-这是简单的英语毕竟连孩子都会理解我的程序
  • 隐藏了我必须用C#编写的所有复杂性。但我为什么要学这些呢 由于已经实现了if语句、算术运算符等
  • 对于维护此程序的程序员,我看到的缺点是:

  • 也许你会用不同于我的方式来表达这个程序,这样你就不会得到所有的信息 我在句子中表达的信息
  • 程序可能非常冗长,很难调试,但是如果可能的话,甚至接近上面的这种语法,也许更多的人会开始编程,对吗?我想那太棒了。我可以去工作,写一篇文章在winform上画一个正方形,就像这样:
  • 创建一个名为MyGreetingForm的表单。在中间画一个正方形。
    我的迎宾表有100分。在正方形中间写“你好!点击这里继续”在ARIAL字体。< /代码> 

    在上面的代码中,解析器基本上必须猜测我想要使用 前一句中未命名的方块,我想写一个如此智能的解析器是很困难的,但是我想做的事情是如此简单

    <代码>如果用户单击MyGrimeType中间的正方形,则显示MyMyFrase.< /代码>

    在上面的代码“基本上”编译器必须:1)生成事件处理程序2)检查窗体中间是否有任何正方形,如果有- 3)隐藏窗体并显示另一个窗体

    这看起来很难做到,但至少在我看来这并不是不可能的(我个人可以生成一个解析器来执行np上面的3个步骤&这基本上与在c#
    a.MyEvent=+handler;
    中添加时必须以任何方式进行的操作相同,所以我看不出有什么问题)我在想也许有人已经做过这样的事了?或者,创建这样一种我看不到的“散文风格”编程语言,是否存在一些实际的复杂性负担?我的意思是,如果解析器没有那么好,会发生什么更糟糕的情况您的程序将崩溃,因此您必须重新编写:)

    签出:

    代码示例:

    The background is a picture.
    
    A button has a box and a name.
    
    To clear the status:
      Clear the status' string.
      Show everything.
    
    To create the background:
      Draw the screen's box with the white color.
      Loop.
      Pick a spot anywhere in the screen's box.
      Pick a color between the lightest gray color and the white color.
      Dab the color on the spot.
      If a counter is past 80000, break.
      If the counter is evenly divisible by 1000, refresh the screen.
      Repeat.
      Extract the background given the screen's box. \or Create the background from the screen. Or something.
    

    一些交互式小说设计师使用的语言语法非常接近英语。以下是一些代码,您可以:


    我辅导了一门使用Inform 7的课程。其中一位导师给人的印象是,任务是设计,而不是编写游戏。因此,他通过阅读程序来标记程序,而没有意识到它们是实际的程序。

    我不认为这是一项容易的任务,也不认为这会使调试变得更容易

    您将如何处理这些问题

    • 拼写错误
    • 世界不同地区的不同方言
    • 世界同一地区的不同方言
    • 同义词
    • 你首先分析句子的哪一部分
    • 眼泪和眼泪这两个单词拼写相同,但意思不同
    带回来或者你们能记得“向西走”、“检查门”、“推门”、“开门”、“用钥匙开门”:


    编辑-您将如何强烈地键入此内容?

    尝试使用名为“Google”的编程语言-它有一个自然的英语界面,您的代码片段会返回您建议的所有答案。有趣的是,在你问了这个问题六分钟后,这一页就是#1查询:

    检查是否有水果是麦金塔的 苹果和折扣价格的50%


    使用Google API,我认为您已经拥有了自然英语编程语言的基础。

    我已经编写了一个可扩展的英语到Python编译器,名为,它将结构化英语转换为工作Python代码

    这是EngScript代码的一个示例:

    print{create a string from the file called "README.txt"}
    print{save the string "Woohoo!" to a file called "ExampleText.txt"}
    print{the first 3 letters of "EngScript"}
    
    这是EngScript编译器生成的输出:

    print(pythonFunctions.stringFromTextFile("README.txt"))
    print(pythonFunctions.writeStringToFile("ExampleText.txt", "Woohoo!"))
    print("EngScript"[0:(3 - 1)+1])
    
    现场代码! 有一些“自然语言”,高级的,类似英语的编程或脚本语言。也许他们都是受最古老的COBOL的启发。我个人最喜欢的语言是LiveCode。LiveCode是MetaCard的一种,MetaCard是苹果现已不复存在的HyperCard的Linux克隆,它使用了一种类似英语的脚本语言HyperTalk,其灵感来源于SmallTalk,反过来又启发了JavaScript(以及整个万维网)。HyperTalk是另一种类似英语的脚本语言AppleScript(后来是AppleScriptObjC)的基础,macOS至今仍在使用它。LiveCode使用一种称为LiveCodeScript的语言,或LCS,与其他HyperCard克隆一样,这种语言已经存在多年(SuperCard、Adobe的Lingo/Flash ActionScript、Open Xion、Oracle的Toolbook等),其核心与HyperTalk非常相似,通常被称为X-Talk语言。LiveCode有几个优点;它仍在生产中,拥有双重许可证(开源和商业版本),引擎是跨平台的(Mac、Win、Linux、HTML5、iOS、Android和服务器版本),与HyperCard一样,它也是一个GUI工具包,具有可扩展性。LiveCode团队目前正在开发一种新的低级编程语言,称为LiveCode Builder或LCB。LCB是
    print(pythonFunctions.stringFromTextFile("README.txt"))
    print(pythonFunctions.writeStringToFile("ExampleText.txt", "Woohoo!"))
    print("EngScript"[0:(3 - 1)+1])