กลับไปหน้าบทความ

อ่าน 10 นาที

การเปรียบเทียบภาษาโปรแกรม (ไวยากรณ์)

โดยทั่วไปแล้ว นิพจน์ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:

การเปรียบเทียบภาษาโปรแกรม (ไวยากรณ์)

บทความนี้เปรียบเทียบไวยากรณ์ ของ ภาษาโปรแกรมมิ่งที่มีชื่อเสียงหลายภาษา

การแสดงออก

โดยทั่วไปแล้ว นิพจน์ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:

สัญกรณ์คำนำหน้า
สัญกรณ์อินฟิกซ์
คำต่อท้าย คำต่อท้าย หรือสัญกรณ์โปแลนด์กลับด้าน
สัญกรณ์คล้ายคณิตศาสตร์

การกำหนดขอบเขตของข้อความ

โดยทั่วไปแล้ว ภาษาที่รองรับ โครงสร้าง ประโยคบอกเล่าจะมีกฎสำหรับแง่มุมอย่างน้อยหนึ่งข้อต่อไปนี้:

  • ตัวจบประโยค – ใช้เพื่อระบุจุดสิ้นสุดของประโยค
  • ตัวคั่นประโยค – ทำหน้าที่กำหนดขอบเขตระหว่างสองประโยค ไม่จำเป็นสำหรับประโยคสุดท้าย
  • การต่อบรรทัด – ใช้การขึ้นบรรทัดใหม่เพื่อต่อข้อความในบรรทัดถัดไป

บางภาษาใช้ตัวอักษรพิเศษเป็นตัวจบประโยค ในขณะที่บางภาษาที่เรียกว่าภาษาแบบบรรทัดต่อบรรทัดจะใช้ตัวขึ้นบรรทัดใหม่โดยทั่วไป ภาษาแบบบรรทัดต่อบรรทัดจะมีฟังก์ชันการต่อบรรทัด ในขณะที่ภาษาอื่นๆ ไม่จำเป็นต้องมีการต่อบรรทัด เนื่องจากตัวขึ้นบรรทัดใหม่ถูกมองว่าเป็นช่องว่าง ทั่วไป บางภาษาแบบบรรทัดต่อบรรทัดจะมีตัวคั่นสำหรับใช้คั่นระหว่างคำสั่งในบรรทัดเดียวกัน

