{"id":13838,"date":"2014-12-15T14:09:00","date_gmt":"2014-12-15T13:09:00","guid":{"rendered":"https:\/\/rafen.app\/uncategorized\/compilers\/"},"modified":"2023-04-30T21:07:58","modified_gmt":"2023-04-30T20:07:58","slug":"compilers","status":"publish","type":"post","link":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/","title":{"rendered":"Compilers"},"content":{"rendered":"<h5>Objectives and outcomes<\/h5>\n<p>The aim is to teach students about the techniques of conversion from one programming language to<br \/>\nanother, as well as about the principles of compilers, the tools for their creation, and their<br \/>\nimplementation. Moreover, students understand compilers which are the main tools in the development<br \/>\nof computer programs. Students can design a compiler.<\/p>\n<h5>Lectures<\/h5>\n<p>The origins of the higher programming languages and compilers. Compilers classification. Compilers<br \/>\nevaluation. Current challenges in the development of compilers. Compiler infrastructures (GCC, LLVM).<br \/>\nTheory of formal languages (grammar, Chomsky&#8217;s hierarchy). Lexical analysis (basic scanning algorithm,<br \/>\nbasic dilemmas, regular expressions, non-deterministic and deterministic finite automata, tabular<br \/>\nimplementation of finite automata). Semantic analysis (context-free grammars, ambiguity and how to<br \/>\novercome it, parsing errors and how to approach them, abstract syntax tree, recursive descending<br \/>\nparsing, left recursion and how to overcome it, predictive parsing, LL1 table, ascending parsing).<br \/>\nSemantic analysis (scope, symbol table, type environment, method type, static and dynamic type<br \/>\ncontrol). Code generation (execution organisation, activation record, allocation, alignment, machine<br \/>\nstack, MIPS architecture). Fundamentals of code optimisation (evaluation rules, intermediate code, base<br \/>\nblock, flow control graph, local and global optimisation).<\/p>\n<h5>Practical classes<\/h5>\n<p>Parsing strings in C and Python. Regular languages, practising the writing of regular expressions.<br \/>\nCoding a simple interpreter for C in Python. Lexical analysis and token recognition. Implementation of a<br \/>\nfinite automaton for a specific context-independent grammar. Parsing mathematical expressions using<br \/>\nappropriate context-independent grammar. Generating an abstract syntax tree. Implementation of simple<br \/>\nelements of the C language: functions, libraries, declarations, if-structure, while-structure, for-structure.<br \/>\nImplementation of semantic analysis. Introduction to the LLVM environment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objectives and outcomes The aim is to teach students about the techniques of conversion from one programming language to another, as well as about the principles of compilers, the tools for their creation, and their &#8230; <a title=\"Compilers\" class=\"read-more\" href=\"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/\" aria-label=\"More on Compilers\">Read more<\/a><\/p>\n <a href=\"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/\" class=\"more-link\" title=\"Read more\">Read more<\/a>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[199],"tags":[],"class_list":["post-13838","post","type-post","status-publish","format-standard","hentry","category-subjects"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Compilers - School of Computing<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Compilers - School of Computing\" \/>\n<meta property=\"og:description\" content=\"Objectives and outcomes The aim is to teach students about the techniques of conversion from one programming language to another, as well as about the principles of compilers, the tools for their creation, and their ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/\" \/>\n<meta property=\"og:site_name\" content=\"School of Computing\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-15T13:09:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-30T20:07:58+00:00\" \/>\n<meta name=\"author\" content=\"RAF Admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"RAF Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/\"},\"author\":{\"name\":\"RAF Admin\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/person\\\/4e2166c781f2802c67414a1578c66a43\"},\"headline\":\"Compilers\",\"datePublished\":\"2014-12-15T13:09:00+00:00\",\"dateModified\":\"2023-04-30T20:07:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/\"},\"wordCount\":262,\"publisher\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#organization\"},\"articleSection\":[\"Subjects\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/\",\"name\":\"Compilers - School of Computing\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#website\"},\"datePublished\":\"2014-12-15T13:09:00+00:00\",\"dateModified\":\"2023-04-30T20:07:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/compilers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Homepage\",\"item\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Subjects\",\"item\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/subjects\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Compilers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/\",\"name\":\"School of Computing\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#organization\",\"name\":\"School of Computing\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/cropped-raf-engleski.png\",\"contentUrl\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/cropped-raf-engleski.png\",\"width\":400,\"height\":66,\"caption\":\"School of Computing\"},\"image\":{\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/#\\\/schema\\\/person\\\/4e2166c781f2802c67414a1578c66a43\",\"name\":\"RAF Admin\",\"sameAs\":[\"https:\\\/\\\/raf.app\"],\"url\":\"https:\\\/\\\/raf.edu.rs\\\/en\\\/author\\\/rafadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Compilers - School of Computing","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/","og_locale":"en_US","og_type":"article","og_title":"Compilers - School of Computing","og_description":"Objectives and outcomes The aim is to teach students about the techniques of conversion from one programming language to another, as well as about the principles of compilers, the tools for their creation, and their ... Read more","og_url":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/","og_site_name":"School of Computing","article_published_time":"2014-12-15T13:09:00+00:00","article_modified_time":"2023-04-30T20:07:58+00:00","author":"RAF Admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"RAF Admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/#article","isPartOf":{"@id":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/"},"author":{"name":"RAF Admin","@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/person\/4e2166c781f2802c67414a1578c66a43"},"headline":"Compilers","datePublished":"2014-12-15T13:09:00+00:00","dateModified":"2023-04-30T20:07:58+00:00","mainEntityOfPage":{"@id":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/"},"wordCount":262,"publisher":{"@id":"https:\/\/raf.edu.rs\/en\/#organization"},"articleSection":["Subjects"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/","url":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/","name":"Compilers - School of Computing","isPartOf":{"@id":"https:\/\/raf.edu.rs\/en\/#website"},"datePublished":"2014-12-15T13:09:00+00:00","dateModified":"2023-04-30T20:07:58+00:00","breadcrumb":{"@id":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/raf.edu.rs\/en\/subjects\/compilers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/raf.edu.rs\/en\/subjects\/compilers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Homepage","item":"https:\/\/raf.edu.rs\/en\/"},{"@type":"ListItem","position":2,"name":"Subjects","item":"https:\/\/raf.edu.rs\/en\/subjects\/"},{"@type":"ListItem","position":3,"name":"Compilers"}]},{"@type":"WebSite","@id":"https:\/\/raf.edu.rs\/en\/#website","url":"https:\/\/raf.edu.rs\/en\/","name":"School of Computing","description":"","publisher":{"@id":"https:\/\/raf.edu.rs\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/raf.edu.rs\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/raf.edu.rs\/en\/#organization","name":"School of Computing","url":"https:\/\/raf.edu.rs\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/logo\/image\/","url":"https:\/\/raf.edu.rs\/en\/wp-content\/uploads\/2023\/02\/cropped-raf-engleski.png","contentUrl":"https:\/\/raf.edu.rs\/en\/wp-content\/uploads\/2023\/02\/cropped-raf-engleski.png","width":400,"height":66,"caption":"School of Computing"},"image":{"@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/raf.edu.rs\/en\/#\/schema\/person\/4e2166c781f2802c67414a1578c66a43","name":"RAF Admin","sameAs":["https:\/\/raf.app"],"url":"https:\/\/raf.edu.rs\/en\/author\/rafadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts\/13838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/comments?post=13838"}],"version-history":[{"count":2,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts\/13838\/revisions"}],"predecessor-version":[{"id":16971,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/posts\/13838\/revisions\/16971"}],"wp:attachment":[{"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/media?parent=13838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/categories?post=13838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/raf.edu.rs\/en\/wp-json\/wp\/v2\/tags?post=13838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}