آموزش طراحی کامپایلر: اصول، تکنیک‌ها و ابزارها - آخرین آپدیت

دانلود Compiler Design: Principles, Techniques and Tools

نکته: ممکن هست محتوای این صفحه بروز نباشد ولی دانلود دوره آخرین آپدیت می باشد.
نمونه ویدیوها:
توضیحات دوره:

اصول طراحی کامپایلر

اهداف دوره طراحی کامپایلر

  1. آشنایی با مفاهیم اصلی ترجمه زبان و طراحی کامپایلر و کسب مهارت‌های عملی لازم برای ساخت کامپایلر.
  2. یادگیری مباحثی شامل فازهای کامپایلر، تجزیه (Parsing)، ترجمه با هدایت نحو (Syntax Directed Translation)، بررسی نوع (Type Checking)، استفاده از جداول نماد (Symbol Tables)، تکنیک‌های بهینه‌سازی کد، تولید کد میانی (Intermediate Code Generation)، تولید کد (Code Generation) و تحلیل جریان داده (Data Flow Analysis).

نتایج دوره طراحی کامپایلر

  1. توانایی طراحی کامپایلر با توجه به مجموعه‌ای از ویژگی‌های زبان.
  2. آگاهی از الگوها (Patterns)، توکن‌ها (Tokens) و عبارات با قاعده (Regular Expressions) برای تحلیل لغوی (Lexical Analysis).
  3. کسب مهارت در استفاده از ابزارهای Lex و Yacc برای توسعه اسکنر و پارسر.
  4. طراحی و پیاده‌سازی پارسرهای LL و LR.
  5. طراحی الگوریتم‌های بهینه‌سازی کد برای بهبود عملکرد برنامه از نظر پیچیدگی فضا و زمان.
  6. طراحی الگوریتم‌های تولید کد ماشین.

سرفصل‌های دوره طراحی کامپایلر

ماژول ۱: مبانی کامپایلر و تحلیل لغوی

  • مقدمه: ساختار کامپایلر، علم ساخت کامپایلر، مبانی زبان‌های برنامه‌نویسی.
  • تحلیل لغوی: نقش تحلیلگر لغوی، بافر ورودی، تشخیص توکن‌ها، تولیدکننده تحلیلگر لغوی Lex، اتوماتا متناهی (Finite Automata)، تبدیل عبارات با قاعده به اتوماتا، طراحی تولیدکننده تحلیلگر لغوی، بهینه‌سازی تطبیق‌دهنده‌های الگو مبتنی بر DFA.

ماژول ۲: تحلیل نحوی (Parsing)

  • مقدمه: گرامرهای مستقل از متن (Context-Free Grammars)، نوشتن گرامر.
  • تجزیه بالابه پایین (Top-Down Parsing)، تجزیه بالابه بالا (Bottom-Up Parsing).
  • مقدمه‌ای بر تجزیه LR: LR ساده، پارسرهای LR قدرتمندتر، استفاده از گرامرهای مبهم و تولیدکننده‌های پارسر.

ماژول ۳: ترجمه با هدایت نحو و تولید کد میانی

  • ترجمه با هدایت نحو: تعاریف با هدایت نحو، ترتیب ارزیابی برای SDD‌ها، کاربردهای ترجمه با هدایت نحو، طرح‌های ترجمه با هدایت نحو، پیاده‌سازی SDD‌های L-Attributed.
  • تولید کد میانی: انواع درخت‌های نحو، کد سه‌آدرسی (Three-Address Code)، انواع و اعلان‌ها، بررسی نوع، جریان کنترل، دستورات Switch، کد میانی برای رویه‌ها (Procedures).