ภาษา การกำหนดขอบเขตของข้อความ
เอบีเอพีช่วงเวลาที่แยกจากกัน
อาดาเครื่องหมายเซมิโคลอนปิดท้าย
อัลโกลคั่นด้วยเครื่องหมายเซมิโคลอน
อัลโกล 68คั่นด้วยเครื่องหมายเซมิโคลอนและคอมมา[ 1 ]
เอพีแอลขึ้นบรรทัดใหม่ คั่นด้วย[Direct_function ⋄]ตัวคั่น
แอปเปิลสคริปต์จบบรรทัดใหม่
ออโต้ฮอตคีย์จบบรรทัดใหม่
น่าอึดอัดขึ้นบรรทัดใหม่หรือจบด้วยเครื่องหมายเซมิโคลอน
พื้นฐานขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายโคลอน
บูจบบรรทัดใหม่
ซีนิพจน์ที่จบด้วยเครื่องหมายเซมิโคลอนและคั่นด้วยเครื่องหมายจุลภาค
ซี++นิพจน์ที่จบด้วยเครื่องหมายเซมิโคลอนและคั่นด้วยเครื่องหมายจุลภาค
ซี#เครื่องหมายเซมิโคลอนปิดท้าย
โคบอลคั่นด้วยช่องว่าง บางครั้งคั่นด้วยจุด หรืออาจคั่นด้วยเครื่องหมายจุลภาคและเครื่องหมายอัฒภาคก็ได้
งูเห่าจบบรรทัดใหม่
คอฟฟี่สคริปต์จบบรรทัดใหม่
คริสตัลนิพจน์ที่จบด้วยขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
ซีเอสซีเครื่องหมายเซมิโคลอนปิดท้าย
ดีเครื่องหมายเซมิโคลอนปิดท้าย
หอไอเฟลขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
เออร์ลังเครื่องหมายโคลอนคั่น เครื่องหมายจุดสิ้นสุด
เอฟ#ขึ้นบรรทัดใหม่แล้ว ตามด้วยเครื่องหมายเซมิโคลอน
ฟอร์ทรานขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
ไปข้างหน้าเครื่องหมายเซมิโคลอนใช้ปิดท้ายความหมายของคำ ส่วนช่องว่างใช้ปิดท้ายการใช้คำ
จีเอฟเอ เบสิกจบบรรทัดใหม่
ไปคั่นด้วยเครื่องหมายเซมิโคลอน (แทรกโดยคอมไพเลอร์)
ฮัสเคลล์ในการเขียนแบบ do-notation: คั่นด้วยขึ้นบรรทัดใหม่ในการเขียนแบบ do-notation ที่มีวงเล็บปีกกา: คั่นด้วยเครื่องหมายเซมิโคลอน
ชวาเครื่องหมายเซมิโคลอนปิดท้าย
โค้ด JavaScriptคั่นด้วยเครื่องหมายเซมิโคลอน (แต่ส่วนใหญ่มักใช้เป็นตัวจบประโยค)
โคทลินคั่นด้วยเครื่องหมายเซมิโคลอน (แต่บางครั้งอาจถูกแทรกโดยปริยายในบรรทัดใหม่)
ลัวคั่นด้วยช่องว่าง (สามารถใช้เครื่องหมายเซมิโคลอนได้)
Mathematicaหรือ Wolfram คั่นด้วยเครื่องหมายเซมิโคลอน
MATLABขึ้นบรรทัดใหม่ โดยคั่นด้วยเครื่องหมายเซมิโคลอนหรือคอมมา (เซมิโคลอน – ซ่อนผลลัพธ์ของคำสั่งที่เลื่อนไปทางขวา, คอมมา – แสดงผลลัพธ์)
โรคคางทูมหรือ M การขึ้นบรรทัดใหม่เป็นการสิ้นสุดขอบเขตของบรรทัด ซึ่งเป็นสิ่งที่ใกล้เคียงที่สุดกับ "คำสั่ง" ที่ภาษา M มี การเว้นวรรคจะแยก/สิ้นสุดคำสั่ง ทำให้คำสั่งอื่นตามมาได้
นิมจบบรรทัดใหม่
ออบเจ็กต์ปาสคาล ( เดลฟี ) คั่นด้วยเครื่องหมายเซมิโคลอน
ออบเจกทีฟซีเครื่องหมายเซมิโคลอนปิดท้าย
โอแคมล์คั่นด้วยเครื่องหมายเซมิโคลอน
ปาสคาลคั่นด้วยเครื่องหมายเซมิโคลอน
เพิร์ลคั่นด้วยเครื่องหมายเซมิโคลอน
พีพีเครื่องหมายเซมิโคลอนปิดท้าย
เลือกพื้นฐานขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
พาวเวอร์เชลล์ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
บทนำคั่นด้วยเครื่องหมายจุลภาค (คำสันธานเชื่อม), คั่นด้วยเครื่องหมายอัฒภาค (คำสันธานแยก), จบด้วยเครื่องหมายจุด (ประโยคย่อย)
ไพธอนขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
อาร์บรรทัดใหม่สิ้นสุดด้วยเครื่องหมายเซมิโคลอนคั่น[ 2 ]
ราคุคั่นด้วยเครื่องหมายเซมิโคลอน
สีแดงคั่นด้วยช่องว่าง
ทับทิมขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายเซมิโคลอน
สนิมเครื่องหมายเซมิโคลอนปิดท้าย เครื่องหมายจุลภาคคั่นนิพจน์
สกาล่าขึ้นบรรทัดใหม่โดยใช้เครื่องหมายเซมิโคลอนคั่น
เมล็ดพันธุ์ 7คั่นด้วยเครื่องหมายเซมิโคลอน (สามารถปิดท้ายด้วยเครื่องหมายเซมิโคลอนได้)
ซิมูล่าคั่นด้วยเครื่องหมายเซมิโคลอน
เอส-ลังคั่นด้วยเครื่องหมายเซมิโคลอน
การสนทนาเล็กๆ น้อยๆช่วงเวลาที่แยกจากกัน
มาตรฐาน MLคั่นด้วยเครื่องหมายเซมิโคลอน
สวิฟต์คั่นด้วยเครื่องหมายเซมิโคลอน (แทรกโดยคอมไพเลอร์)
ทีซีแอลขึ้นบรรทัดใหม่หรือจบด้วยเครื่องหมายเซมิโคลอน
วี (วลัง)ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายจุลภาคหรือเครื่องหมายอัฒภาค
วิชวลเบสขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายโคลอน
วิชวลเบสิก (.NET)ขึ้นบรรทัดใหม่ คั่นด้วยเครื่องหมายโคลอน
โซโจจบบรรทัดใหม่
ซิกเครื่องหมายเซมิโคลอนปิดท้าย

