2012-02-29 17 views
1

我正在設計一門語言。我被稱爲「其他如果」的東西感到困擾。我的語言使用縮進塊,所以我需要一個關鍵字「else if」。避免在關鍵字中使用空格

Python使用「elif」(meh ...),Ruby使用「elsif」(yuck!)。就個人而言,我討厭使用縮寫,所以我不想使用其中任何一種。相反,我正在考慮使用「else if」,其中在「else」和「if」之間可以出現任意數量的空格。

我注意到這在編程語言中不經常出現。 C#將「yield return」作爲關鍵字,但這是我能想到的唯一例子。

背後是否存在執行問題?我創建了我的lex文件,它接受沒有問題的關鍵字。我擔心有一些我沒有想到的東西。

+0

「yield return」不是C#中的關鍵字。 「yield」是一個* contextual *關鍵字,它在某些情況下僅具有特殊含義。 – 2012-02-29 17:59:58

回答

2

只要您不允許內嵌評論/換行符,多詞關鍵詞沒有任何問題。唯一可能的是else if可能會讓您的語言用戶感到困惑,並誘使他們編寫else whileelse for。你很難解釋他們,你的else if是一個關鍵字,而不是兩個關於對方的陳述。

1

出於好奇,爲什麼還要有一個「else if」關鍵字?你可以只有一個「else」關鍵字,接下來就是一個表達式......一個「if」表達式。

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

這個想法是,如果在「else 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 4不大於if不同,它的「論據」的概念。只要你在同一行上分配下一個命令的開始(即使它不被認爲是好的形式),你可以將else if中的if作爲下一個表達式的開始。

+0

我的語言將是另一種使用縮進來表示新範圍的語言。我不希望人們堅持如果語句和循環都在一行上,因爲這會變得討厭。我不想爲其他人創建一個特殊情況,然後是if。 – 2012-03-10 15:06:48