SlideShare a Scribd company logo
1 of 28
L A B # 5 : S Y M B O L TA B L E , F L E X
COMPILER
ENGINEERING
WHY DO I NEED A SYMBOL TABLE?
• Symbol Table answers the following questions:
1. For a certain declaration of an Identifier name , does it have
multiple declarations in different scopes?
• If YES, keep track of these different cases
2. For a USE of an Identifier name, to which scope does it
correspond? (using the "most closely nested" rule)
3. How can various language logical structures be presented?
• One of the Main Purposes of Symbol Table is: to keep
track of IDENTIFIERS recognized in the input stream.
• All subsequent references to identifiers refer to the
appropriate symbol table index.
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
2
WHY DO I NEED A SYMBOL TABLE?
• So, Symbol Table is a group of linked hash tables that
manages either:
• IDENTIFIERS attributes,
• or convey the structure of a statementexpression that they
reflect.
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
3
BUILDING COMPILER WITH
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
4
Lexical Analysis
(Lex  Flex)
Syntax-Semantic
Analysis
(Yacc Bison)
Assembly
(LLVM)
Linking
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
5
TOKENS ARE NUMERICAL
REPRESENTATIONS OF STRINGS,
AND SIMPLIFY PROCESSING
First: Lexical Analysis with Flex
Reminder:
What is the goal of Lexical Analysis phase?
In other words, why do I use TOKENS?
BUILDING A COMPILER WITH
FLEX(LEX) & BISON(YACC)
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
6
FLEX & BISON INPUT-OUTPUT
INTERACTION
• Bas.y (Parser Input):
• Y.tab.h (Parser Output):
• is a header file that contains, among other things,
• the definitions of the token names NUM, OPA, etc.,
• and the variable yylval that we use to pass the bison code the semantic values of
tokens
• Y.tab.c (Parser Output):
• contains the CC++ code for the parser (which is a function called
yyparse())
• Bas.l (Lexica Analyzer Input):
• needs those definitions in (Y.tab.h) so that the yylex() function it defines for
bison can pass back the information it needs to pass back.
• Lex.yy.c(Lexica Analyzer Output): generated by FLEX that
contains, among other things, the definition of the yylex() function
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
7
FLEX
• Flex is an open-source tool for Fast lexical Analyzer can
be downloaded from Flex Download Webpage
• Flex reads user-specified input files
• If no input file is given, Flex will read its standard file
• Flex INPUT file:
• is a description of a scanner to generate
• The description is Pairs of Regular Expressions and C Code
called RULES
Source: Flex Website
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
8
FLEX
• When the executable runs it analyzes its input for
occurrences of text matching the Regular Expressions
(RegExp) for each rule.
• Whenever it finds a match  it executes the corresponding C
code
• Flex generates a C source file named “lex.yy.c” which
defines the function yylex()
• The file “lex.yy.c” can be compiled and linked to produce
an executable
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
9
BISON(1)
• Bison is a general-purpose parser generator that
converts an annotated context-free grammar into a
deterministic [LR or generalized LR (GLR)] parser.
• Bison, you can use it to develop a wide range of
language parsers.
• Bison is compatible with YACC
• Based on CC++ and works with Java.
(1) Source: Bison Webpage
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
10
1-4/4/12 11
Department of Computer Science -
Compiler Engineering Lab
FLEX TOOL
FIRST : LEXICAL ANALYSIS
BISONYACC & PARSING
• The grammar in the previous diagram (FlexBison
Interaction Model Diagram) is a text file you create with a
text editor
• Yacc will read your grammar and generate C code for a
syntax analyzer or parser
• The syntax analyzer uses grammar rules that allow it to
analyze tokens from the lexical analyzer and create a
syntax tree
• The syntax tree imposes a hierarchical structure on the
tokens
• e.g. operator precedence and associativity are apparent in the
syntax tree
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
12
LEXICAL ANALYSIS: FLEX IN DETAIL
• The flex generated scanner code tries to match
characters from the current input stream to these regular
expressions, and when a match is found, it executes the
associtated action code.
• The variable yytext contains the string (in the C sense,
i.e. '0' terminated char*.) of characters that were
matched.
• When more than one match is possible it breaks ties by
going with the longest match then first listed
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
13
FLEX FILES FORMAT
The general format of Lex source is:
{definitions}
%%
{rules}
%%
{user subroutines}
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
14
FLEX FILES FORMAT
• Any line which is not part of a Lex rule or action which begins
with a blank or tab is copied into the Lex generated program.
(used for Comments)
• source input prior to the first %% delimiter will be external to
any function in the code; if it appears immediately after the
first %%, it appears in an appropriate place for declarations in
the function written by
• Anything included between lines containing only %{ and %} is
copied out as above. The delimiters are discarded. This
format permits entering text like preprocessor statements that
must begin in column 1.
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
15
FLEX FILES FORMAT
• Any line which is not part of a Lex rule or action which begins
with a blank or tab is copied into the Lex generated program.
(used for Comments)
• This means each code-line must start from column one.
• source input prior to the first %% delimiter will be external to
any function in the code; if it appears immediately after the
first %%, it appears in an appropriate place for declarations in
the function written by
• Anything included between lines contain- ing only %{ and %}
is copied out as above. The delimiters are discarded. This
format permits entering text like preprocessor statements that
must begin in column 1.
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
16
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
17
EXAMPLE # 1 : CALCULATOR FLEX FILE
Write a Flex file for a calculator that is able
to recognize the following:
• numbers,
• (+,-,*,/) operators,
• and parantheses
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
18
EXAMPLE # 1 : CALCULATOR (.L)
%{
#include "ex1.tab.hpp"
#include <iostream>
using namespace std;
%}
%option noyywrap
%%
[0-9]+ { yylval.val = atoi(yytext); return NUM; }
[+|-] { yylval.sym = yytext[0]; return OPA; }
[*|/] { yylval.sym = yytext[0]; return OPM; }
"(" { return LP; }
")" { return RP; }
";" { return STOP; }
<<EOF>> { return 0; }
[ tn]+ { } . { cerr << "Unrecognized token!" << endl; exit(1); }
%%
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
19
EXAMPLE # 2 : “BASIC LANGUAGE” FILE
Write a Flex file for ”Basic Language” that is
able to recognize the following:
• Numbers,
• Identifiers,
• Keywords,
• Relation Operations
• Arthimitic operators,
• and Delimiters
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
20
EXAMPLE # 2 : (BAS.L) FILE FOR BASIC
LANGAUGE
%{
#include "y.tab.h”
%}
digit [0-9]
letter [a-zA-Z]
%%
"+" { return PLUS; }
"-" { return MINUS; }
"*" { return TIMES; }
"/" { return SLASH; }
"(" { return LPAREN; }
")" { return RPAREN; }
";" { return SEMICOLON; }
"," { return COMMA; }
"." { return PERIOD; }
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
21
EXAMPLE # 2 : (BAS.L) FILE FOR BASIC
LANGAUGE
":=" { return BECOMES; }
"=" { return EQL; }
"<>" { return NEQ; }
"<" { return LSS; }
">" { return GTR; }
"<=" { return LEQ; }
">=" { return GEQ; }
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
22
EXAMPLE # 2 : (BAS.L) FILE FOR BASIC
LANGAUGE
"begin" { return BEGINSYM; }
"call" { return CALLSYM; }
"const" { return CONSTSYM; }
"do" { return DOSYM; }
"end" { return ENDSYM; }
"if" { return IFSYM; }
"odd" { return ODDSYM; }
"procedure" { return PROCSYM; }
"then" { return THENSYM; }
"var" { return VARSYM; }
"while" { return WHILESYM; }
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
23
EXAMPLE # 2 : (BAS.L) FILE FOR BASIC
LANGAUGE
{letter}({letter}|{digit})*
{ yylval.id = (char *)strdup(yytext);
return IDENT; }
{digit}+
{ yylval.num = atoi(yytext);
return NUMBER; }
[ tnr] /* skip whitespace */
. { printf("Unknown character [%c]n",yytext[0]);
return UNKNOWN; }
%% int yywrap(void) {return 1;}
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
24
INSTALLING FLEX & BISON
• Flex & Bison are Unix-based Tools that can be installed
directly under UnixLinux environment.
• Unser Windows Environment: Flex & Bison can be
installed under Cygwin ( Linux Terminal).
• Cygwin can be downloaded from here.
• Cygwin is a Linux API layer providing substantial Linux
API functionality.
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
25
INSTALLING FLEX & BISON
• Steps to download Cygwin:
1. Click the following link for Setup
2. Click Run  Next  Choose the option “Install from Internet”
 Next  Make sure the correct installation directory then
