语法错误
此條目內容疑欠准确,有待查證。 (2015年7月26日) |
在計算機科學中,语法错误是指程序的語法有誤,編譯器或解譯器在詞法分析時無法將其轉換為適當的程式語言。
在編譯語言中,语法错误一定只在編譯期時出現,編譯器要所有的語法都正確,才能正確編譯。不過直譯語言中的语法错误可能要到執行期才會出現,而且不一定容易區分语法错误及語意錯誤。
對於哪些錯誤算是语法错误,目前還沒有共識。例如有人會認為在Java程式裡使用未定義變數算是語法錯誤,但有些人則不認為[1][2],認為這是靜態的語意錯誤。
早期8位元家用電腦的使用者介面是BASIC直譯器,SYNTAX ERROR錯誤訊息常造成使用者的困擾,只要直譯器無法識別用戶的輸入,就會出現此一訊息。语法错误可能是因為輸入的算式不正確,例如算式中有左括號但沒有右括號、或是一個數字中有多個小數點等。
在Java語言中,以下的程式是正確的:
System.out.println("Hello World");
以下的程式不正確:
System.out.println(Hello World);
第二個程式理論上要顯示的是叫作Hello World的變數,而不是Hello World這個字,且Java語言的變數名稱中不可有空白,因此會出現語法錯誤。
編譯器會標示程式中有语法错误的行,可能也會有簡單的說明。
型態錯誤(例如在Java中對布林變數作++遞增運算)或是未宣告的變數,若在編譯時發現,有時會視為是语法错误。不過也常將這類錯誤歸類為靜態語意錯誤[2][3][4]。
相關條目
编辑參考資料
编辑- ^ Issue of syntax or semantics?. [2024-04-02]. (原始内容存档于2016-09-23).
- ^ 2.0 2.1 Semantic Errors in Java. [2024-04-02]. (原始内容存档于2016-08-18).
- ^ Aho, Alfred V.; Monica S. Lam; Ravi Sethi; Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools 2nd. Addison Wesley. 2007. ISBN 978-0-321-48681-3. Section 4.1.3: Syntax Error Handling, pp.194–195.
- ^ Louden, Kenneth C. Compiler Construction: Principles and Practice. Brooks/Cole. 1997. ISBN 981-243-694-4. Exercise 1.3, pp.27–28.