什么是Nim区分命令的方法?

时间:2016-06-23 11:36:46

标签: grammar nim

我试图了解Nim使用何种方法来区分命令。

有分离主义的方法"分号只是分隔命令(例如在Pascal中使用),"终结者方法"分号完全终止命令(用于C,C ++,Java等)和#34;自由主义方法"程序员可以决定是否使用分号。

我的想法是Nim属于自由主义的方法,但这意味着可以在命令的末尾添加分号,Nim不支持它。

还有其他想法吗?

3 个答案:

答案 0 :(得分:1)

我正在尝试了解Nim使用哪种方法 区分命令。

为什么?这没有任何帮助……Nim具有复杂的语法,无法轻松放入此类框中。

您的问题在几种方面感到困惑。首先,什么是“命令”?分号分隔语句或表达式。类别之间的差异主要在表达式语言中很重要-它确定以分号结尾的块的值是底值还是前一个表达式的值。 “分离主义”语言令人困惑,容易出错,设计不当且已过时-Algol的错误是古老的历史。其次,在行尾在语法上很重要的语言(如Nim)中,类别没有多大意义-在换行符之前并没有真正丢失“分号”,因为换行符具有相同的功能。第三,Nim最肯定可以在表达式或语句的末尾使用分号(但不允许空的语句或表达式,因此禁止使用;;)。

考虑:

proc a: int = 5  # returns 5

proc b: int = 5; # syntax error

proc c: int = # returns 5
    5

proc d: int = # returns 5
    5;

proc e: int = # syntax error
    5;;

由于区分;c的{​​{1}}在语义上没有区别,因此可以说它更接近“自由主义”,而不是“分离主义”或“确定论”,但是它不是非常自由派...您不能只在任何地方放置分号。

答案 1 :(得分:0)

Nim和Python一样,是一种空格感知语言。它使用换行符作为语句分隔符和缩进来生成块结构。

并非所有语言都有可见的语句分隔符,尽管有些语言在某些情况下允许使用可见的语句分隔符。 (例如,在Python中,简单语句可以用分号分隔,但不能用复合语句分隔。)

“天上和地上有更多的东西,霍雷肖,比你们的哲学所梦想的更多”(哈姆雷特I.5:159-167)

答案 2 :(得分:0)

Nim的陈述通常是一条线,意味着它们被换行符分隔,而不是分号。还有由缩进定义的块,statement list expressions包含以分号分隔(未终止)的语句。