خطای نحوی

دانشنامه عمومی

خطای نحوی یک خطا در کد منبع برنامه است. از آن جایی که برنامه های کامپیوتری باید دستوارت سخت گیرانهٔ نحوی مشخص را دنبال کنند تا برنامه درست کامپایل شود، هر جنبه ای از کد که با دستورها نحوی برنامه مطابقت ندارد، یک خطای نحوی تولید می کند. خلاف خطاهای منطقی که خطاهایی هستند که در جریان یا منطق برنامه هستند، خطاهای نحوی، اشتباهات گرامری هستند که معمولاً محدود به یک کاراکتر است. برای مثال، نگذاشتن نقطه ویرگول در آخر هر خط یا آکلاد اضافه در آخر هر تابع، خطای نحوی تولید می کنند. [ ۱]
• خطای زمان اجرا
یافتن و اصلاح خطاهای زمان اجرا دشوارتر از خطاهای نحوی می باشد، توجه کنید که اگر script دارای خطای نحوی باشد، مفسر آن را تشخیص می دهد. این خطاها از نظر دستور زبان صحیح است مانند گذاشتن break در دستور switch یا include کردن یک فایل در صورتی که آن فایل موجود نباشد، خطای تقسیم بر صفر، فراخوانی توابعی که وجود ندارند.
• خطای نحوی
نادیده گرفتن یک قانون کنترل کننده ساختار زبان برنامه نویسی در حال استفاده. برای مثال نوشتن RIAD A بجای READ A موجب می شود که کامپیوتر مفهوم آن را درک نکند. معمولاً کامپیوتر به وسیله نشان دادن یک پیام خطا مانند Syntax error at ۲۴۰ به چنین دستورالعملی جواب خواهد داد.
• خطاهای منطقی
پیدا کردن و برطرف خطاهای منطقی از هر نوع خطای دیگری دشوارتر است، این خطا در جایی رخ می دهد که کد معتبر دقیقاً آنچه را باید انجام بدهد اجرا کند، ولی برنامه نویس کد انتظار دیگری دارد، یعنی که از نظر اجرا درست است اما کار دیگری را انجام می دهد.
• خطای محیطی
این خطاها نتیجه ی عوامل جانبی در برنامه هستند و زمانی رخ می دهند که موجودیت های خارجی نظیر فایل ها و اتصالات شبکه ای به خوبی اجرا نشود. مثلاً درایو NTFS است ولی باید FAT باشد.
یک راه برای فکر کردن به یک خطای نحوی این است که عمل کرد شفاف سازی قابل توجهی در وضوح و قابلیت استفاده از کد ارائه می دهد. مانند سایر فناوری های دیجیتال مثل آدرس ایمیل، حذف یا نابه جایی فقط یک حرف، عدد یا کاراکترهایی که باعث ایجاد مشکلات اساسی برای سیستم های محاسباتی که باید کد رو به صورت خطی بخواند، می شوند. هم چنین فکر کردن در مورد دلایل معمول خطاهای نحوی مفید است. هم یک برنامه نویس ممکن است خطای تایپی انجام دهد و هم ممکن است بعضی از کلمات و دستورها را فراموش کند. خطاهای نحوی با حطاهایی که روی برنامه در زمان اجرا تاثیر می گذارند، متفاوت است. در بسیاری از خطاهای منطقی، کامپایلر خطاها را نمی تواند بگیرد، زیرا حتی اگر خطاهای سنگینی ایجاد کنند، دستورهای نحوی آن ها با دستورهای درست مطابقت دارد. به عبارت دیگر، کامپیوتر نمی تواند بگوید که آیا خطای منطقی باعث ایجاد مشکلاتی می شود یا خیر. اما می تواند بگوید که کد با نحو مطابقت ندارد، زیرا درک این نحو به هوش بومی کامپایلر وارد می شود. جنبهٔ دیگر درک خطاهای نحوی این است که نشان می دهند که چگونه، خلاف انسان ها، کامپیوترها نمی تواند از ورودی استفاده کنند که به طور کامل طراحی نشده است. نبود یک دوره یا ویرگول در یک جمله یا دستور، دو حرف تعویض شده در یک کلمه، کامپایلر را گیج کرد و کار کردن آن به طور درست را غیرممکن می کند. از طرف دیگر، کسانی که کد را می خوانند، می توانند خطاهای تایپی را تشخیص دهند و آن ها آنچه را که می خوانند می توانند درک کنند. این احتمال وجود دارد که با پیش رفت کامپیوترها طی دهه های آینده، مهندسان بتوانند کامپایلرها و سیستم هایی را ایجاد کنند که بتوانند برخی از انواع خطاهای نحوی را برطرف کنند. حتی الآن، در برخی از محیط های کامپایل، ابزارها می توانند خطاهای نحوی را در جا به طور خودکار اصلاح کنند. [ ۲]
عکس خطای نحوی
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران