อ่าน 10 นาที
การเปรียบเทียบภาษาโปรแกรม (ไวยากรณ์)
โดยทั่วไปแล้ว นิพจน์ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:
การเปรียบเทียบภาษาโปรแกรม (ไวยากรณ์)
บทความนี้เปรียบเทียบไวยากรณ์ ของ ภาษาโปรแกรมมิ่งที่มีชื่อเสียงหลายภาษา
การแสดงออก
โดยทั่วไปแล้ว นิพจน์ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:
- สัญกรณ์คำนำหน้า
- ลิสป์
(* (+ 2 3) (expt 4 5))
- สัญกรณ์อินฟิกซ์
- ฟอร์ทราน
(2 + 3) * (4 ** 5)
- คำต่อท้าย คำต่อท้าย หรือสัญกรณ์โปแลนด์กลับด้าน
- ไปข้างหน้า
2 3 + 4 5 ** *
- สัญกรณ์คล้ายคณิตศาสตร์
- ติวเตอร์
(2 + 3)(45) $$ note implicit multiply operator
การกำหนดขอบเขตของข้อความ
โดยทั่วไปแล้ว ภาษาที่รองรับ โครงสร้าง ประโยคบอกเล่าจะมีกฎสำหรับแง่มุมอย่างน้อยหนึ่งข้อต่อไปนี้:
- ตัวจบประโยค – ใช้เพื่อระบุจุดสิ้นสุดของประโยค
- ตัวคั่นประโยค – ทำหน้าที่กำหนดขอบเขตระหว่างสองประโยค ไม่จำเป็นสำหรับประโยคสุดท้าย
- การต่อบรรทัด – ใช้การขึ้นบรรทัดใหม่เพื่อต่อข้อความในบรรทัดถัดไป
บางภาษาใช้ตัวอักษรพิเศษเป็นตัวจบประโยค ในขณะที่บางภาษาที่เรียกว่าภาษาแบบบรรทัดต่อบรรทัดจะใช้ตัวขึ้นบรรทัดใหม่โดยทั่วไป ภาษาแบบบรรทัดต่อบรรทัดจะมีฟังก์ชันการต่อบรรทัด ในขณะที่ภาษาอื่นๆ ไม่จำเป็นต้องมีการต่อบรรทัด เนื่องจากตัวขึ้นบรรทัดใหม่ถูกมองว่าเป็นช่องว่าง ทั่วไป บางภาษาแบบบรรทัดต่อบรรทัดจะมีตัวคั่นสำหรับใช้คั่นระหว่างคำสั่งในบรรทัดเดียวกัน
| ภาษา | การกำหนดขอบเขตของข้อความ |
|---|---|
| เอบีเอพี | ช่วงเวลาที่แยกจากกัน |
| อาดา | เครื่องหมายเซมิโคลอนปิดท้าย |
| อัลโกล | คั่นด้วยเครื่องหมายเซมิโคลอน |
| อัลโกล 68 | คั่นด้วยเครื่องหมายเซมิโคลอนและคอมมา[ 1 ] |
| เอพีแอล | ขึ้นบรรทัดใหม่ คั่นด้วย[Direct_function ⋄]ตัวคั่น |
| แอปเปิลสคริปต์ | จบบรรทัดใหม่ |
| ออโต้ฮอตคีย์ | จบบรรทัดใหม่ |
| น่าอึดอัด | ขึ้นบรรทัดใหม่หรือจบด้วยเครื่องหมายเซมิโคลอน |
| พื้นฐาน | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายโคลอน |
| บู | จบบรรทัดใหม่ |
| ซี | นิพจน์ที่จบด้วยเครื่องหมายเซมิโคลอนและคั่นด้วยเครื่องหมายจุลภาค |
| ซี++ | นิพจน์ที่จบด้วยเครื่องหมายเซมิโคลอนและคั่นด้วยเครื่องหมายจุลภาค |
| ซี# | เครื่องหมายเซมิโคลอนปิดท้าย |
| โคบอล | คั่นด้วยช่องว่าง บางครั้งคั่นด้วยจุด หรืออาจคั่นด้วยเครื่องหมายจุลภาคและเครื่องหมายอัฒภาคก็ได้ |
| งูเห่า | จบบรรทัดใหม่ |
| คอฟฟี่สคริปต์ | จบบรรทัดใหม่ |
| คริสตัล | นิพจน์ที่จบด้วยขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| ซีเอสซี | เครื่องหมายเซมิโคลอนปิดท้าย |
| ดี | เครื่องหมายเซมิโคลอนปิดท้าย |
| หอไอเฟล | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| เออร์ลัง | เครื่องหมายโคลอนคั่น เครื่องหมายจุดสิ้นสุด |
| เอฟ# | ขึ้นบรรทัดใหม่แล้ว ตามด้วยเครื่องหมายเซมิโคลอน |
| ฟอร์ทราน | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| ไปข้างหน้า | เครื่องหมายเซมิโคลอนใช้ปิดท้ายความหมายของคำ ส่วนช่องว่างใช้ปิดท้ายการใช้คำ |
| จีเอฟเอ เบสิก | จบบรรทัดใหม่ |
| ไป | คั่นด้วยเครื่องหมายเซมิโคลอน (แทรกโดยคอมไพเลอร์) |
| ฮัสเคลล์ | ในการเขียนแบบ do-notation: คั่นด้วยขึ้นบรรทัดใหม่ในการเขียนแบบ do-notation ที่มีวงเล็บปีกกา: คั่นด้วยเครื่องหมายเซมิโคลอน |
| ชวา | เครื่องหมายเซมิโคลอนปิดท้าย |
| โค้ด JavaScript | คั่นด้วยเครื่องหมายเซมิโคลอน (แต่ส่วนใหญ่มักใช้เป็นตัวจบประโยค) |
| โคทลิน | คั่นด้วยเครื่องหมายเซมิโคลอน (แต่บางครั้งอาจถูกแทรกโดยปริยายในบรรทัดใหม่) |
| ลัว | คั่นด้วยช่องว่าง (สามารถใช้เครื่องหมายเซมิโคลอนได้) |
| Mathematicaหรือ Wolfram | คั่นด้วยเครื่องหมายเซมิโคลอน |
| MATLAB | ขึ้นบรรทัดใหม่ โดยคั่นด้วยเครื่องหมายเซมิโคลอนหรือคอมมา (เซมิโคลอน – ซ่อนผลลัพธ์ของคำสั่งที่เลื่อนไปทางขวา, คอมมา – แสดงผลลัพธ์) |
| โรคคางทูมหรือ M | การขึ้นบรรทัดใหม่เป็นการสิ้นสุดขอบเขตของบรรทัด ซึ่งเป็นสิ่งที่ใกล้เคียงที่สุดกับ "คำสั่ง" ที่ภาษา M มี การเว้นวรรคจะแยก/สิ้นสุดคำสั่ง ทำให้คำสั่งอื่นตามมาได้ |
| นิม | จบบรรทัดใหม่ |
| ออบเจ็กต์ปาสคาล ( เดลฟี ) | คั่นด้วยเครื่องหมายเซมิโคลอน |
| ออบเจกทีฟซี | เครื่องหมายเซมิโคลอนปิดท้าย |
| โอแคมล์ | คั่นด้วยเครื่องหมายเซมิโคลอน |
| ปาสคาล | คั่นด้วยเครื่องหมายเซมิโคลอน |
| เพิร์ล | คั่นด้วยเครื่องหมายเซมิโคลอน |
| พีพี | เครื่องหมายเซมิโคลอนปิดท้าย |
| เลือกพื้นฐาน | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| พาวเวอร์เชลล์ | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| บทนำ | คั่นด้วยเครื่องหมายจุลภาค (คำสันธานเชื่อม), คั่นด้วยเครื่องหมายอัฒภาค (คำสันธานแยก), จบด้วยเครื่องหมายจุด (ประโยคย่อย) |
| ไพธอน | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| อาร์ | บรรทัดใหม่สิ้นสุดด้วยเครื่องหมายเซมิโคลอนคั่น[ 2 ] |
| ราคุ | คั่นด้วยเครื่องหมายเซมิโคลอน |
| สีแดง | คั่นด้วยช่องว่าง |
| ทับทิม | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน |
| สนิม | เครื่องหมายเซมิโคลอนปิดท้าย เครื่องหมายจุลภาคคั่นนิพจน์ |
| สกาล่า | ขึ้นบรรทัดใหม่โดยใช้เครื่องหมายเซมิโคลอนคั่น |
| เมล็ดพันธุ์ 7 | คั่นด้วยเครื่องหมายเซมิโคลอน (สามารถปิดท้ายด้วยเครื่องหมายเซมิโคลอนได้) |
| ซิมูล่า | คั่นด้วยเครื่องหมายเซมิโคลอน |
| เอส-ลัง | คั่นด้วยเครื่องหมายเซมิโคลอน |
| การสนทนาเล็กๆ น้อยๆ | ช่วงเวลาที่แยกจากกัน |
| มาตรฐาน ML | คั่นด้วยเครื่องหมายเซมิโคลอน |
| สวิฟต์ | คั่นด้วยเครื่องหมายเซมิโคลอน (แทรกโดยคอมไพเลอร์) |
| ทีซีแอล | ขึ้นบรรทัดใหม่หรือจบด้วยเครื่องหมายเซมิโคลอน |
| วี (วลัง) | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายจุลภาคหรือเครื่องหมายอัฒภาค |
| วิชวลเบส | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายโคลอน |
| วิชวลเบสิก (.NET) | ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายโคลอน |
| โซโจ | จบบรรทัดใหม่ |
| ซิก | เครื่องหมายเซมิโคลอนปิดท้าย |
เส้นต่อเนื่อง
ด้านล่างนี้คือภาษาที่เน้นการเขียนตามบรรทัดซึ่งอนุญาตให้มีการต่อบรรทัดได้ เว้นแต่จะระบุไว้เป็นอย่างอื่น เครื่องหมายการต่อบรรทัดจะต้องเป็นข้อความสุดท้ายของบรรทัด
- bash [ 3 ]และเชลล์ Unix อื่นๆ
- มาโครพรีโปรเซสเซอร์ของภาษาซี ; ใช้ร่วมกับภาษาซี , ซี++และบริบทการเขียนโปรแกรมอื่นๆ อีกมากมาย
- คริสตัล
- Mathematica , Wolfram Language
- ไพธอน[ 4 ]
- ทับทิม
- JavaScript – ใช้ได้เฉพาะภายในสตริงที่อยู่ในเครื่องหมายคำพูดเดี่ยวหรือเครื่องหมายคำพูดคู่เท่านั้น
- Vimscriptเป็น อักขระ ตัวแรกของบรรทัดต่อเนื่อง
- จุดไข่ปลา (สามจุด)
- MATLAB : จุดไข่ปลาไม่จำเป็นต้องจบบรรทัด แต่ข้อความที่ตามมาจะถูกละเลย[ 5 ]มันเริ่มต้นความคิดเห็นที่ขยายไปจนถึง (รวมถึง) บรรทัดใหม่ถัดไปบรรทัดแรก เปรียบเทียบกับความคิดเห็นแบบบรรทัดซึ่งขยายไปจนถึงบรรทัดใหม่ถัดไป
- รูบี้: สามารถใส่ความคิดเห็นตามหลังตัวคั่นได้
- ไฟล์แบตช์ : การเริ่มต้นบล็อกวงเล็บสามารถอนุญาตให้มีการต่อบรรทัดได้[ 6 ]
- รูบี้: วงเล็บเปิด, วงเล็บเหลี่ยมเปิด หรือ วงเล็บปีกกาเปิด
- รูบี้: เป็นวัตถุสุดท้ายของบรรทัด; อาจมีข้อความแสดงความคิดเห็นตามหลังตัวดำเนินการ
- AutoHotkey : เป็น อักขระ ตัวแรกของบรรทัดต่อเนื่อง ตัวดำเนินการนิพจน์ใดๆ ยกเว้น ++ และ -- และเครื่องหมายจุลภาคหรือจุด[ 7 ]
- การใส่คำอธิบายประกอบในบางบรรทัดทำหน้าที่เป็นส่วนต่อขยายของบรรทัด
- เทอร์โบแอสเซมเบลอร์ :
\ - ม4 :
dnl - เท็กซ์ :
%
- ตำแหน่งตัวละคร
- Fortran 77 : บรรทัดที่ไม่ใช่ข้อความแสดงความคิดเห็นจะเป็นส่วนต่อเนื่องจากบรรทัดที่ไม่ใช่ข้อความแสดงความคิดเห็นก่อนหน้า หากมีอักขระใดๆ ที่ไม่ใช่ช่องว่างปรากฏในคอลัมน์ที่ 6 บรรทัดแสดงความคิดเห็นไม่สามารถต่อกันได้
- COBOL : ค่าคงที่สตริงสามารถต่อได้โดยไม่ต้องจบสตริงเดิมในส่วน PICTURE ด้วยเครื่องหมายจุลภาค
'จากนั้นแทรกเครื่องหมายจุลภาค-ในคอลัมน์ที่ 7 (ตำแหน่งเดียวกับที่*ใช้สำหรับข้อความแสดงความคิดเห็น) - คำแนะนำ : บรรทัดที่ขึ้นต้นด้วยแท็บ (หลังจากเว้นวรรคตามความจำเป็นของบริบท) จะสานต่อคำสั่งก่อนหน้า
คอมไพเลอร์ภาษาซีจะเชื่อมต่อสตริง ที่อยู่ติดกัน แม้ว่าจะอยู่คนละบรรทัดก็ตาม แต่นี่ไม่ใช่ไวยากรณ์การต่อบรรทัด เพราะมันทำงานเหมือนกันไม่ว่าจะมีช่องว่างระหว่างสตริงแบบใดก็ตาม
การใช้งานซอฟต์แวร์ภายนอก
ภาษาโปรแกรมรองรับวิธีการอ้างอิงและใช้งานซอฟต์แวร์อื่น ๆ ในไวยากรณ์ของภาษาได้หลากหลายวิธี ในบางกรณีอาจเป็นการนำเข้าฟังก์ชันการทำงานที่ส่งออกของไลบรารี แพ็กเกจ หรือโมดูลแต่บางกลไกก็ง่ายกว่านั้น เช่น การรวมไฟล์ข้อความ
การนำเข้าสามารถจำแนกได้ตามระดับ (โมดูล แพ็กเกจ คลาส ขั้นตอน ฯลฯ) และตามไวยากรณ์ (ชื่อคำสั่ง คุณลักษณะ ฯลฯ)
- ไฟล์รวม
#include <filename>หรือ– ตัวประมวลผลล่วงหน้าของภาษา Cที่ใช้ร่วมกับภาษา CและC++และเครื่องมือพัฒนาอื่นๆ#include "filename"
- การนำเข้าไฟล์
addpath(directory)– MATLAB [ 8 ]COPYfilename.– โคบอลimport<filename>;หรือ– C++import"filename";:-include("filename").– บทนำ#include file="filename"– เอเอสพี#include <filename>หรือ– AutoHotkey , AutoIt#include "filename"#import "filename"หรือ– ออบเจ็กทีฟซี#import <filename>Import["filename"]– Mathematica , Wolfram Languageinclude'filename'– ฟอร์ทรานinclude "filename";– พีพีinclude [filename] programหรือ#include [filename] program– เลือกตัวเลือกพื้นฐานinclude!("filename");– สนิมload "filename"– รูบี้load%filename- สีแดงrequire('filename')– ลัวrequire "filename";– เพิร์ล , พีเอชพีrequire"filename"– รูบี้ , คริสตัลsource(""filename"")– อาร์@import("filename");– ซิก
- การนำเข้าแพ็คเกจ
#include filename– ซีimport module;– ซี++#[path = "filename"] mod altname;– สนิม@import module;– ออบเจกทีฟซี<<name– Mathematica , Wolfram Language:-use_module(module).– บทนำ :from module import *– ไพธอนextern crate libname;– หรือหรือ– สนิมextern crate libname as altname;mod modname;library("package")– อาร์ :IMPORT module– โอเบรอนimport altname "package/name"- ไป :import package.module;หรือ– ดีimport altname = package.module;import Moduleหรือ– ฮัสเคลล์import qualified Module as Mimport package.*– Java , MATLAB , Kotlinimport "modname";– JavaScriptimport altname from "modname";– JavaScriptimport packageหรือ– สกาล่าimport package._import module– สวิฟต์import module– วี (วลัง)import module– ไพธอนrequire('modname')– ลัวrequire"shard"– คริสตัลrequire"gem"– รูบี้use module– ฟอร์ทราน 90 +use module, only : identifier– ฟอร์ทราน 90 +use Module;– เพิร์ลuse Module qw(import options);– เพิร์ลuse Package.Name– งูเห่าuses unit– ปาสคาลwith package– เอดา@import("pkgname");– ซิก
- การนำเข้าคลาส
from module import Class– ไพธอนimport package.class– Java , MATLAB , Kotlinimport class from "modname";– JavaScriptimport {class} from "modname";– JavaScriptimport {class as altname} from "modname";– JavaScriptimport package.class– สกาล่าimport package.{ class1 => alternativeName, class2 }– สกาล่าimport package._– สกาล่าuse Namespace\ClassName;– พีพีuse Namespace\ClassName as AliasName;– พีพีusing namespace::subnamespace::Class;– ซี++
- การนำเข้าขั้นตอน/ฟังก์ชัน
from module import function– ไพธอนimport package.module : symbol;– ดีimport package.module : altsymbolname = symbol;– ดีimport Module (function)– ฮัสเคลล์import function from "modname";– JavaScriptimport {function} from "modname";– JavaScriptimport {function as altname} from "modname";– JavaScriptimport package.function– MATLABimport package.class.function– สกาล่าimport package.class.{ function => alternativeName, otherFunction }– สกาล่าuseModule('symbol');– เพิร์ลuse function Namespace\function_name;– พีพีuse Namespace\function_name as function_alias_name;– พีพีusing namespace::subnamespace::symbol;– ซี++use module::submodule::symbol;– สนิมuse module::submodule::{symbol1, symbol2};– สนิมuse module::submodule::symbol as altname;– สนิม
- การนำเข้าอย่างต่อเนื่อง
use const Namespace\CONST_NAME;– พีพี
ข้อความข้างต้นยังสามารถจำแนกได้ตามความสะดวกทางไวยากรณ์ (ช่วยให้สามารถอ้างถึงสิ่งต่างๆ ด้วยชื่อที่สั้นกว่า แต่ยังคงสามารถอ้างถึงด้วยชื่อเต็มได้โดยไม่ต้องนำเข้า) หรือตามความจำเป็นในการเข้าถึงโค้ด (หากไม่มีข้อความเหล่านี้ จะไม่สามารถเข้าถึงโค้ดได้ แม้จะใช้ชื่อเต็มก็ตาม)
- ความสะดวกทางไวยากรณ์
import package.*ชวาimport package.classชวาopen moduleโอแคมล์using namespace namespace::subnamespace;– ซี++use module::submodule::*;– สนิม
- จำเป็นต้องเข้าถึงรหัส
import module;ซี++import altname "package/name"ไปimport altname from "modname";โค้ด JavaScriptimport moduleไพธอน
การแบ่งบล็อก
บล็อก คือกลุ่มของโค้ดที่ได้รับการประมวลผลร่วมกัน ไวยากรณ์ ของบล็อกหลายแบบสามารถประกอบด้วยรายการใดๆ ก็ได้ (คำสั่ง นิพจน์ หรือหน่วยโค้ดอื่นๆ) รวมถึงหนึ่งหรือศูนย์รายการก็ได้ ภาษาโปรแกรมกำหนดขอบเขตของบล็อกด้วยวิธีต่างๆ กัน บางภาษาใช้การทำเครื่องหมายข้อความ และบางภาษาใช้การจัดรูปแบบเชิงสัมพันธ์ เช่น ระดับการเยื้อง
- วงเล็บปีกกา (หรือวงเล็บเหลี่ยม)
{...}
- ภาษาที่ใช้เครื่องหมายวงเล็บปีกกา : ลักษณะเด่นอย่างหนึ่งของภาษาที่ใช้เครื่องหมายวงเล็บปีกกาคือการใช้เครื่องหมายวงเล็บปีกกาเพื่อกำหนดขอบเขตของบล็อก
- วงเล็บ
(...)
- วงเล็บเหลี่ยม
[...]
begin...end
- Ada , ALGOL , F# (ไวยากรณ์แบบละเอียด), [ 9 ] Pascal , Ruby (
for,do/while& ลู ปdo/until), Crystal , OCaml , SCL , Simula , Erlang
do...end
do...done
- Bash (
for&whileลูป), F# (ไวยากรณ์แบบละเอียด) [ 9 ] Visual Basic , Fortran , TUTOR (พร้อมการเว้นวรรคบังคับของเนื้อหาบล็อก), Visual Prolog
do...end
- Lua , Ruby (ส่งบล็อกเป็นอาร์กิวเมนต์,
forวนลูป), Seed7 (ครอบส่วนเนื้อหาของลูปด้วย เครื่องหมายdo& และend)
- X ...
end(เช่นif...end):
- Ruby (
if,while,until,def,class,modulestatements), OCaml (for&whileloops), MATLAB (if&switchconditionals,for&whileloops,tryclause,package,classdef,properties,methods,events, &functionblocks), Lua (then/else&function)
- (
begin... )
- (พยากรณ์...)
- (
do... )
- รอยบุ๋ม
- ภาษาโปรแกรมที่ใช้กฎนอกเหนือขอบเขต : Boo , Cobra , CoffeeScript , F# , Haskell (ในรูปแบบ do-notation เมื่อละวงเล็บปีกกา), LiveScript , occam , Python , Nemerle (ไม่บังคับ ผู้ใช้สามารถใช้ไวยากรณ์ที่คำนึงถึงช่องว่างแทนไวยากรณ์วงเล็บปีกกาได้หากต้องการ), Nim , Scala (ไม่บังคับ เช่นเดียวกับ Nemerle)
- ภาษาแบบอิสระ : ภาษาที่สืบทอดมาจากALGOL เป็นส่วนใหญ่ (รวมถึงC , PascalและPerl ); ภาษาLisp
- คนอื่น
- Ada , Visual Basic , Seed7 :
if...end if - อัลกอล 68 :
begin...end,(...),if...fi,do...od - เอพีแอล :
:If...:EndIfหรือ:If...:End - Bash , shและksh :
if...fi,do...done,case...esac; - COBOL :
IF...END-IF,PERFORM...END-PERFORM, เป็นต้น สำหรับคำสั่ง; ....สำหรับประโยค* Lua , Pascal , Modula-2 , Seed7 :repeat...until - ขนาดเล็กพื้นฐาน :
If...EndIf,For...EndFor,While...EndWhile - Visual Basic (.NET) :
If...End If,For...Next,Do...Loop
ความคิดเห็น
ในแง่ของนิยามทางภาษา ไวยากรณ์ของข้อความแสดงความคิดเห็นสามารถจำแนกได้หลายวิธี รวมถึง:
- ข้อความแสดงความคิดเห็นแบบบรรทัดต่อบรรทัด กับแบบบล็อก – ข้อความแสดงความ คิดเห็นแบบบรรทัดต่อบรรทัดจะเริ่มต้นด้วยตัวคั่น และต่อเนื่องไปจนถึงท้ายบรรทัด ( ตัวขึ้น บรรทัดใหม่ ) ในขณะที่ข้อความแสดงความคิดเห็นแบบบล็อกจะเริ่มต้นด้วยตัวคั่นหนึ่งตัวและสิ้นสุดด้วยตัวคั่นอีกตัวหนึ่ง และสามารถข้ามบรรทัดได้
- สามารถซ้อนกันได้หรือไม่ – บล็อกคอมเมนต์สามารถอยู่ภายในบล็อกคอมเมนต์อื่นได้หรือไม่
- วิธีการวิเคราะห์ข้อความโดยสัมพันธ์กับภาษา เครื่องมือต่างๆ (รวมถึงคอมไพเลอร์และอินเตอร์พรีเตอร์) อาจวิเคราะห์ข้อความแสดงความคิดเห็นได้เช่นกัน แต่การวิเคราะห์นั้นอาจอยู่นอกเหนือคำจำกัดความของภาษา
วิธีอื่นๆ ในการจัดหมวดหมู่ความคิดเห็นที่อยู่นอกเหนือคำจำกัดความของภาษา:
- คอมเมนต์แบบอินไลน์และคอมเมนต์แบบโปรล็อก – คอมเมนต์แบบอินไลน์จะอยู่ต่อจากโค้ดในบรรทัดเดียวกัน ส่วนคอมเมนต์แบบโปรล็อกจะอยู่ก่อนหน้าโค้ดส่วนที่เกี่ยวข้อง คอมเมนต์แบบบรรทัดหรือแบบบล็อกสามารถใช้ได้ทั้งแบบอินไลน์และแบบโปรล็อก
- การสนับสนุนการสร้างเอกสารAPI ซึ่งอยู่นอกเหนือคำจำกัดความของภาษา
ความคิดเห็นบรรทัด
| เครื่องหมาย | ภาษา |
|---|---|
C | Fortran I ถึง Fortran 77 (C ในคอลัมน์ที่ 1) |
REM | เบสิก , ไฟล์แบตช์ , วิชวลเบสิก |
:: | ไฟล์แบตช์ , COMMAND.COM , cmd.exe |
NB. | J ; มาจากคำย่อที่ใช้กันทั่วไปในอดีต ว่า Nota beneซึ่งเป็นภาษาละตินแปลว่า "โปรดสังเกตให้ดี" |
⍝ | APL ; ตัวช่วยจำคือ สัญลักษณ์ (จุดที่ถูกขีดทับด้วยปลายรองเท้า) มีลักษณะคล้ายโคมไฟตั้งโต๊ะ จึง "ส่องสว่าง" สิ่งที่อยู่ด้านบน |
# | Boo , Bourne shellและเชลล์ UNIX อื่นๆ , Cobra , Crystal , Perl , Python , Ruby , Seed7 , PowerShell , PHP , R , Make , Maple , Elixir , Julia , Nim [ 10 ] |
% | TeX , Prolog , MATLAB , [ 11 ] Erlang , S-Lang , Visual Prolog , PostScript |
// | ActionScript , Boo , C (C99) , C++ , C# , D , F# , Go , Java , JavaScript , Kotlin , Object Pascal ( Delphi ), Objective-C , PHP , Rust , Scala , Sass , Swift , Xojo , V (Vlang) , Zig |
' | Monkey, Visual Basic , VBScript , Small Basic , Gambas , Xojo |
! | แฟกเตอร์ , ฟอร์ทราน , เบสิกพลัส, อินฟอร์ม, พิกเบสิก |
; | ภาษาแอสเซมบลีส่วนใหญ่, AutoHotkey , AutoIt , Lisp , Common Lisp , Clojure , PGN , Rebol , Red , Scheme |
-- | Euphoria , Haskell , SQL , Ada , AppleScript , Eiffel , Lua , VHDL , SGML , PureScript , Elm |
* | Assembler S/360 (* ในคอลัมน์ที่ 1), COBOL I ถึง COBOL 85, PAW , Fortran IV ถึง Fortran 77 (* ในคอลัมน์ที่ 1), Pick Basic , GAMS (* ในคอลัมน์ที่ 1) |
|| | เคิร์ล |
" | วิมสคริปต์ , เอบีเอพี |
\ | ไปข้างหน้า |
*> | โคบอล 90 |
บล็อกความคิดเห็น
ในตัวอย่างเหล่านี้~แสดงถึงเนื้อหาของความคิดเห็น และข้อความรอบๆ แสดงถึงตัวคั่นช่องว่าง (รวมถึงการขึ้นบรรทัดใหม่ ) ไม่ถือเป็นตัวคั่น
| ไวยากรณ์ | ภาษา |
|---|---|
comment~; | ALGOL 60 , ซิมูล่า |
¢~ ¢, #~ #, co~ co, comment~comment | ALGOL 68 [ 12 ] [ 13 ] |
/*~*/ | ActionScript, AutoHotkey , C, C++, C#, CSS , D, [ 14 ] Go, Java , JavaScript , Kotlin , Objective-C , PHP , PL/I , Prolog , Rexx , Rust (สามารถซ้อนกันได้), Scala (สามารถซ้อนกันได้), SAS , SASS, SQL, Swift (สามารถซ้อนกันได้), V (Vlang) , Visual Prolog |
#cs~#ce | ออโต้อิท[ 15 ] |
/+~+/ | D (สามารถซ้อนกันได้) [ 14 ] |
/#~#/ | งูเห่า (สามารถซ้อนกันได้) |
<#~#> | พาวเวอร์เชลล์ |
<!--~--> | HTML , XML |
=begin~=cut | Perl (เอกสารแบบธรรมดา) |
#`(~) | Raku (อักขระวงเล็บสามารถเป็น (), <>, {}, [], อักขระ Unicode ใดๆ ที่มีการสะท้อนแบบ BiDi หรืออักขระ Unicode ที่มีคุณสมบัติ Ps/Pe/Pi/Pf) |
=begin~=end | ทับทิม |
#<TAG>~ , ~ , ~ , ~ , ~ , ~#</TAG>#stopEOF#iffalse#endif#ifntrue#endif#if false#endif#if !true#endif | S-Lang [ 16 ] |
{-~-} | ฮัสเคลล์ (สามารถซ้อนกันได้), เอล์ม |
(*~*) | Delphi , ML , Mathematica , Object Pascal , Pascal , Seed7 , AppleScript , OCaml (สามารถซ้อนกันได้), Standard ML (สามารถซ้อนกันได้), Maple , Newspeak , F# |
{~} | เดลฟี, ออบเจ็กต์ปาสคาล, ปาสคาล, PGN , สีแดง |
{#~#} | นันจัคส์, ทวิก |
{{!~}} | หนวด , แฮนด์บาร์ |
{{!--~--}} | แฮนด์เดิล (ไม่สามารถซ้อนกันได้ แต่สามารถบรรจุ{{และได้}}) |
|#~#| | เคิร์ล |
%{~%} | MATLAB [ 11 ] (สัญลักษณ์ต้องอยู่ในบรรทัดแยกกัน) |
#|~|# | Lisp , Scheme , Racket (สามารถใช้งานซ้อนกันได้ในทั้งสามภาษา) |
#=~=# | จูเลีย[ 17 ] |
#[~]# | นิม[ 18 ] |
--[[~ ]], --[=[~ ]=], --[==[~ ]==]เป็นต้น | ภาษา Lua (วงเล็บสามารถมีอักขระที่ตรงกันได้จำนวนเท่าใดก็ได้=และสามารถซ้อนอยู่ภายในตัวคั่นที่ไม่ตรงกันได้) |
"~" | การสนทนาเล็กๆ น้อยๆ |
(comment~) | โคลจูร์ |
#If COMMENT Then~ [ a ]#End If | วิชวลเบสิก (.NET) |
#if COMMENT~ #endif[ b ] | ซี# |
' comment _, [ c ]REM comment _ | Visual Basic แบบคลาสสิก , VBA , VBScript |
รูปแบบเฉพาะ
- ฟอร์ทราน
การเว้นวรรคบรรทัดในFortran 66/77 มีความสำคัญ คำสั่งจริงจะอยู่ในคอลัมน์ที่ 7 ถึง 72 ของบรรทัด อักขระใดๆ ที่ไม่ใช่ช่องว่างในคอลัมน์ที่ 6 แสดงว่าบรรทัดนี้เป็นส่วนต่อเนื่องจากบรรทัดก่อนหน้า เครื่องหมาย ' C' ในคอลัมน์ที่ 1 แสดงว่าทั้งบรรทัดนี้เป็นข้อความแสดงความคิดเห็น คอลัมน์ที่ 1 ถึง 5 อาจมีตัวเลขซึ่งทำหน้าที่เป็นป้ายกำกับ คอลัมน์ที่ 73 ถึง 80 จะถูกละเว้นและอาจใช้สำหรับข้อความแสดงความคิดเห็น ในยุคของบัตรเจาะรูคอลัมน์เหล่านี้มักจะมีหมายเลขลำดับเพื่อให้สามารถจัดเรียงสำรับบัตรให้อยู่ในลำดับที่ถูกต้องได้หากมีคนทำบัตรตกโดยไม่ตั้งใจ Fortran 90 ได้ยกเลิกความจำเป็นในการใช้กฎการเว้นวรรคและเพิ่มข้อความแสดงความคิดเห็นแบบบรรทัด โดยใช้!อักขระ ' เป็นตัวคั่นข้อความแสดงความคิดเห็น
- โคบอล
ในโค้ดรูปแบบคงที่ การเยื้องบรรทัดมีความสำคัญ คอลัมน์ที่ 1–6 และคอลัมน์ที่ 73 เป็นต้นไปจะถูกละเว้น หากมีเครื่องหมายอัญประกาศเดี่ยว ("") *หรือ เครื่องหมายอัญประกาศคู่ /("") อยู่ในคอลัมน์ที่ 7 บรรทัดนั้นจะเป็นข้อความแสดงความคิดเห็น จนถึง COBOL 2002 หากมีเครื่องหมาย อัญประกาศเดี่ยว ("") Dหรือdเครื่องหมายอัญประกาศคู่ ("") อยู่ในคอลัมน์ที่ 7 จะถือว่าเป็น "บรรทัดสำหรับการดีบัก" ซึ่งจะถูกละเว้นเว้นแต่คอมไพเลอร์จะได้รับคำสั่งให้คอมไพล์
- งูเห่า
Cobra รองรับการใช้บล็อกคอมเมนต์ด้วย " /#... #/" ซึ่งคล้ายกับ " /*... */" ที่มักพบในภาษาที่ใช้พื้นฐาน C แต่มีข้อแตกต่างสองประการ คือ#ตัวอักษรนี้ถูกนำมาใช้ซ้ำจากรูปแบบคอมเมนต์บรรทัดเดียว " #..." และบล็อกคอมเมนต์สามารถซ้อนกันได้ ซึ่งสะดวกสำหรับการคอมเมนต์โค้ดจำนวนมาก
- เคิร์ล
Curl รองรับการแสดงความคิดเห็นแบบบล็อกโดยใช้แท็กที่ผู้ใช้กำหนดเองได้ ดังเช่นใน|foo# ... #foo|.
- ลัว
เช่นเดียวกับสตริงดิบ สามารถมีเครื่องหมายเท่ากับได้หลายตัวระหว่างวงเล็บเหลี่ยม ตราบใดที่แท็กเปิดและแท็กปิดมีจำนวนเครื่องหมายเท่ากับที่ตรงกัน ซึ่งจะช่วยให้สามารถซ้อนกันได้ ตราบใดที่ความคิดเห็นแบบบล็อก/สตริงดิบที่ซ้อนกันใช้จำนวนเครื่องหมายเท่ากับที่แตกต่างจากความคิดเห็นที่ครอบคลุมอยู่--[[comment --[=[ nested comment ]=] ]]Lua จะละทิ้งบรรทัดใหม่แรก (ถ้ามี) ที่อยู่ถัดจากแท็กเปิดโดยตรง
- เพิร์ล
ในภาษา Perl คอมเมนต์แบบบล็อกถือเป็นส่วนหนึ่งของเอกสาร และเรียกชื่อว่าPlain Old Documentation (POD) ในทางเทคนิคแล้ว ภาษา Perl ไม่มีข้อกำหนดตายตัวสำหรับการใส่คอมเมนต์แบบบล็อกในซอร์สโค้ด แต่ POD ถูกนำมาใช้เป็นวิธีแก้ปัญหาโดยทั่วไป
- พีพี
PHP รองรับการเขียนคำอธิบายประกอบแบบมาตรฐานของ C/C++ แต่ก็รองรับรูปแบบของ Perl ด้วยเช่นกัน
- ไพธอน
การใช้เครื่องหมายอัญประกาศสามตัวเพื่อคอมเมนต์บรรทัดของซอร์สโค้ดนั้น แท้จริงแล้วไม่ได้ก่อให้เกิดคอมเมนต์[ 19 ]ข้อความที่ล้อมรอบจะกลายเป็นสตริงลิเทอรัล ซึ่งโดยปกติแล้ว Python จะไม่สนใจ (ยกเว้นเมื่อเป็นคำสั่งแรกในเนื้อหาของโมดูล คลาส หรือฟังก์ชัน ดูdocstring )
- ยาอายุวัฒนะ
เทคนิคข้างต้นที่ใช้ใน Python ก็ใช้ได้ใน Elixir เช่นกัน แต่คอมไพเลอร์จะแสดงคำเตือนหากตรวจพบ เพื่อระงับคำเตือน จะต้องเพิ่มสัญลักษณ์~S(ซึ่งป้องกันการแทรกสตริง) ไว้ข้างหน้าสตริงที่อยู่ในเครื่องหมายคำพูดสามตัว ทำให้ได้โครงสร้างสุดท้าย~S""" ... """นอกจากนี้ Elixir ยังรองรับความคิดเห็นแบบบล็อกในรูปแบบจำกัดเป็นคุณสมบัติภาษาอย่างเป็นทางการ แต่เช่นเดียวกับใน Perl โครงสร้างนี้มีจุดประสงค์เพื่อเขียนเอกสารโดยเฉพาะ ไม่เหมือนกับใน Perl ที่ไม่สามารถใช้เป็นวิธีแก้ปัญหาได้ เนื่องจากจำกัดเฉพาะบางส่วนของโค้ด และจะแสดงข้อผิดพลาดหรือแม้แต่ระงับฟังก์ชันหากใช้ในที่อื่น[ 20 ]
- ราคุ
Rakuใช้#`(...)เพื่อระบุความคิดเห็นแบบบล็อก[ 21 ] Raku อนุญาตให้ใช้วงเล็บคู่ "ขวา" และ "ซ้าย" ใดๆ ก็ได้หลังจากนั้น#`(เช่น#`(...), #`[...], #`{...}, #`<...>, และแม้แต่รูปแบบที่ซับซ้อนกว่านั้น#`{{...}}ก็ถือเป็นความคิดเห็นแบบบล็อกที่ถูกต้อง) นอกจากนี้ยังอนุญาตให้วงเล็บซ้อนกันภายในความคิดเห็นได้ (เช่น#`{ a { b } c }ไปจนถึงวงเล็บปิดตัวสุดท้าย)
- ทับทิม
คอมเมนต์แบบบล็อกในภาษา Ruby จะเปิดที่=beginบรรทัด และปิดที่=endบรรทัด
- เอส-ลัง
ส่วนของบรรทัดที่ล้อมรอบด้วยตัวคั่น <br> #<tag>และ#</tag><br> จะถูกละเว้นโดยตัวแปลภาษา ชื่อแท็กสามารถเป็นลำดับของตัวอักษรและตัวเลขใดๆ ก็ได้ที่สามารถใช้เพื่อระบุวิธีการถอดรหัสบล็อกที่ล้อมรอบ ตัวอย่างเช่น <br> #<latex>อาจบ่งบอกถึงจุดเริ่มต้นของบล็อกเอกสารที่จัดรูปแบบด้วย LaTeX
- แผนการและขบวนการฉ้อโกง
ส่วนประกอบทางไวยากรณ์ที่สมบูรณ์ถัดไป (นิพจน์ s) สามารถปิดใช้งานได้โดยใช้#;.
- เอบีเอพี
ABAP รองรับการแสดงความคิดเห็นสองประเภทที่แตกต่างกัน หากอักขระตัวแรกของบรรทัด รวมทั้งการเยื้อง เป็นเครื่องหมายดอกจัน (* *) ทั้งบรรทัดจะถือว่าเป็นความคิดเห็น ในขณะที่เครื่องหมายอัญประกาศคู่ ( "") เดี่ยวๆ จะเริ่มต้นความคิดเห็นแบบแทรกในบรรทัด ซึ่งจะมีผลจนถึงท้ายบรรทัด ไม่สามารถใส่ความคิดเห็นระหว่างคำสั่งใน ABAP ได้ เนื่องจาก SQL EXEC SQLดั้งเดิมENDEXECมีการใช้งานอักขระเหล่านี้ในรูปแบบอื่น ในภาษา SQL ส่วนใหญ่--สามารถใช้เครื่องหมายขีดคู่ (_) แทนได้
- ภาษาลึกลับ
ภาษาโปรแกรมเฉพาะทางหลาย ภาษา ใช้ธรรมเนียมที่ว่า ข้อความใดๆ ที่ไม่ได้ถูกประมวลผลโดยตัวชี้คำสั่ง (เช่นBefunge ) หรือไม่ได้ถูกกำหนดความหมายไว้ (เช่นBrainfuck ) จะถือว่าเป็น "ข้อความแสดงความคิดเห็น"
การเปรียบเทียบความคิดเห็น
มีรูปแบบไวยากรณ์ที่หลากหลายสำหรับการประกาศความคิดเห็นในซอร์สโค้ด BlockCommentตัวอักษรเอียงในที่นี้ใช้เพื่อระบุรูปแบบความคิดเห็นแบบบล็อก LineCommentตัวอักษรเอียงในที่นี้ใช้เพื่อระบุรูปแบบความคิดเห็นแบบบรรทัด
| ภาษา | ความคิดเห็นแทรกในบรรทัด | บล็อกความคิดเห็น |
|---|---|---|
| Ada , Eiffel , Euphoria , Occam , SPARK , ANSI SQLและVHDL | -- LineComment | |
| อัลโกล 60 | comment BlockComment; | |
| อัลโกล 68 | ¢ BlockComment ¢
| |
| เอพีแอล | ⍝ LineComment | |
| แอปเปิลสคริปต์ | -- LineComment | (* BlockComment *) |
| ภาษาแอสเซมบลี (แตกต่างกันไป) | ; LineComment ตัวอย่างหนึ่ง (ภาษาแอสเซมบลีส่วนใหญ่ใช้คำอธิบายบรรทัดเท่านั้น) | |
| ออโต้ฮอตคีย์ | ; LineComment | /* BlockComment */ |
| AWK , Bourne shell , C shell , Maple , PowerShell | # LineComment | <# BlockComment #> |
| ทุบตี | # LineComment | <<EOFBlockCommentEOF: 'BlockComment' |
| ภาษาพื้นฐาน (สำเนียงต่างๆ): | 'LineComment(ไม่ใช่ทุกสำเนียง)
| |
| C (K&R, ANSI/C89/C90), CHILL , PL/I , REXX | /* BlockComment */ | |
| C (C99) , C++ , Go , Swift , JavaScript , V (Vlang) | // LineComment | /* BlockComment */ |
| ซี# | // LineComment/// LineComment(หมายเหตุประกอบเอกสาร XML) | /* BlockComment *//** BlockComment */(คำอธิบายประกอบเอกสาร XML) (คำสั่งคอมไพเลอร์) [ b ]#if COMMENT BlockComment#endif |
| COBOL 1 ถึง COBOL 85 | * LineComment(* ในคอลัมน์ที่ 7) | |
| โคบอล 2002 | *> LineComment | |
| เคิร์ล | || LineComment | |# BlockComment #|
|
| งูเห่า | # LineComment | /# BlockComment #/(ซ้อนกันได้) |
| ดี | // LineComment/// Documentation LineComment(หมายเหตุจาก ddoc) | /* BlockComment *//** Documentation BlockComment */(หมายเหตุจาก ddoc)
|
| ดีซีแอล | $! LineComment | |
| ECMAScript ( JavaScript , ActionScriptฯลฯ) | // LineComment | /* BlockComment */ |
| ยาอายุวัฒนะ | # LineComment | ~S"""BlockComment"""@doc """BlockComment"""(เอกสารประกอบ ใช้ได้เฉพาะในโมดูล) (เอกสารประกอบโมดูล) (เอกสารประกอบประเภท) @moduledocBlockComment"""@typedocBlockComment""" |
| ไปข้างหน้า | \ LineComment | ( BlockComment )(บรรทัดเดียวและหลายบรรทัด)
|
| FORTRAN I ถึง FORTRAN 77 | C LineComment(C ในคอลัมน์ที่ 1) | |
| ฟอร์ทราน 90และเวอร์ชันที่ใหม่กว่า | ! LineComment | #if 0 BlockComment#endif[ d ] |
| ฮัสเคลล์ | -- LineComment | {- BlockComment -} |
| เจ | NB. | |
| ชวา | // LineComment | /* BlockComment */
|
| จูเลีย | # LineComment | #= BlockComment =# |
| ลิสป์ , สกีม | ; LineComment | #| BlockComment |# |
| ลัว | -- LineComment | --[==[ BlockComment]==](จำนวนเครื่องหมาย = แปรผันได้ สามารถซ้อนกันได้โดยใช้ตัวคั่นที่มีจำนวนเครื่องหมาย = ต่างกัน) |
| เมเปิล | # LineComment | (* BlockComment *) |
| มาเทมาติกา | (* BlockComment *) | |
| MATLAB | % LineComment | %{BlockComment (nestable)%}[ e ] |
| นิม | # LineComment | #[ BlockComment ]# |
| ออบเจ็กต์ปาสคาล | // LineComment | (* BlockComment *){ BlockComment } |
| โอแคมล์ | (* BlockComment (* nestable *) *) | |
| ปาสคาล , Modula-2 , Modula-3 , Oberon , ML : | (* BlockComment *) | |
| เพิร์ล , รูบี้ | # LineComment | =beginBlockComment=cut( =endในภาษา Ruby) ( หมายเหตุประกอบเอกสาร POD )
|
| พีจีเอ็นเอ็นสีแดง | ; LineComment | { BlockComment } |
| พีพี | # LineComment// LineComment | /* BlockComment *//** Documentation BlockComment */( หมายเหตุในเอกสาร PHP ) |
| นักบิน | R:LineComment | |
| PLZ/SYS | ! BlockComment ! | |
| PL/SQL , TSQL | -- LineComment | /* BlockComment */ |
| บทนำ | % LineComment | /* BlockComment */ |
| ไพธอน | # LineComment | ''' BlockComment '''""" BlockComment """( ข้อความอธิบายเมื่ออยู่บรรทัดแรกของโมดูล คลาส เมธอด หรือฟังก์ชัน) |
| อาร์ | # LineComment | |
| ราคุ | # LineComment | #`{BlockComment}
|
| สนิม | // LineComment
| /* BlockComment */ (ซ้อนกันได้)
|
| เอสเอเอส | * BlockComment;/* BlockComment */ | |
| เมล็ดพันธุ์ 7 | # LineComment | (* BlockComment *) |
| ซิมูล่า | comment BlockComment;! BlockComment; | |
| การสนทนาเล็กๆ น้อยๆ | "BlockComment" | |
| สมาร์ตี้ | {* BlockComment *} | |
| มาตรฐาน ML | (* BlockComment *) | |
| TeX , LaTeX , PostScript , Erlang , S-Lang | % LineComment | |
| เท็กซ์อินโฟ | @c LineComment
| |
| ติวเตอร์ | * LineCommentcommand $$ LineComment | |
| วิชวลเบส | ' LineCommentRem LineComment | ' BlockComment _BlockCommentRem BlockComment _BlockComment[ค] |
| วิชวลเบสิก (.NET) | ' LineComment
| #If COMMENT Then BlockComment#End If |
| บทนำภาพ | % LineComment | /* BlockComment */ |
| ภาษาวูลฟรัม | (* BlockComment *) | |
| โซโจ | ' LineComment// LineCommentrem LineComment | |
| ซิก | // LineComment/// LineComment//! LineComment |
ดูเพิ่มเติม
- ไวยากรณ์ C
- ไวยากรณ์ C++
- รายชื่อภาษาโปรแกรมตามประเภท #วงเล็บปีกกาซึ่งเป็นตระกูลกว้างของไวยากรณ์ภาษาโปรแกรม
- ไวยากรณ์ Java
- ไวยากรณ์ JavaScript
- ไวยากรณ์และความหมายของ PHP
- ไวยากรณ์และความหมายของภาษา Python
หมายเหตุ
- ^ Visual Basic (.NET)ไม่รองรับการแสดงความคิดเห็นแบบหลายบรรทัดแบบดั้งเดิม แต่สามารถจำลองได้ผ่านคำสั่งคอมไพเลอร์
- ^ a bแม้ว่า C# จะรองรับการเขียนความคิดเห็นแบบบล็อกแบบดั้งเดิม
/* ... */แต่ก็สามารถใช้คำสั่งคอมไพเลอร์เพื่อเลียนแบบได้ เช่นเดียวกับใน VB.NET - อักขระต่อบรรทัดสามารถ ใช้เพื่อขยายข้อความแสดงความ คิดเห็นบรรทัดเดียวไปยังบรรทัดถัดไปโดยไม่ต้องพิมพ์ซ้ำสามารถทำได้สูงสุด 24 ครั้งติดต่อกัน
_'REM - ^ Fortranไม่รองรับความคิดเห็นแบบบล็อกแบบดั้งเดิม แต่คอมไพเลอร์บางตัวรองรับคำสั่งพรีโปรเซสเซอร์ในรูปแบบของ C / C++ซึ่งช่วยให้โปรแกรมเมอร์สามารถจำลองความคิดเห็นแบบหลายบรรทัดได้ [ 22 ]
- ^เครื่องหมายเปอร์เซ็นต์ทั้งสองจะต้องเป็นอักขระที่ไม่ใช่ช่องว่างเพียงตัวเดียวในบรรทัดนั้นๆ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบภาษาโปรแกรม (ไวยากรณ์)
โดยทั่วไปแล้ว นิพจน์ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:
การแสดงออก
โดยทั่วไปแล้ว นิพจน์ ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:
การกำหนดขอบเขตของข้อความ
โดยทั่วไปแล้ว ภาษาที่รองรับ โครงสร้าง ประโยคบอกเล่า จะมีกฎสำหรับแง่มุมอย่างน้อยหนึ่งข้อต่อไปนี้:
เส้นต่อเนื่อง
ด้านล่างนี้คือภาษาที่เน้นการเขียนตามบรรทัดซึ่งอนุญาตให้มีการต่อบรรทัดได้ เว้นแต่จะระบุไว้เป็นอย่างอื่น เครื่องหมายการต่อบรรทัดจะต้องเป็นข้อความสุดท้ายของบรรทัด