เส้นต่อเนื่อง

ด้านล่างนี้คือภาษาที่เน้นการเขียนตามบรรทัดซึ่งอนุญาตให้มีการต่อบรรทัดได้ เว้นแต่จะระบุไว้เป็นอย่างอื่น เครื่องหมายการต่อบรรทัดจะต้องเป็นข้อความสุดท้ายของบรรทัด

แอมเปอร์แซนด์
เครื่องหมายแบ็กสแลช
เครื่องหมายแบ็กติ๊ก
ยัติภังค์
ขีดล่าง
จุดไข่ปลา (สามจุด)
  • MATLAB : จุดไข่ปลาไม่จำเป็นต้องจบบรรทัด แต่ข้อความที่ตามมาจะถูกละเลย[ 5 ]มันเริ่มต้นความคิดเห็นที่ขยายไปจนถึง (รวมถึง) บรรทัดใหม่ถัดไปบรรทัดแรก เปรียบเทียบกับความคิดเห็นแบบบรรทัดซึ่งขยายไปจนถึงบรรทัดใหม่ถัดไป
ตัวคั่นจุลภาค
  • รูบี้: สามารถใส่ความคิดเห็นตามหลังตัวคั่นได้
ตัวคั่นวงเล็บซ้าย
สัญลักษณ์ผู้ดำเนินการ
  • รูบี้: เป็นวัตถุสุดท้ายของบรรทัด; อาจมีข้อความแสดงความคิดเห็นตามหลังตัวดำเนินการ
  • AutoHotkey : เป็น อักขระ ตัวแรกของบรรทัดต่อเนื่อง ตัวดำเนินการนิพจน์ใดๆ ยกเว้น ++ และ -- และเครื่องหมายจุลภาคหรือจุด[ 7 ]
การใส่คำอธิบายประกอบในบางบรรทัดทำหน้าที่เป็นส่วนต่อขยายของบรรทัด
ตำแหน่งตัวละคร
  • Fortran 77 : บรรทัดที่ไม่ใช่ข้อความแสดงความคิดเห็นจะเป็นส่วนต่อเนื่องจากบรรทัดที่ไม่ใช่ข้อความแสดงความคิดเห็นก่อนหน้า หากมีอักขระใดๆ ที่ไม่ใช่ช่องว่างปรากฏในคอลัมน์ที่ 6 บรรทัดแสดงความคิดเห็นไม่สามารถต่อกันได้
  • COBOL : ค่าคงที่สตริงสามารถต่อได้โดยไม่ต้องจบสตริงเดิมในส่วน PICTURE ด้วยเครื่องหมายจุลภาค'จากนั้นแทรกเครื่องหมายจุลภาค-ในคอลัมน์ที่ 7 (ตำแหน่งเดียวกับที่*ใช้สำหรับข้อความแสดงความคิดเห็น)
  • คำแนะนำ : บรรทัดที่ขึ้นต้นด้วยแท็บ (หลังจากเว้นวรรคตามความจำเป็นของบริบท) จะสานต่อคำสั่งก่อนหน้า

คอมไพเลอร์ภาษาซีจะเชื่อมต่อสตริง ที่อยู่ติดกัน แม้ว่าจะอยู่คนละบรรทัดก็ตาม แต่นี่ไม่ใช่ไวยากรณ์การต่อบรรทัด เพราะมันทำงานเหมือนกันไม่ว่าจะมีช่องว่างระหว่างสตริงแบบใดก็ตาม

การใช้งานซอฟต์แวร์ภายนอก

