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

อ่าน 2 นาที

ซีจีโอแอล

CGOL [ 1 ] [ 2 ] (ออกเสียงว่า "ซี กอลล์" ) เป็นไวยากรณ์ทางเลือกที่มีสัญกรณ์พีชคณิตที่ขยายได้สำหรับ ภาษาการเขียนโปรแกรม Lisp ได้รับการออกแบบสำหรับ MACLISP โดย Vaughan Pratt...

ซีจีโอแอล

ซีจีโอแอล
กระบวนทัศน์ขั้นตอน , คำสั่ง , มีโครงสร้าง
ออกแบบโดยวอห์น แพรตต์
ปรากฏครั้งแรกพ.ศ. 2516
ได้รับอิทธิพลจาก
ALGOL , FORTRAN , MLisp

CGOL [ 1 ] [ 2 ] (ออกเสียงว่า"ซี กอลล์" ) เป็นไวยากรณ์ทางเลือกที่มีสัญกรณ์พีชคณิตที่ขยายได้สำหรับภาษาการเขียนโปรแกรม Lispได้รับการออกแบบสำหรับMACLISPโดยVaughan Prattและต่อมาได้พอร์ตไปยังCommon Lisp [ 3 ]

สัญกรณ์ของ CGOL เป็นสัญกรณ์อินฟิกซ์ แบบดั้งเดิม ในรูปแบบของALGOLแทนที่จะเป็นไวยากรณ์สัญกรณ์พรีฟิกซ์แบบ ดั้งเดิมของ Lisp ที่มี วงเล็บ เหมือนกัน ตัวแยกวิเคราะห์ CGOL อิงตามการออกแบบของ Pratt สำหรับการแยกวิเคราะห์ลำดับความสำคัญของตัวดำเนินการจากบนลงล่าง [ 4 ] [ 5 ]บางครั้งเรียกกันอย่างไม่เป็นทางการว่า " ตัวแยกวิเคราะห์ Pratt "

ในเชิงความหมายแล้ว CGOL ก็คือภาษา Common Lisp นั่นเอง โดยมีส่วนเพิ่มเติมคือการรองรับการอ่านและการพิมพ์

อาจกล่าวได้ว่า CGOL เป็นรูปแบบที่ประสบความสำเร็จมากกว่าของแนวคิดสำคัญบางประการที่อยู่เบื้องหลัง โครงการ LISP 2 ก่อนหน้านี้ LISP 2 เป็นผู้สืบทอดของLISP 1.5ที่มุ่งเป้าไปที่การให้ไวยากรณ์ ALGOL LISP 2 ถูกยกเลิกไปแล้ว ในขณะที่โค้ดเบสของ CGOL ยังคงใช้งานได้ในปัจจุบัน เนื่องจากแตกต่างจาก LISP 2 CGOL ถูกพัฒนาขึ้นในรูปแบบของฟังก์ชันและมาโครที่เขียนด้วยภาษา Lisp ซึ่งไม่จำเป็นต้องแก้ไขการใช้งาน Lisp ดั้งเดิมแต่อย่างใด

ไวยากรณ์

มีสัญลักษณ์พิเศษสำหรับการดำเนินการ Common Lisp ที่ใช้กันทั่วไปหลายอย่าง ตัวอย่างเช่น เราสามารถเขียนรูทีนการคูณเมทริกซ์ได้ดังนี้:

สำหรับi ตั้งแต่1 ถึงn ทำซ้ำสำหรับk ตั้งแต่1 ถึงn ทำซ้ำ( ac := 0 ; สำหรับj ตั้งแต่1 ถึงn ทำซ้ำac := ac + a ( i , j ) * b ( j , k ) ; c ( i , k ) := ac )

CGOL มี.การดำเนินการแบบอินฟิกซ์ (อ้างอิงถึงconsฟังก์ชันของ Common Lisp) และ@การดำเนินการแบบอินฟิกซ์ (อ้างอิงถึงappendฟังก์ชันของ Common Lisp):

a.(b@c) = (ab)@c 

ตัวอย่างข้างต้นสอดคล้องกับข้อความนี้ในภาษา Common Lisp ดั้งเดิม:

( เท่ากับ( เงื่อนไขA ( ต่อท้ายB C )) ( ต่อท้าย( เงื่อนไขA B ) C ))

CGOL ใช้ofสำหรับอ่านและตั้งค่าคุณสมบัติ:

'พ่อ' ของx := 'พี่ชาย' ของญาติของy

ตัวอย่างข้างต้นสอดคล้องกับข้อความนี้ในภาษา Common Lisp ดั้งเดิม:

( PUTPROP X ( GET ( GET Y RELATIVE ) 'BROTHER ) 'FATHER )

ตัวอย่างนี้แสดงให้เห็นว่า CGOL ใช้สัญลักษณ์ใดในการแสดงฟังก์ชันที่มีอาร์กิวเมนต์สองตัว:

x,y; 1/sqrt(x**2 + y**2) 

ตัวอย่างข้างต้นสอดคล้องกับข้อความนี้ในภาษา Common Lisp ดั้งเดิม:

( แลมบ์ดา( X Y ) ( หาร1 ( รากที่ สอง ( บวก( คูณX 2 ) ( คูณY 2 )))))

ไวยากรณ์ของ CGOL นั้นขับเคลื่อนด้วยข้อมูล ดังนั้นจึงสามารถปรับเปลี่ยนและขยายได้

สถานะและรหัสต้นฉบับ

CGOL เป็นที่รู้จักว่าทำงานบนArmed Bear Common Lisp [ 6 ]

ซอร์สโค้ด CGOL และไฟล์ข้อความบางส่วนที่มีการอภิปรายเกี่ยวกับซอร์สโค้ดนี้ สามารถดาวน์โหลดได้ฟรีจากคลังปัญญาประดิษฐ์ของมหาวิทยาลัยคาร์เนกี-เมลลอน[ 3 ]

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=CGOL&oldid=1328340098 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ ซีจีโอแอล

CGOL [ 1 ] [ 2 ] (ออกเสียงว่า "ซี กอลล์" ) เป็นไวยากรณ์ทางเลือกที่มีสัญกรณ์พีชคณิตที่ขยายได้สำหรับ ภาษาการเขียนโปรแกรม Lisp ได้รับการออกแบบสำหรับ MACLISP โดย Vaughan Pratt...

ไวยากรณ์

มีสัญลักษณ์พิเศษสำหรับการดำเนินการ Common Lisp ที่ใช้กันทั่วไปหลายอย่าง ตัวอย่างเช่น เราสามารถเขียนรูทีนการคูณเมทริกซ์ได้ดังนี้:

สถานะและรหัสต้นฉบับ

CGOL เป็นที่รู้จักว่าทำงานบน Armed Bear Common Lisp [ 6 ]