Next
3. Choose “Direct Connection” then Next
4. Choose any of the available HTTP download sites and click
Next
5. In the “Select Packages” page: search for both “Flex” and
“Bison” packages through the search textbox  then ensure
the “install” option is selected
6. Finish the installation process by clicking Next to the end.
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
26
OVERVIEW OF ANTLR(1)
• ANTLR, ANother Tool for Language Recognition, is a
language tool that provides a framework for constructing
recognizers, interpreters, compilers, and translators from
grammatical descriptions containing actions in a variety
of target languages.
• ANTLR provides excellent support for tree construction,
tree walking, translation, error recovery, and error
reporting
• ANTLR can be downloaded from the following link
ANTLR (.jar) file download link
(1) Source: ANTLR Webpage
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
27
QUESTIONS?
Thank you for listening 
1-4/4/12
Department of Computer Science -
Compiler Engineering Lab
28

More Related Content

What's hot (20)

Unit VI
Unit VI Unit VI
Unit VI
 
Syntax analysis
Syntax analysisSyntax analysis
Syntax analysis
 
Symbol table in compiler Design
Symbol table in compiler DesignSymbol table in compiler Design
Symbol table in compiler Design
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler Construction
 
Symbol Table
Symbol TableSymbol Table
Symbol Table
 