ماژول ۴: محیط‌های زمان اجرا و تولید کد

  • محیط‌های زمان اجرا: تخصیص فضا روی پشته (Stack Allocation)، دسترسی به داده‌های غیرمحلی روی پشته، مدیریت پشته (Heap Management)، مقدمه‌ای بر جمع‌آوری زباله (Garbage Collection)، مقدمه‌ای بر جمع‌آوری مبتنی بر ردگیری (Trace-Based Collection).
  • تولید کد: مسائل در طراحی تولیدکننده کد، زبان مقصد (Target Language)، آدرس‌ها در کد مقصد، بلوک‌های پایه (Basic Blocks) و گراف‌های جریان (Flow Graphs)، بهینه‌سازی بلوک‌های پایه، یک تولیدکننده کد ساده، بهینه‌سازی Peephole، تخصیص و assignment رجیستر، تولید کد مبتنی بر برنامه‌نویسی پویا.

ماژول ۵: بهینه‌سازی مستقل از ماشین

  • بهینه‌سازی مستقل از ماشین: منابع اصلی بهینه‌سازی، مقدمه‌ای بر تحلیل جریان داده، مبانی تحلیل جریان داده، انتشار مقادیر ثابت (Constant Propagation)، حذف افزونگی جزئی (Partial-Redundancy Elimination)، حلقه‌ها در گراف‌های جریان.

پیش‌نیازهای دوره طراحی کامپایلر:

  • دوره "زبان‌های رسمی و نظریه اتوماتا"
  • دوره "سازمان و معماری کامپیوتر"
  • دوره "برنامه‌نویسی کامپیوتر و ساختمان داده‌ها"

منبع اصلی:

  1. کتاب "Compilers: Principles, Techniques and Tools"، ویرایش دوم، نوشته Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffry D. Ullman.

سرفصل ها و درس ها

مقدمه Introduction

  • مقدمه ای بر کامپایلرها Introduction to Compilers

  • ساختار کامپایلر: فازهای کامپایلر The structure of a compiler: Phases of compilers

  • علم ساخت کامپایلر The science of building a compiler

  • مبانی زبان های برنامه نویسی Programming language basics

تحلیل لغوی یا اسکنر Lexical Analysis or Scanner

  • نقش تحلیلگر لغوی The Role of the Lexical Analyzer

  • بافر ورودی و مشخصات توکن ها Input Buffering & Specification of Tokens

  • تشخیص توکن ها Recognition of Tokens

  • مولد تحلیلگر لغوی: ابزار Lex The Lexical-Analyzer Generator: Lex tool

  • ماشین های متناهی (FA) Finite Automata (FA)

  • از عبارات منظم تا ماشین ها From Regular Expressions to Automata

  • طراحی مولد تحلیلگر لغوی Design of a Lexical-Analyzer Generator

  • بهینه سازی تطابق الگو بر اساس DFA Optimization of DFA-Based Pattern Matches

تحلیل نحوی یا پارسر Syntax Analysis or Parser

  • مقدمه ای بر تحلیل نحوی یا پارسر Introduction to Syntax Analysis or Parser

  • گرامرهای مستقل از متن (CFGs) Context-Free Grammars (CFGs)

  • نوشتن گرامر Writing a Grammar

تجزیه از بالا به پایین Top-Down Parsing

  • پارسر نزولی بازگشتی Recursive-Descent Parser

  • پارسر پیش‌بین – مدل، کارکرد و توالی حرکات Predictive Parser-Model, Working and Sequence of Moves

  • پارسر پیش‌بین – محاسبه مقادیر FIRST و FOLLOW Predictive Parser- Computing FIRST & FOLLOW values

  • پارسر پیش‌بین – ساخت جدول تجزیه پیش‌بین و گرامر LL(1) Predictive Parser - Predictive Parsing Table Construction & LL(1) Grammar

تجزیه از پایین به بالا Bottom-up Parsing

  • مقدمه ای بر تجزیه از پایین به بالا | پارسر شیفت-کاهش (SR) Introduction to Bottom-up parsing | Shift-Reduce (SR) Parser

  • مقدمه ای بر تجزیه LR و آیتم های LR(0) Introduction to LR Parsing & LR(0) items

  • پارسر LR – مدل، کارکرد، الگوریتم و حرکات پارسر LR The LR Parsing- Model, Working, Algorithm & Moves of LR parser

  • پارسر ساده LR (پارسر SLR) Simple LR Parser (SLR Parser)

  • پارسر کانونی LR (پارسر CLR) و آیتم های LR(1) Canonical LR Parser (CLR Parser) & LR(1) Items

  • ساخت جدول تجزیه CLR Constructing CLR Parsing Table

  • ساخت جدول تجزیه LALR Constructing LALR Parsing Table

  • پارسر LR با استفاده از گرامرهای مبهم | بازیابی خطا در تجزیه LR LR Parser using Ambiguous Grammars | Error Recovery in LR Parsing

  • مولدهای پارسر – YACC (مولد کامپایلر دیگر) Parser Generators -YACC (Yet Another Compiler-Compiler)

