複製鏈接
請複製以下鏈接發送給好友

語法錯誤

鎖定
語法錯誤是指程序語法有誤,編譯器或解譯器在詞法分析時無法將其轉換為適當的編程語言。
中文名
語法錯誤
外文名
Syntax error
定    義
程序語法有誤
領    域
計算機

語法錯誤簡介

編譯語言中,語法錯誤一定只在編譯期時出現,編譯器要所有的語法都正確,才能正確編譯。不過解釋型語言中的語法錯誤可能要到運行期才會出現,而且不一定容易區分語法錯誤及語義錯誤。
早期8位家用電腦的用户界面是BASIC解釋器,SYNTAX ERROR錯誤消息常造成用户的困擾,只要解釋器無法識別用户的輸入,就會出現此一消息。
計算器中輸出不正確的算式,也會出現語法錯誤,例如算式中有左括號但沒有右括號、或是一個數字中有多個小數點等。
Java語言中,以下的程序是正確的:
System.out.println("Hello World");
以下的程序不正確:
System.out.println(Hello World);
第二個程序理論上要顯示的是叫作Hello World的變量,而不是Hello World這個字,且Java語言的變量名稱中不可有空白,因此會出現語法錯誤。
編譯器會標示程序中有語法錯誤的行,可能也會有簡單的説明。 [1] 

語法錯誤語義錯誤

在計算機程序設計中,語義錯誤(Logic error)(又叫邏輯錯誤)是程序錯誤的一種,這種錯誤會導致程序運行出錯,但還不至於崩潰。邏輯錯誤會產生意外的輸出或結果,但並不一定會立即被發現。
邏輯錯誤在編譯語言解釋語言中都可能出現。與語法錯誤的程序不同的是,邏輯錯誤的程序從語法上來説是正確的一段程序,但其運行結果卻與預期不符。邏輯錯誤的唯一表現就是錯誤的運行結果。
在 C++ 語言中,邏輯錯誤是一種特殊的異常
邏輯錯誤的原因可能是語句中出現了差錯(比如公式寫錯)、算法中的錯誤,甚至是選擇了錯誤的算法。此外還有一些其它原因,如類型轉換錯誤、變量作用域錯誤、遺漏的代碼段、對問題或需求的理解有誤等等。 [2] 

語法錯誤解釋型語言

解釋型語言(英語:Interpreted language),是一種編程語言。這種類型的編程語言,會將代碼一句一句直接運行,不需要像編譯語言(Compiled language)一樣,經過編譯器先行編譯為機器碼,之後再運行。這種編程語言需要利用解釋器,在運行期,動態將代碼逐句解釋(interpret)為機器碼,或是已經預先編譯為機器碼的的子程序,之後再運行。
理論上,任何編程語言都可以是編譯式,或解釋型的。它們之間的區別,僅與程序的應用有關。許多編程語言同時採用編譯器與解釋器來實現,其中包括Lisp,PascalC,BASIC與PythonJAVAC#採用混合方式,先將代碼編譯為bytecode,在運行時再進行解釋。 [2] 
參考資料
  • 1.    Louden, Kenneth C. (1997). Compiler Construction: Principles and Practice. Brooks/Cole. ISBN 981-243-694-4. Exercise 1.3, pp.27–28.
  • 2.    Aho, Alfred V.; Monica S. Lam; Ravi Sethi; Jeffrey D. Ullman (2007). Compilers: Principles, Techniques, and Tools (2nd ed.). Addison Wesley. ISBN 0-321-48681-1