ภาษาโปรแกรมรองรับวิธีการอ้างอิงและใช้งานซอฟต์แวร์อื่น ๆ ในไวยากรณ์ของภาษาได้หลากหลายวิธี ในบางกรณีอาจเป็นการนำเข้าฟังก์ชันการทำงานที่ส่งออกของไลบรารี แพ็กเกจ หรือโมดูลแต่บางกลไกก็ง่ายกว่านั้น เช่น การรวมไฟล์ข้อความ

การนำเข้าสามารถจำแนกได้ตามระดับ (โมดูล แพ็กเกจ คลาส ขั้นตอน ฯลฯ) และตามไวยากรณ์ (ชื่อคำสั่ง คุณลักษณะ ฯลฯ)

ไฟล์รวม
การนำเข้าไฟล์
การนำเข้าแพ็คเกจ
การนำเข้าคลาส
การนำเข้าขั้นตอน/ฟังก์ชัน
การนำเข้าอย่างต่อเนื่อง

ข้อความข้างต้นยังสามารถจำแนกได้ตามความสะดวกทางไวยากรณ์ (ช่วยให้สามารถอ้างถึงสิ่งต่างๆ ด้วยชื่อที่สั้นกว่า แต่ยังคงสามารถอ้างถึงด้วยชื่อเต็มได้โดยไม่ต้องนำเข้า) หรือตามความจำเป็นในการเข้าถึงโค้ด (หากไม่มีข้อความเหล่านี้ จะไม่สามารถเข้าถึงโค้ดได้ แม้จะใช้ชื่อเต็มก็ตาม)

ความสะดวกทางไวยากรณ์
จำเป็นต้องเข้าถึงรหัส

การแบ่งบล็อก

บล็อก คือกลุ่มของโค้ดที่ได้รับการประมวลผลร่วมกัน ไวยากรณ์ ของบล็อกหลายแบบสามารถประกอบด้วยรายการใดๆ ก็ได้ (คำสั่ง นิพจน์ หรือหน่วยโค้ดอื่นๆ) รวมถึงหนึ่งหรือศูนย์รายการก็ได้ ภาษาโปรแกรมกำหนดขอบเขตของบล็อกด้วยวิธีต่างๆ กัน บางภาษาใช้การทำเครื่องหมายข้อความ และบางภาษาใช้การจัดรูปแบบเชิงสัมพันธ์ เช่น ระดับการเยื้อง

วงเล็บปีกกา (หรือวงเล็บเหลี่ยม) {...}
วงเล็บ(...)
วงเล็บเหลี่ยม[...]
  • Rebol , Red , Self , Smalltalk (บล็อกเป็นอ็อบเจ็กต์ระดับเฟิร์สคลาส หรือที่เรียกว่า closures)
begin...end
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... )
รอยบุ๋ม
คนอื่น

ความคิดเห็น

ในแง่ของนิยามทางภาษา ไวยากรณ์ของข้อความแสดงความคิดเห็นสามารถจำแนกได้หลายวิธี รวมถึง:

  • ข้อความแสดงความคิดเห็นแบบบรรทัดต่อบรรทัด กับแบบบล็อก – ข้อความแสดงความ คิดเห็นแบบบรรทัดต่อบรรทัดจะเริ่มต้นด้วยตัวคั่น และต่อเนื่องไปจนถึงท้ายบรรทัด ( ตัวขึ้น บรรทัดใหม่ ) ในขณะที่ข้อความแสดงความคิดเห็นแบบบล็อกจะเริ่มต้นด้วยตัวคั่นหนึ่งตัวและสิ้นสุดด้วยตัวคั่นอีกตัวหนึ่ง และสามารถข้ามบรรทัดได้
  • สามารถซ้อนกันได้หรือไม่ – บล็อกคอมเมนต์สามารถอยู่ภายในบล็อกคอมเมนต์อื่นได้หรือไม่
  • วิธีการวิเคราะห์ข้อความโดยสัมพันธ์กับภาษา เครื่องมือต่างๆ (รวมถึงคอมไพเลอร์และอินเตอร์พรีเตอร์) อาจวิเคราะห์ข้อความแสดงความคิดเห็นได้เช่นกัน แต่การวิเคราะห์นั้นอาจอยู่นอกเหนือคำจำกัดความของภาษา

