.. title: کامپایلر .. slug: compiler .. date: 2015-08-13 09:40:35 UTC+04:30 .. tags: .. category: .. link: .. description: .. type: text کتاب اصلی درس .. class:: yoosofan-change-ltr * `Compilers: Principles, Techniques, and Tools (2nd Edition). Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Addison Wesley, (August 2006) `_ * `Introduction to Compilers and Language Design `_ `Code Examples `_ * `Basics of Compiler Design `_ ------------- دیگر منابع -------------------------------- #. https://web.stanford.edu/class/cs143/ #. https://web.cs.hacettepe.edu.tr/~ilyas/Courses/BIL744/ #. https://www.csd.uwo.ca/~mmorenom/CS447/Lectures/Syntax.html/node8.html #. https://www.researchgate.net/publication/2367776_An_Introduction_to_Compilers?enrichId=rgreq-3d6589b36b650b1be61ea0ce1b1b7805-XXX&enrichSource=Y292ZXJQYWdlOzIzNjc3NzY7QVM6OTg4Mjk0MzcyNDMzOTVAMTQwMDU3NDE4MjE5Ng%3D%3D&el=1_x_2&_esc=publicationCoverPdf #. https://www.tutorialspoint.com/compiler_design/compiler_design_syntax_analysis.htm ---- `برنامه‌های نمونه به زبان lex `_ در وب‌گاه‌های زیر ابزارهای خوبی برای کار با عبارت‌های منظم آماده شده است. برای فراگیری بهتر عبارت‌های منظم می‌توانید این ابزارها را به کار ببرید. .. class:: yoosofan-change-ltr * ``_ * ``_ * ``_ * ``_ ----------- ابزارهای دیگری برای انجام کارهای یک کامپایلر در زیر فهرست شده است. .. class:: yoosofan-change-ltr * `PLY (Python based) `_ * `JS/CC `_ , `github `_ * old website: http://jscc.phorward-software.com/> * `jison (javascript based) `_ * `antlr (java based) `_ * `Quex (c/c++) `_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * http://www.fit.vutbr.cz/~ikocman/llkptg/ * https://github.com/rkocman/LLk-Parsing-Table-Generator * http://jsmachines.sourceforge.net/machines/ll1.html , http://jsmachines.sourceforge.net/machines/ll1.html , https://sourceforge.net/projects/jsmachines/ * http://hackingoff.com/compilers/ll-1-parser-generator * `LISA `_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ -------------- برای تبدیل دستور زبان به جدول‌های گوناگون مانند SLR , LALR , LR(1) ابراز `jison_try `_ را می‌توانید به کار ببرید. -------------------------------------- در سایت زیر ابزار شایسته‌ای برای درس کامپایلر آماده شده است. این ابزار بر روی انواع مروگرهای اجرا می‌شود. این ابزار کار تحلیل‌گر لغوی را انجام می‌دهد. همچنین بسته به گرامر ورودی جدول تجزیهٔ LALR آن را نمایش می‌دهد. `jscc compiler tool `_ `ماشین حساب ساده `_ `زبان برنامه نویسی نمونه `_ گذاشته شده است. در این برنامه تغییر یافته نیز کمترین نیاز به دانستن زبان javascript است و jscc به طور خودکار جدول LALR را می‌سازد. افزون بر این می‌توان به کمک این ابزار درخت تجزیه یک برنامه ساده را نیز ساخت. در ``_ یک کد ساده برنامه به زبان داده شده نوشته شده است که پس از اجرای آن درخت تجزیه ساخته شده نشان می‌دهد که تصمیم jscc برای برطرف کردن برخورد به خاطر else به درستی انجام شده است. بهتر است هنگام به کار گیری jscc کادر Show warnings را انتخاب نمایید تا اخطارها و برخوردهای یافت شده در دستور زبان به شما نشان داده شود. برای گرفتن جدول LALR از `jscc `_ در مرورگر firefox همه جدول را انتحاب کرده و کلیک راست کنید سپس گزینه view selection source ر ا برگزینید تا کد جدول ساخته شده نمایش داده شود