COMPILER DESIGN
COMPILER DESIGNCOMPILER DESIGN
COMPILER DESIGN
 
Loaders
LoadersLoaders
Loaders
 
COMPILER DESIGN OPTIONS
COMPILER DESIGN OPTIONSCOMPILER DESIGN OPTIONS
COMPILER DESIGN OPTIONS
 
Unit 5
Unit 5Unit 5
Unit 5
 
Python Functions
Python   FunctionsPython   Functions
Python Functions
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
3b. LMD & RMD.pdf
3b. LMD & RMD.pdf3b. LMD & RMD.pdf
3b. LMD & RMD.pdf
 
Lexical Analysis
Lexical AnalysisLexical Analysis
Lexical Analysis
 
Types of Statements in Python Programming Language
Types of Statements in Python Programming LanguageTypes of Statements in Python Programming Language
Types of Statements in Python Programming Language
 
Object-oriented concepts
Object-oriented conceptsObject-oriented concepts
Object-oriented concepts
 
ER model to Relational model mapping
ER model to Relational model mappingER model to Relational model mapping
ER model to Relational model mapping
 
File handling in c
File handling in cFile handling in c
File handling in c
 
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
Compiler Design - Ambiguous grammar, LMD & RMD, Infix & Postfix, Implementati...
 
Function arguments In Python
Function arguments In PythonFunction arguments In Python
Function arguments In Python
 
Lexical Analysis - Compiler Design
Lexical Analysis - Compiler DesignLexical Analysis - Compiler Design
Lexical Analysis - Compiler Design
 

Similar to Compiler Engineering Lab#5 : Symbol Table, Flex Tool

Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...
Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...
Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...Prof Chethan Raj C
 
Lex tool manual
Lex tool manualLex tool manual
Lex tool manualSami Said
 
Lex and Yacc ppt
Lex and Yacc pptLex and Yacc ppt
Lex and Yacc pptpssraikar
 
