構文エラー【syntax error】シンタックスエラー/文法エラー
概要

ソースコードはプログラミング言語の仕様に従って記述されなければならない。コンパイラやインタプリタなどの言語処理系はソースコードを構文規則に照らして解析するが、規則に反する記述が見つかると構文エラーが発生し、処理を中断してエラーメッセージを出力する。
誤りを修正すれば構文エラーは消え、処理系による解釈・変換を最後まで行うことができるようになる。ただし、これはあくまでもコードが言語仕様に形式的に適合していることのみを示しており、計算手順の誤りなどによって意図しない結果を招く「論理エラー」などは別途存在しうる。
構文エラーの具体的な原因としては、括弧や引用符の対応の誤り、文末に必要な記号の欠落、予約語の綴り間違いや誤配置などがある。人間には意味が推測できる記述であっても、処理系が規則に基づいて解釈できなければエラーとして扱われる。多くの処理系はエラーが発生した行番号や周辺の記述内容を示すが、実際の原因がエラー箇所より前方にある場合も少なくない。
構文エラーが検出されるタイミングは、言語や処理系の方式によって異なる。コンパイル方式の言語では実行前の変換段階で検出されるコンパイル時エラーとなり、インタプリタ方式の言語では実行時にコードを解釈する過程で検出される実行時エラー(ランタイムエラー)となる。
近年では統合開発環境(IDE)やコードエディタの機能が向上し、コードの入力中にリアルタイムで構文を解析して誤りを即座に指摘する仕組みが普及している。これにより、実行やコンパイルを行う前の段階で構文エラーを発見・修正できる環境が整っている。なお、HTMLやCSSなどプログラム以外の記述言語では、構文エラーがあっても即座に処理を打ち切ることはせず、解釈可能な範囲で表示を行う仕組みになっていることが多い。