避免关键字中的空间

时间:2012-02-29 17:55:40

标签: whitespace language-design compiler-theory

我正在设计一种语言。我对被叫什么感到困扰"否则如果"。我的语言使用缩进块,所以我需要一个关键字"否则如果"。

Python使用" elif" (meh ......)和Ruby使用" elsif" (呸!)。就个人而言,我讨厌使用缩写,所以我不想使用其中任何一种。相反,我正在考虑使用"否则如果",其中任意数量的空格可以出现在" else"和"如果"。

我注意到这在编程语言中并不经常发生。 C#有"收益率"作为一个关键词,但这是我能想到的唯一例子。

这背后是否存在实施问题?我创建了我的lex文件,它接受了没有问题的关键字。我担心有一些我无法想到的事情。

2 个答案:

答案 0 :(得分:2)

只要您不允许内联评论/换行,多字关键字就没有错。唯一的问题是else if可能会让您的语言用户感到困惑,诱使他们撰写else whileelse for。你很难向他们解释你的else if是一个关键词而不是两个句子。

答案 1 :(得分:1)

出于好奇,为什么要打扰“else if”关键字呢?你可以只有一个“else”关键字,下一个是表达式......一个“if”表达式。

<expression> := IF | somethingelse
IF <expression> THEN <expression> ELSE <expression>

想法是“else if”中的if只是“else”关键字后面的表达式的开头。

根据评论我的意思的样本

if (x == 1)
    return 5
else return 4

if (x == 1)
    return 5
else if (x == 2)
    return 6
else
    return 7

上面的概念是return 4if和它的“参数”没有区别。只要您在同一行上分配下一个命令的开头(即使它不被认为是好形式),您可以将if中的else if视为下一个表达式的开头。< / p>