7 compiler lab
7 compiler lab 7 compiler lab
7 compiler lab MashaelQ
 
CS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docxCS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docxfaithxdunce63732
 
Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Wei Sun
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_netNico Ludwig
 
Unix system programming
Unix system programmingUnix system programming
Unix system programmingSyed Mustafa
 
Introduction of flex
Introduction of flexIntroduction of flex
Introduction of flexvip_du
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreEsha Yadav
 
Fundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptxFundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptxVigneshkumar Ponnusamy
 
Lec 04 intro assembly
Lec 04 intro assemblyLec 04 intro assembly
Lec 04 intro assemblyAbdul Khan
 

Similar to Compiler Engineering Lab#5 : Symbol Table, Flex Tool (20)

Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...
Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...
Prof. Chethan Raj C, BE, M.Tech (Ph.D) Dept. of CSE. System Software & Operat...
 
Lex tool manual
Lex tool manualLex tool manual
Lex tool manual
 
Lecture 01 2017
Lecture 01 2017Lecture 01 2017
Lecture 01 2017
 
Lex and Yacc ppt
Lex and Yacc pptLex and Yacc ppt
Lex and Yacc ppt
 
Lex
LexLex
Lex
 
LEX & YACC
LEX & YACCLEX & YACC
LEX & YACC
 
7 compiler lab
7 compiler lab 7 compiler lab
7 compiler lab
 
Flex
FlexFlex
Flex
 
11700220036.pdf
11700220036.pdf11700220036.pdf
11700220036.pdf
 
CS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docxCS 23001 Computer Science II Data Structures & AbstractionPro.docx
CS 23001 Computer Science II Data Structures & AbstractionPro.docx
 
Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02Dotnetintroduce 100324201546-phpapp02
Dotnetintroduce 100324201546-phpapp02
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net
 
Unix system programming
Unix system programmingUnix system programming
Unix system programming
 
Lexical analyzer
Lexical analyzerLexical analyzer
Lexical analyzer
 
Introduction of flex
Introduction of flexIntroduction of flex
Introduction of flex
 
Module4 lex and yacc.ppt
Module4 lex and yacc.pptModule4 lex and yacc.ppt
Module4 lex and yacc.ppt
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya Rathore
 
Fundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptxFundamentals of Data Structures Unit 1.pptx
Fundamentals of Data Structures Unit 1.pptx
 
7986-lect 7.pdf
7986-lect 7.pdf7986-lect 7.pdf
7986-lect 7.pdf
 
Lec 04 intro assembly
Lec 04 intro assemblyLec 04 intro assembly
Lec 04 intro assembly
 

