2014-10-18 29 views

回答

0

其「只是」一個語法錯誤;語法告訴你寫什麼是合法的,但事實並非如此。

人們會談論一種特殊的語法錯誤,並說有一個畸形的標記或詞位。但是這只是裏面的一個細節編譯器。

如果寫了這段代碼,它是你的錯誤,不是編譯器的。

+1

你從哪裏知道這不合法? – Ingo 2014-10-18 14:53:00

+0

檢查語言參考手冊。 (我認爲OP的意思是「C」作爲語言,因爲他似乎正在寫一些大多數在C和C中都有效的東西)。 – 2014-10-18 14:54:01

+0

@IraBaxter在C中,這將是一個詞法錯誤,但不是語法錯誤(您在第二句中同意這一點,所以我不確定爲什麼你在第一句中聲明)。 – sepp2k 2014-10-18 14:58:14

2

它既不是。

誰說這個構造是無效的?

它完全取決於你的定義。

例如,你可能已經定義了`跡象可能僅是成對出現的,如「描述字符串文字。然後,它會是一個詞法錯誤。

OTOH,`可能是一些預定義的綴操作符,像*。然後這將是一個語法錯誤,因爲表達式的左邊缺失。

或者`可能是一個整數運算符,那麼它將是一個類型錯誤,因爲顯然是一個char。

+0

可以對OP的問題做出合理的假設。 – 2014-10-18 14:56:36

+0

@IraBaxter或者人們可以像它被問到的那樣回答它。 OP認爲在詞法和語法錯誤之間存在一些預定義的,固定的,不可移動的邊界,而不管使用什麼語言。另外,你也可以假設Java。或者Haskell,像'char a = a'這樣的定義至少是有意義的。 – Ingo 2014-10-19 15:48:08

0

如果在您的語言中後跟字母或反引號是有效令牌,則這是語法錯誤(除非「backtic k後跟標識符「實際上是語言中語法上有效的表達式,當然)。

如果您的語言沒有反向符號或反向符號後跟字母標記,則這是一個詞法錯誤。

如果你的語言(有點令人驚訝/反直覺)對字符文字使用反引號(使用形式反引號,字符,反引號),它仍然是一個詞法錯誤,因爲字符文字未被封閉。

0

這是一個詞法錯誤。


正則用於字符表達可能是 '((\)|。[^ \']) '


這將接受像任何字符 '一個', 'Z',' \ t','\ n'。

如果您的詞法分析器未找到開始或結束單引號,則會標記詞法錯誤。 如果a或=或'a'或;上面表達式中缺少/缺失。