ترجمه تحت نظارت نحو (SDT) Syntax-Directed Translation (SDT)

  • تعاریف تحت نظارت نحو (SDD) | صفات ارثی و ترکیبی Syntax-Directed Definitions (SDD) | Inherited & Synthesized Attributes

  • ترتیب ارزیابی برای SDD ها Evaluation Orders for SDD's

  • کاربردهای ترجمه تحت نظارت نحو (SDT) Applications of Syntax-Directed Translation (SDT)

  • طرح های ترجمه تحت نظارت نحو (SDT) Syntax-Directed Translation (SDT) Schemes

  • پیاده سازی SDD های وابسته به L Implementing L-Attributed SDD's

تولید کد میانی Intermediate-Code Generation

  • انواع درخت های نحو Variants of Syntax Trees

  • کد سه آدرسی Three-Address Code

  • انواع و اعلان ها Types and Declarations

  • بررسی انواع Type Checking

  • کنترل جریان | دستورات Switch | کد میانی برای رویه ها Control Flow | Switch-Statements | Intermediate Code for Procedures

محیط های زمان اجرا Run-Time Environments

  • سازماندهی حافظه Storage Organization

  • تخصیص فضا در پشته Stack Allocation of Space

  • دسترسی به داده های غیر محلی در پشته Access to Non-local Data on the Stack

  • مدیریت Heap Heap Management

  • مقدمه ای بر جمع آوری زباله و مقدمه ای بر جمع آوری مبتنی بر Trace Introduction to Garbage Collection & Introduction to Trace-Based Collection

تولید کد Code Generation

  • مسائل در طراحی تولیدکننده کد Issues in the Design of a Code Generator

  • بلوک های پایه و گراف های جریان | بهینه سازی بلوک های پایه Basic Blocks and Flow Graphs & Optimization of Basic Blocks

  • تولیدکننده کد ساده و بهینه سازی Peephole A Simple Code Generator & Peephole Optimization

  • تخصیص و انتساب رجیستر | تولید کد با برنامه ریزی پویا Register Allocation & Assignment | Dynamic Programming Code Generation

بهینه سازی های مستقل از ماشین Machine-Independent Optimizations

  • منابع اصلی بهینه سازی The Principal Sources of Optimization

  • حلقه ها در گراف های جریان | انتشار ثابت | حذف افزونگی جزئی Loops in Flow Graphs | Constant Propagation | Partial Redundancy Elimination

  • مقدمه ای بر تحلیل جریان داده Introduction to Data-Flow Analysis

  • حل معادلات جریان داده Solving Data-Flow Equations

آزمون عملی Practice Test

  • آزمون عملی-1 Practice Test-1

نمایش نظرات

آموزش طراحی کامپایلر: اصول، تکنیک‌ها و ابزارها
جزییات دوره
34.5 hours
51
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
264
4.5 از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Rasineni Madana Mohana Rasineni Madana Mohana

دانشیار ، علوم کامپیوتر و مهندسی من دانشیار گروه علوم کامپیوتر و مهندسی هستم. من در زمینه بازیابی اطلاعات و یادگیری ماشین کار می کنم. علایق تحقیقاتی خاص من در "تکنیک های کارآمد برای بازیابی و شناخت اطلاعات با استفاده از پردازش تصویر ، یادگیری ماشین و یادگیری عمیق" است. تحقیقات فعلی: "پیش بینی هوشمند سهام ماهی" با استفاده از پردازش تصویر ، یادگیری ماشین و یادگیری عمیق.