Recently uploaded

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Recently uploaded (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Compiler Engineering Lab#5 : Symbol Table, Flex Tool

  • 1. L A B # 5 : S Y M B O L TA B L E , F L E X COMPILER ENGINEERING
  • 2. WHY DO I NEED A SYMBOL TABLE? • Symbol Table answers the following questions: 1. For a certain declaration of an Identifier name , does it have multiple declarations in different scopes? • If YES, keep track of these different cases 2. For a USE of an Identifier name, to which scope does it correspond? (using the "most closely nested" rule) 3. How can various language logical structures be presented? • One of the Main Purposes of Symbol Table is: to keep track of IDENTIFIERS recognized in the input stream. • All subsequent references to identifiers refer to the appropriate symbol table index. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 2
  • 3. WHY DO I NEED A SYMBOL TABLE? • So, Symbol Table is a group of linked hash tables that manages either: • IDENTIFIERS attributes, • or convey the structure of a statementexpression that they reflect. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 3
  • 4. BUILDING COMPILER WITH 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 4 Lexical Analysis (Lex Flex) Syntax-Semantic Analysis (Yacc Bison) Assembly (LLVM) Linking
  • 5. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 5 TOKENS ARE NUMERICAL REPRESENTATIONS OF STRINGS, AND SIMPLIFY PROCESSING First: Lexical Analysis with Flex Reminder: What is the goal of Lexical Analysis phase? In other words, why do I use TOKENS?
  • 6. BUILDING A COMPILER WITH FLEX(LEX) & BISON(YACC) 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 6
  • 7. FLEX & BISON INPUT-OUTPUT INTERACTION • Bas.y (Parser Input): • Y.tab.h (Parser Output): • is a header file that contains, among other things, • the definitions of the token names NUM, OPA, etc., • and the variable yylval that we use to pass the bison code the semantic values of tokens • Y.tab.c (Parser Output): • contains the CC++ code for the parser (which is a function called yyparse()) • Bas.l (Lexica Analyzer Input): • needs those definitions in (Y.tab.h) so that the yylex() function it defines for bison can pass back the information it needs to pass back. • Lex.yy.c(Lexica Analyzer Output): generated by FLEX that contains, among other things, the definition of the yylex() function 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 7
  • 8. FLEX • Flex is an open-source tool for Fast lexical Analyzer can be downloaded from Flex Download Webpage • Flex reads user-specified input files • If no input file is given, Flex will read its standard file • Flex INPUT file: • is a description of a scanner to generate • The description is Pairs of Regular Expressions and C Code called RULES Source: Flex Website 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 8
  • 9. FLEX • When the executable runs it analyzes its input for occurrences of text matching the Regular Expressions (RegExp) for each rule. • Whenever it finds a match  it executes the corresponding C code • Flex generates a C source file named “lex.yy.c” which defines the function yylex() • The file “lex.yy.c” can be compiled and linked to produce an executable 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 9
  • 10. BISON(1) • Bison is a general-purpose parser generator that converts an annotated context-free grammar into a deterministic [LR or generalized LR (GLR)] parser. • Bison, you can use it to develop a wide range of language parsers. • Bison is compatible with YACC • Based on CC++ and works with Java. (1) Source: Bison Webpage 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 10
  • 11. 1-4/4/12 11 Department of Computer Science - Compiler Engineering Lab FLEX TOOL FIRST : LEXICAL ANALYSIS
  • 12. BISONYACC & PARSING • The grammar in the previous diagram (FlexBison Interaction Model Diagram) is a text file you create with a text editor • Yacc will read your grammar and generate C code for a syntax analyzer or parser • The syntax analyzer uses grammar rules that allow it to analyze tokens from the lexical analyzer and create a syntax tree • The syntax tree imposes a hierarchical structure on the tokens • e.g. operator precedence and associativity are apparent in the syntax tree 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 12
  • 13. LEXICAL ANALYSIS: FLEX IN DETAIL • The flex generated scanner code tries to match characters from the current input stream to these regular expressions, and when a match is found, it executes the associtated action code. • The variable yytext contains the string (in the C sense, i.e. '0' terminated char*.) of characters that were matched. • When more than one match is possible it breaks ties by going with the longest match then first listed 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 13
  • 14. FLEX FILES FORMAT The general format of Lex source is: {definitions} %% {rules} %% {user subroutines} 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 14
  • 15. FLEX FILES FORMAT • Any line which is not part of a Lex rule or action which begins with a blank or tab is copied into the Lex generated program. (used for Comments) • source input prior to the first %% delimiter will be external to any function in the code; if it appears immediately after the first %%, it appears in an appropriate place for declarations in the function written by • Anything included between lines containing only %{ and %} is copied out as above. The delimiters are discarded. This format permits entering text like preprocessor statements that must begin in column 1. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 15
  • 16. FLEX FILES FORMAT • Any line which is not part of a Lex rule or action which begins with a blank or tab is copied into the Lex generated program. (used for Comments) • This means each code-line must start from column one. • source input prior to the first %% delimiter will be external to any function in the code; if it appears immediately after the first %%, it appears in an appropriate place for declarations in the function written by • Anything included between lines contain- ing only %{ and %} is copied out as above. The delimiters are discarded. This format permits entering text like preprocessor statements that must begin in column 1. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 16
  • 17. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 17
  • 18. EXAMPLE # 1 : CALCULATOR FLEX FILE Write a Flex file for a calculator that is able to recognize the following: • numbers, • (+,-,*,/) operators, • and parantheses 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 18
  • 19. EXAMPLE # 1 : CALCULATOR (.L) %{ #include "ex1.tab.hpp" #include <iostream> using namespace std; %} %option noyywrap %% [0-9]+ { yylval.val = atoi(yytext); return NUM; } [+|-] { yylval.sym = yytext[0]; return OPA; } [*|/] { yylval.sym = yytext[0]; return OPM; } "(" { return LP; } ")" { return RP; } ";" { return STOP; } <<EOF>> { return 0; } [ tn]+ { } . { cerr << "Unrecognized token!" << endl; exit(1); } %% 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 19
  • 20. EXAMPLE # 2 : “BASIC LANGUAGE” FILE Write a Flex file for ”Basic Language” that is able to recognize the following: • Numbers, • Identifiers, • Keywords, • Relation Operations • Arthimitic operators, • and Delimiters 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 20
  • 21. EXAMPLE # 2 : (BAS.L) FILE FOR BASIC LANGAUGE %{ #include "y.tab.h” %} digit [0-9] letter [a-zA-Z] %% "+" { return PLUS; } "-" { return MINUS; } "*" { return TIMES; } "/" { return SLASH; } "(" { return LPAREN; } ")" { return RPAREN; } ";" { return SEMICOLON; } "," { return COMMA; } "." { return PERIOD; } 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 21
  • 22. EXAMPLE # 2 : (BAS.L) FILE FOR BASIC LANGAUGE ":=" { return BECOMES; } "=" { return EQL; } "<>" { return NEQ; } "<" { return LSS; } ">" { return GTR; } "<=" { return LEQ; } ">=" { return GEQ; } 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 22
  • 23. EXAMPLE # 2 : (BAS.L) FILE FOR BASIC LANGAUGE "begin" { return BEGINSYM; } "call" { return CALLSYM; } "const" { return CONSTSYM; } "do" { return DOSYM; } "end" { return ENDSYM; } "if" { return IFSYM; } "odd" { return ODDSYM; } "procedure" { return PROCSYM; } "then" { return THENSYM; } "var" { return VARSYM; } "while" { return WHILESYM; } 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 23
  • 24. EXAMPLE # 2 : (BAS.L) FILE FOR BASIC LANGAUGE {letter}({letter}|{digit})* { yylval.id = (char *)strdup(yytext); return IDENT; } {digit}+ { yylval.num = atoi(yytext); return NUMBER; } [ tnr] /* skip whitespace */ . { printf("Unknown character [%c]n",yytext[0]); return UNKNOWN; } %% int yywrap(void) {return 1;} 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 24
  • 25. INSTALLING FLEX & BISON • Flex & Bison are Unix-based Tools that can be installed directly under UnixLinux environment. • Unser Windows Environment: Flex & Bison can be installed under Cygwin ( Linux Terminal). • Cygwin can be downloaded from here. • Cygwin is a Linux API layer providing substantial Linux API functionality. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 25
  • 26. INSTALLING FLEX & BISON • Steps to download Cygwin: 1. Click the following link for Setup 2. Click Run  Next  Choose the option “Install from Internet”  Next  Make sure the correct installation directory then Next 3. Choose “Direct Connection” then Next 4. Choose any of the available HTTP download sites and click Next 5. In the “Select Packages” page: search for both “Flex” and “Bison” packages through the search textbox  then ensure the “install” option is selected 6. Finish the installation process by clicking Next to the end. 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 26
  • 27. OVERVIEW OF ANTLR(1) • ANTLR, ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. • ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting • ANTLR can be downloaded from the following link ANTLR (.jar) file download link (1) Source: ANTLR Webpage 1-4/4/12 Department of Computer Science - Compiler Engineering Lab 27
  • 28. QUESTIONS? Thank you for listening  1-4/4/12 Department of Computer Science - Compiler Engineering Lab 28