วิธีอื่นๆ ในการจัดหมวดหมู่ความคิดเห็นที่อยู่นอกเหนือคำจำกัดความของภาษา:

  • คอมเมนต์แบบอินไลน์และคอมเมนต์แบบโปรล็อก – คอมเมนต์แบบอินไลน์จะอยู่ต่อจากโค้ดในบรรทัดเดียวกัน ส่วนคอมเมนต์แบบโปรล็อกจะอยู่ก่อนหน้าโค้ดส่วนที่เกี่ยวข้อง คอมเมนต์แบบบรรทัดหรือแบบบล็อกสามารถใช้ได้ทั้งแบบอินไลน์และแบบโปรล็อก
  • การสนับสนุนการสร้างเอกสารAPI ซึ่งอยู่นอกเหนือคำจำกัดความของภาษา

ความคิดเห็นบรรทัด

เครื่องหมาย ภาษา
CFortran 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~commentALGOL 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~=cutPerl (เอกสารแบบธรรมดา)
#`(~)Raku (อักขระวงเล็บสามารถเป็น (), <>, {}, [], อักขระ Unicode ใดๆ ที่มีการสะท้อนแบบ BiDi หรืออักขระ Unicode ที่มีคุณสมบัติ Ps/Pe/Pi/Pf)
=begin~=endทับทิม
#<TAG>~ , ~ , ~ , ~ , ~ , ~#</TAG>#stopEOF#iffalse#endif#ifntrue#endif#if false#endif#if !true#endifS-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
อัลโกล 60comment BlockComment;
อัลโกล 68¢ BlockComment ¢

commentBlockCommentcommentcoBlockCommentco# BlockComment #£ BlockComment £

เอพีแอลLineComment
แอปเปิลสคริปต์-- LineComment(* BlockComment *)
ภาษาแอสเซมบลี (แตกต่างกันไป) ; LineComment   ตัวอย่างหนึ่ง (ภาษาแอสเซมบลีส่วนใหญ่ใช้คำอธิบายบรรทัดเท่านั้น)
ออโต้ฮอตคีย์; LineComment/* BlockComment */
AWK , Bourne shell , C shell , Maple , PowerShell# LineComment<# BlockComment #>
ทุบตี# LineComment<<EOFBlockCommentEOF: 'BlockComment'
ภาษาพื้นฐาน (สำเนียงต่างๆ): 'LineComment(ไม่ใช่ทุกสำเนียง)

*LineComment(ไม่ใช่ทุกสำเนียง) (ไม่ใช่ทุกสำเนียง) !LineCommentREM 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 #|

|foo# BlockComment #|

งูเห่า# LineComment/# BlockComment #/(ซ้อนกันได้)
ดี// LineComment/// Documentation LineComment(หมายเหตุจาก ddoc) /* BlockComment *//** Documentation BlockComment */(หมายเหตุจาก ddoc)

/+ BlockComment +/(ซ้อนกันได้) (ซ้อนกันได้, คำอธิบาย ddoc) /++ Documentation BlockComment +/

ดีซีแอล$! LineComment
ECMAScript ( JavaScript , ActionScriptฯลฯ) // LineComment/* BlockComment */
ยาอายุวัฒนะ# LineComment~S"""BlockComment"""@doc """BlockComment"""(เอกสารประกอบ ใช้ได้เฉพาะในโมดูล) (เอกสารประกอบโมดูล) (เอกสารประกอบประเภท) @moduledocBlockComment"""@typedocBlockComment"""
ไปข้างหน้า\ LineComment( BlockComment )(บรรทัดเดียวและหลายบรรทัด)

( before -- after )ธรรมเนียมการแสดงความคิดเห็นแบบเรียงซ้อน

FORTRAN I ถึง FORTRAN 77 C LineComment(C ในคอลัมน์ที่ 1)
ฟอร์ทราน 90และเวอร์ชันที่ใหม่กว่า ! LineComment#if 0  BlockComment#endif[ d ]
ฮัสเคลล์-- LineComment{- BlockComment -}
เจNB.
ชวา// LineComment/* BlockComment */

/** BlockComment */( หมายเหตุประกอบเอกสาร Javadoc )

จูเลีย# 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 )

__END__Comments after end of code

พีจีเอ็นเอ็นสีแดง; 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}

