interpreter กับ compiler ต่างกันยังไง?


สรุป ง่ายๆสั้นๆ

"Compiler แปลก่อน ค่อยรัน , Interpreter แปลไป รันไป"


Compiler จะประมวลผลออกมาเป็นเลขฐานที่สามารถติดต่อได้กับเครื่องโดยตรง ส่วนมากจะเป็น high-level programming languag
ข้อดีคือ มีความรวดเร็ว
ข้อเสียคือ  การนำไปใช้กับระบบปฏิบัติการและสถาปัตยกรรมต่างกัน ต้องทำการคอมไพล์ใหม่ให้เหมาะสมกับระบบปฏิบัติการและสถาปัตยกรรมนั้น ๆ หรือไม่ก็ต้องใช้ Virtual Machine




Interpreter เป็นโปรแกรมแปลคำสั่ง จะทำงานตามชุดคำสั่งที่เขียนไว้ทันที
ข้อดีคือ ไม่ต้องนำไปประมวลผลใหม่เมื่อใช้กับปฏิบัติการต่างระบบ
ข้อเสีย โปรแกรมจะทำงานช้ากว่าระบบที่ประมวลผลด้วย Compiler เพราะอินเทอร์พรีเตอร์จะต้องแปลแต่ละคำสั่งในระหว่างการทำงานว่าจะต้องทำอะไรต่อไป
ตัวอย่างภาษาที่มีการใช้อินเทอร์พรีเตอร์ ได้แก่  Perl, Python, MATLAB, Ruby

----------------------------------------------------------------------------------------

     1. Lexical Analysis หรือส่วนวิเคราะห์คำ

           ส่วนการวิเคราะห์คำประกอบด้วยขั้นตอนเดียว คือ ขั้นตอนการวิเคราะห์คำ หรือ ตัววิเคราะห์คำ (Lexical analyzer) หรือตัวกราดตรวจ (scanner) ในขั้นตอนนี้จะมี input และ output ดังนี้
      Input :      แต่ละ character ใน program
      Output :  Token
โดยแต่ละ token จะประกอบด้วย 2 ส่วนคือ
          1. Class
          2. Value

Token:  | Class | Value |

 Class แบ่งออกได้ดังนี้
- คำหลัก (keyword)
-ตัวแปร (variable) หรือตัวระบุ (identifier)
- เครื่องหมายดำเนินการ (operator)
- ค่าคงที่ (constant)
- ป้ายชื่อ (label), หมายเลขบรรทัด (line number) หรือชื่อพารากราฟ (paragraph name)
- อักขระคั่น (delimiter) หรืออักขระแบ่ง (separator)
ขั้นตอนการวิเคราะห์ศัพท์ จะกราดตรวจ character ทีละ character จนกว่าจะเจอ delimeter หรือ operator ก็จะได้ token


     2. Syntax Box  ส่วนวิเคราะห์เชิงวากยสัมพันธ์ แบ่งได้เป็น 3 ขั้นตอนคือ

            2.1. Syntax analysis หรือ ตัววิคราะห์เชิงวากยะสัมพันธ์  หรือตัววิเคราะห์กระจาย (parser) ในขั้นตอนนี้มี input และ output ดังนี้
Input : token
Output : hierarchical structure เช่น tree
            2.2. Sementic analysis  เป็นขั้นตอนการตรวจสอบหาความผิดพลาดทางความหมาย (sementic error) และรวบรวม type เพื่อใช้ในขั้นตอนของ intermediate code generation การตรวจสอบหาความผิดพลาดทางความหมายมี 2 ลักษณะคือ
                  2.2.1 การตรวจแบบสถิต (Static checking) เป็นการตรวจสอบระหว่างการ compile
                  2.2.2 การตรวจแบบพลวัต (Dynamic checking) เป็นการตรวจสอบในช่วง run time
            2.3. Intermediate code generation  การทำให้เกิดรหัสกลาง มี input และ output ดังนี้
Input : tree
Output : atom หรือ three-address code
ซึ่งแต่ละ atom จะคือกระบวนคำสั่งย่อยๆ (procedure)
ส่วน three address code รูปแบบคำสั่งแต่ละคำสั่งจะมีตัวถูกดำเนินการ 3 ตัว

      3. Code generation Box ส่วนที่ทำให้เกิดรหัส แบ่งได้เป็น 2 ขั้นตอนคือ
          - การทำให้รหัสเหมาะที่สุด (Code optimization)
          - การทำให้เกิดรหัส (Code generation)

Ref. Narisa.com , cs.science.cmu.ac.th , wikipedia.org , warleo.com

Comments

  1. Interpreter กับ Compiler ต่างกันยังไง? >>>>> Download Now

    >>>>> Download Full

    Interpreter กับ Compiler ต่างกันยังไง? >>>>> Download LINK

    >>>>> Download Now

    Interpreter กับ Compiler ต่างกันยังไง? >>>>> Download Full

    >>>>> Download LINK io

    ReplyDelete

Post a Comment

Popular posts from this blog

Source file not compile Dev C++ win 8, win 8.1 , win10

[PSU] วิธีการขอ License Win 7,8,8.1,10 ของแท้ฟรี