Compiler Design Type checking in Compiler Design A compiler performs checks to ensure certain types of errors during programming are detected and reported, type checking will ensure the compiler follows the semantic and syntactic conversions of the source language.
Compiler Design Assembly language: ARM Architecture Assembly language enables programmers to write human readable code that is close to machine language hence providing full control over the tasks the computer performs. In this article we discuss the ARM processor architecture assembly language
Compiler Design Assembly language: X86 Architecture Assembly language enables programmers to write human readable code that is close to machine language hence providing full control over the tasks the computer performs. In this article we discuss the x86 processor architecture assembly language.
Compiler Design Memory management: deallocation (Garbage Collection) In this article we discuss garbage collection, a mechanism that is performed by the garbage collector which reclaims memory that it can prove is not used.
Compiler Design Memory management: allocation Memory management is the process responsible for handing out blocks of memory to a program and reclaiming unused blocks. In this article we discuss the basics of memory allocation, optimizing memory allocation and applications in a compiler.
Compiler Design Lexical analyzer generator (lex) Int this article we discuss the lex, a tool responsible for translating a sequence of regular expressions given as input into a C implementation corresponding to a finite state machine.
Compiler Design Language processing system A combination of per-processors, compilers, assemblers, loader and linker work together to transform high level code in machine code for execution. In this article we discuss the function of each part of this system.
Compiler Design Semantic analysis in Compiler Design During the 3rd phase of compiler design, the semantic analysis phase, the semantic analyzer uses information stored in a syntax tree and symbol table to check source code semantic consistency according to the provided language definition.
Compiler Design Design of a Lexical Analyzer During the first phase of a compiler, a lexical analyzer is used to scan the input and identify tokens. We can either hand code a lexical analyzer or use a lex program to automatically generate one. In this article we discuss how the lexical analyzer is designed to perform its function.
Compiler Design Constant Folding and Constant Propagation in Compiler Design In this article, we discuss two compiler optimizations (Constant Folding and Constant Propagation) which enable the compiler to produce high performance and efficient assembly code.
Compiler Design Syntax Analysis in Compiler Design In this article, we discuss the second phase in compiler design where written code is evaluated for correctness.
Compiler Design Different phases of Compiler In this article, we discuss the different phases of a Complier such as Lexical Analysis, Syntax Analysis, Intermediate Code Generation and others.
Compiler Design Lexical Analysis in Compiler Design In this article, we discuss the first phase in compiler designing where the high level input program is converted into a sequence of tokens. This phase is known as Lexical Analysis in Compiler Design.
Compiler Design Parsing in Compiler Design In this article, we discuss the different types of Parsing done by compilers such as Top-down parsing, Non-recursive predictive parsing and much more.
Data Structures Li Chao Segment Tree In this article, we discuss the Li Chao tree, a segment tree which can be persistent and is faster in practice compared to the convex hull trick.
Data Structures Persistent Trie In this article, we discuss the Trie data structure and how to make it persistent to solve various problems optimally.
Algorithms Delete middle element of Queue In this article, we discuss how to delete the middle element of a queue without using other data structures. We have explained both iterative and recursive approach.
Algorithms Delete middle element of Stack In this article, we discuss an iterative and recursive approach to delete the middle element of a stack.
Algorithms Average Height of Random Binary Search Tree In this post, we discuss the average height of a Random Binary Search Tree (BST) (that is 4.31107 ln(N) - 1.9531 lnln(N) + O(1)) by discussing various lemmas and their proofs. We omit full proofs and discuss the essential key points for easier understanding.
Algorithms Delaunay Triangulation In this article, we discuss Delaunay Triangulation, its relation to Voronoi diagrams and algorithms to compute Delaunay Triangulation. This is an important topic in Computational Geometry.
Algorithms Create a Heap from Array of N integers In this post, we discuss the heap data structure and how to create a min and max heap from N given integers in form of an Array. Similarly, inserting elements one by one take O(N logN) time but the optimal approach takes O(N) time.
Algorithms Voronoi Diagram In this article, we discuss the voronoi diagram in depth and how to use Fortunes Sweep Line algorithm to compute it. This is an important topic in Computational Geometry.
Algorithms Oriented area of a triangle In this article, we discuss how to find the area of an oriented Polygon using the shoelace algorithm and as an example we find the area of an oriented triangle.
Algorithms Check if given point is inside a convex polygon In this post, we discuss how to check if a given point is inside a convex polygon using the Graham scan algorithm and list application areas for the solution.
Algorithms Pick’s Theorem in Computational Geometry In this post, we discuss Pick's theorem, its proof and example use cases where its application would be efficient to solve a problem. Using Pick's Theorem, we can compute the area of simple polygons.