=comment    This comment paragraph goes until the next POD directive    or the first blank line.[ 23 ] [ 24 ]

สนิม// LineComment

/// LineComment (ข้อความอธิบาย rustdoc "ภายนอก) (ข้อความอธิบาย rustdoc "ภายใน) //! LineComment

/* BlockComment */ (ซ้อนกันได้)

/** BlockComment */ (ข้อความอธิบาย rustdoc "ภายนอก) (ข้อความอธิบาย rustdoc "ภายใน) /*! BlockComment */

เอสเอเอส* BlockComment;/* BlockComment */
เมล็ดพันธุ์ 7# LineComment(* BlockComment *)
ซิมูล่าcomment BlockComment;! BlockComment;
การสนทนาเล็กๆ น้อยๆ"BlockComment"
สมาร์ตี้{* BlockComment *}
มาตรฐาน ML(* BlockComment *)
TeX , LaTeX , PostScript , Erlang , S-Lang% LineComment
เท็กซ์อินโฟ@c LineComment

@comment LineComment

ติวเตอร์* LineCommentcommand $$ LineComment
วิชวลเบส' LineCommentRem LineComment' BlockComment _BlockCommentRem BlockComment _BlockComment[]
วิชวลเบสิก (.NET)' LineComment

''' LineComment(หมายเหตุประกอบเอกสาร XML) Rem LineComment

#If COMMENT Then  BlockComment#End If
บทนำภาพ% LineComment/* BlockComment */
ภาษาวูลฟรัม(* BlockComment *)
โซโจ' LineComment// LineCommentrem LineComment
ซิก// LineComment/// LineComment//! LineComment

ดูเพิ่มเติม

หมายเหตุ

  1. ^ Visual Basic (.NET)ไม่รองรับการแสดงความคิดเห็นแบบหลายบรรทัดแบบดั้งเดิม แต่สามารถจำลองได้ผ่านคำสั่งคอมไพเลอร์
  2. ^ a bแม้ว่า C# จะรองรับการเขียนความคิดเห็นแบบบล็อกแบบดั้งเดิม/* ... */แต่ก็สามารถใช้คำสั่งคอมไพเลอร์เพื่อเลียนแบบได้ เช่นเดียวกับใน VB.NET
  3. อักขระต่อบรรทัดสามารถ ใช้เพื่อขยายข้อความแสดงความ คิดเห็นบรรทัดเดียวไปยังบรรทัดถัดไปโดยไม่ต้องพิมพ์ซ้ำสามารถทำได้สูงสุด 24 ครั้งติดต่อกัน_'REM
  4. ^ Fortranไม่รองรับความคิดเห็นแบบบล็อกแบบดั้งเดิม แต่คอมไพเลอร์บางตัวรองรับคำสั่งพรีโปรเซสเซอร์ในรูปแบบของ C / C++ซึ่งช่วยให้โปรแกรมเมอร์สามารถจำลองความคิดเห็นแบบหลายบรรทัดได้ [ 22 ]
  5. ^เครื่องหมายเปอร์เซ็นต์ทั้งสองจะต้องเป็นอักขระที่ไม่ใช่ช่องว่างเพียงตัวเดียวในบรรทัดนั้นๆ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Comparison_of_programming_languages_(syntax)&oldid=1350449733 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเปรียบเทียบภาษาโปรแกรม (ไวยากรณ์)

โดยทั่วไปแล้ว นิพจน์ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:

การแสดงออก

โดยทั่วไปแล้ว นิพจน์ ในภาษาโปรแกรมสามารถแบ่งออกเป็นโครงสร้างไวยากรณ์ได้สี่ประเภท:

การกำหนดขอบเขตของข้อความ

โดยทั่วไปแล้ว ภาษาที่รองรับ โครงสร้าง ประโยคบอกเล่า จะมีกฎสำหรับแง่มุมอย่างน้อยหนึ่งข้อต่อไปนี้:

เส้นต่อเนื่อง

ด้านล่างนี้คือภาษาที่เน้นการเขียนตามบรรทัดซึ่งอนุญาตให้มีการต่อบรรทัดได้ เว้นแต่จะระบุไว้เป็นอย่างอื่น เครื่องหมายการต่อบรรทัดจะต้องเป็นข้อความสุดท้ายของบรรทัด