CUP. Lecture 18 CUP User s Manual (online) Robb T. Koether. Hampden-Sydney College. Fri, Feb 27, 2015
|
|
- Brenda Townsend
- 6 years ago
- Views:
Transcription
1 CUP Lecture 18 CUP User s Manual (online) Robb T. Koether Hampden-Sydney College Fri, Feb 27, 2015 Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
2 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
3 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
4 The CUP Parser Generator The CUP parser generator creates Java source code for an LR parser that uses the LALR algorithm. CUP = Common Useful Parsers. LALR = Look-Ahead LR. LALR is similar to LR(1), whose tables are much larger than the LR(0) tables. LALR tables are compact, the same size as the LR(0) tables. A LALR grammar is an LR(1) grammar whose LR(1) tables may be compressed without creating conflicts. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
5 The CUP Parser Generator CUP reads a description of the grammar from a.cup file. From that description, it produces two files: parser.java and sym.java. The file parser.java contains Java source code for the parser. The sym class is a class that defines the terminals of the grammar as integer constants, e.g., sym.num. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
6 The CUP Parser Generator Using the -parser command-line argument, we can rename the parser class. Using the -symbols command-line argument, we can rename the sym class. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
7 CUP Usage Typically invocations of CUP: $ java java_cup.main < grammar.cup $ java java_cup.main -parser MyParser < grammar.cup $ java java_cup.main -symbols Token < grammar.cup Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
8 CUP and JFlex CUP may be used with or without JFlex. In Assignment 7, we will see exactly how to make the two programs work together. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
9 CUP and JFlex CUP may be used with or without JFlex. In Assignment 7, we will see exactly how to make the two programs work together. It is, by design, easy. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
10 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
11 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
12 CUP Input Parser Code parser code {: public static void main(string args[]) throws IOException { Reader r = InputStreamReader(System.in); parser myparser = new parser(new Yylex(r)); } :} The CUP file begins with optional parser code that the programmer may add to the parser class. Type the directive parser code, and then include the code within the delimiters {: and :}. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
13 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
14 CUP Terminals Terminals terminal PLUS, TIMES, LPAREN, RPAREN, ASSIGN, SEMI; terminal Integer NUM; terminal String ID; Type terminal, followed by a list of symbolic names for the terminals (e.g., ID, NUM, PLUS). These are used to create the sym class. JFlex will use these for its tokens. Terminals may have an associated data type. For example, ID may have the type String. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
15 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
16 CUP Nonterminals Nonterminals non terminal stmt; non terminal Integer expr; List the nonterminals of the grammar. Type non terminal, followed by a list of symbolic names for the nonterminals (e.g., stmt, expr). Nonterminals may have an associated data type. For example, expr may have the type Integer. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
17 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
18 CUP Precedence Rules Precedence Rules precedence right ASSIGN; precedence left PLUS; precedence left TIMES; For each precedence rule, Type precedence, State the associativity (left, right, or nonassoc), Write the names of the terminals that represent the operators at that precedence level. The precedence rules are listed from lowest to highest precedence. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
19 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
20 CUP Productions Productions stmt ::= id:i ASSIGN expr:e SEMI {: System.out.println(i + " = " + e); :}; expr ::= expr:e1 PLUS expr:e2 {: RESULT = e1 + e2; :}; The format of a production is head ::= body {: action :}; where head is a nonterminal. body is a string of grammar symbols. action is zero or more Java statements. If there is more than one production for a nonterminal, they are separated by. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
21 The Start Symbol The Start Symbol start with prog; The start symbol is assumed to be the nonterminal on the left side of the first production. Otherwise, specify it using the start with directive. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
22 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
23 The Action and Goto Tables CUP produces the action and goto tables. We can use the command-line arguments -dump_grammar -dump_tables to see the numbered grammar symbols and productions and the action and goto tables. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
24 Example (The Grammar) Let the grammar be E + ( E, E) * ( E, E) num Let the semantic actions be + ( E, E) Return the sum of the expressions * ( E, E) Return the product of the expressions num Return the value of the token Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
25 Grammar Example (Grammar) ===== Terminals ===== [0]EOF [1]error [2]PLUS [3]TIMES [4]LPAREN [5]RPAREN [6]COMMA [7]NUM ===== Non terminals ===== [0]stmt [1]expr ===== Productions ===== [0] stmt ::= expr [1] $START ::= stmt EOF [2] expr ::= PLUS LPAREN expr COMMA expr RPAREN [3] expr ::= TIMES LPAREN expr COMMA expr RPAREN [4] expr ::= NUM Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
26 Action Table Example (Action Table) ACTION_TABLE From state #0 [term 2:SHIFT(to state 2)] [term 3:SHIFT(to state 5)] [term 7:SHIFT(to state 1)] From state #1 [term 0:REDUCE(with prod 4)] [term 5:REDUCE(with prod 4)] [term 6:REDUCE(with prod 4)] From state #2 [term 4:SHIFT(to state 12)] From state #3 [term 0:SHIFT(to state 11)] From state #4 [term 0:REDUCE(with prod 0)] From state #5 [term 4:SHIFT(to state 6)] Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
27 Action Table Example (Action Table) From state #6 [term 2:SHIFT(to state 2)] [term 3:SHIFT(to state 5)] [term 7:SHIFT(to state 1)] From state #7 [term 6:SHIFT(to state 8)] From state #8 [term 2:SHIFT(to state 2)] [term 3:SHIFT(to state 5)] [term 7:SHIFT(to state 1)] From state #9 [term 5:SHIFT(to state 10)] From state #10 [term 0:REDUCE(with prod 3)] [term 5:REDUCE(with prod 3)] [term 6:REDUCE(with prod 3)] From state #11 [term 0:REDUCE(with prod 1)] Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
28 Action Table Example (Action Table) From state #12 [term 2:SHIFT(to state 2)] [term 3:SHIFT(to state 5)] [term 7:SHIFT(to state 1)] From state #13 [term 6:SHIFT(to state 14)] From state #14 [term 2:SHIFT(to state 2)] [term 3:SHIFT(to state 5)] [term 7:SHIFT(to state 1)] From state #15 [term 5:SHIFT(to state 16)] From state #16 [term 0:REDUCE(with prod 2)] [term 5:REDUCE(with prod 2)] [term 6:REDUCE(with prod 2)] Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
29 Goto Table Example (Goto Table) REDUCE_TABLE From state #0 [non term 0->state 3] [non term 1->state 4] From state #1 From state #2 From state #3 From state #4 From state #5 From state #6 [non term 1->state 7] From state #7 From state #8 [non term 1->state 9] Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
30 Goto Table Example (Goto Table) From state #9 From state #10 From state #11 From state #12 [non term 1->state 13] From state #13 From state #14 [non term 1->state 15] From state #15 From state # Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
31 Outline 1 The CUP Parser Generator 2 The CUP File Parser Code Terminals Nonterminals Precedence and Associativity Rules Productions 3 The Action and Goto Tables 4 Assignment Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
32 Assignment Assignment Let the grammar be E& E E + E E * num Create a JFlex file and a CUP file that will parse this grammar. Let the actions be to display the productions that were matched and to compute the value of the expression as a postfix expression. Robb T. Koether (Hampden-Sydney College) CUP Fri, Feb 27, / 31
LR Parsing - Conflicts
LR Parsing - Conflicts Lecture 15 Sections 4.5, 4.6 Robb T. Koether Hampden-Sydney College Fri, Feb 20, 2015 Robb T. Koether (Hampden-Sydney College) LR Parsing - Conflicts Fri, Feb 20, 2015 1 / 15 1 Shift/Reduce
More informationRecursive Descent Parsers
Recursive Descent Parsers Lecture 7 Robb T. Koether Hampden-Sydney College Wed, Jan 28, 2015 Robb T. Koether (Hampden-Sydney College) Recursive Descent Parsers Wed, Jan 28, 2015 1 / 18 1 Parsing 2 LL Parsers
More informationIntroduction to Compiler Design
Introduction to Compiler Design Lecture 1 Chapters 1 and 2 Robb T. Koether Hampden-Sydney College Wed, Jan 14, 2015 Robb T. Koether (Hampden-Sydney College) Introduction to Compiler Design Wed, Jan 14,
More informationCompilers and Language Processing Tools
Compilers and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern c Prof. Dr. Arnd Poetzsch-Heffter 1 Parser Generators c Prof. Dr. Arnd
More informationLR Parsing - The Items
LR Parsing - The Items Lecture 10 Sections 4.5, 4.7 Robb T. Koether Hampden-Sydney College Fri, Feb 13, 2015 Robb T. Koether (Hampden-Sydney College) LR Parsing - The Items Fri, Feb 13, 2015 1 / 31 1 LR
More informationLast Time. What do we want? When do we want it? An AST. Now!
Java CUP 1 Last Time What do we want? An AST When do we want it? Now! 2 This Time A little review of ASTs The philosophy and use of a Parser Generator 3 Translating Lists CFG IdList -> id IdList comma
More informationFall Compiler Principles Lecture 5: Parsing part 4. Roman Manevich Ben-Gurion University
Fall 2014-2015 Compiler Principles Lecture 5: Parsing part 4 Roman Manevich Ben-Gurion University Tentative syllabus Front End Intermediate Representation Optimizations Code Generation Scanning Lowering
More informationStack Applications. Lecture 27 Sections Robb T. Koether. Hampden-Sydney College. Wed, Mar 29, 2017
Stack Applications Lecture 27 Sections 18.7-18.8 Robb T. Koether Hampden-Sydney College Wed, Mar 29, 2017 Robb T. Koether Hampden-Sydney College) Stack Applications Wed, Mar 29, 2017 1 / 27 1 Function
More informationFall Compiler Principles Lecture 4: Parsing part 3. Roman Manevich Ben-Gurion University of the Negev
Fall 2016-2017 Compiler Principles Lecture 4: Parsing part 3 Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation Scanning
More informationMinimal Spanning Trees
Minimal Spanning Trees Lecture 33 Sections 7.1-7.3 Robb T. Koether Hampden-Sydney College Wed, Apr 11, 20 Robb T. Koether (Hampden-Sydney College) Minimal Spanning Trees Wed, Apr 11, 20 1 / 17 1 Networks
More informationJFlex. Lecture 16 Section 3.5, JFlex Manual. Robb T. Koether. Hampden-Sydney College. Mon, Feb 23, 2015
JFlex Lecture 16 Section 3.5, JFlex Manual Robb T. Koether Hampden-Sydney College Mon, Feb 23, 2015 Robb T. Koether (Hampden-Sydney College) JFlex Mon, Feb 23, 2015 1 / 30 1 Introduction 2 JFlex User Code
More informationAbstract Syntax Trees Synthetic and Inherited Attributes
Abstract Syntax Trees Synthetic and Inherited Attributes Lecture 22 Sections 5.1-5.2 Robb T. Koether Hampden-Sydney College Mon, Mar 16, 2015 Robb T. Koether (Hampden-Sydney College)Abstract Syntax TreesSynthetic
More informationOperators. Lecture 12 Section Robb T. Koether. Hampden-Sydney College. Fri, Feb 9, 2018
Operators Lecture 12 Section 14.5 Robb T. Koether Hampden-Sydney College Fri, Feb 9, 2018 Robb T. Koether (Hampden-Sydney College) Operators Fri, Feb 9, 2018 1 / 21 Outline 1 Operators as Functions 2 Operator
More informationRecursive Sequences. Lecture 24 Section 5.6. Robb T. Koether. Hampden-Sydney College. Wed, Feb 27, 2013
Recursive Sequences Lecture 24 Section 5.6 Robb T. Koether Hampden-Sydney College Wed, Feb 27, 2013 Robb T. Koether (Hampden-Sydney College) Recursive Sequences Wed, Feb 27, 2013 1 / 21 1 Recursive Sequences
More informationRecursive Sequences. Lecture 24 Section 5.6. Robb T. Koether. Hampden-Sydney College. Wed, Feb 26, 2014
Recursive Sequences Lecture 24 Section 5.6 Robb T. Koether Hampden-Sydney College Wed, Feb 26, 2014 Robb T. Koether (Hampden-Sydney College) Recursive Sequences Wed, Feb 26, 2014 1 / 26 1 Recursive Sequences
More informationJavaCUP. There are also many parser generators written in Java
JavaCUP JavaCUP (Construct Useful Parser) is a parser generator Produce a parser written in java, itself is also written in Java; There are many parser generators. YACC (Yet Another Compiler-Compiler)
More informationThe Critical-Path Algorithm
The Critical-Path Algorithm Lecture 32 Sections 8.3-8.4 Robb T. Koether Hampden-Sydney College Wed, Nov 19, 2014 Robb T. Koether (Hampden-Sydney College) The Critical-Path Algorithm Wed, Nov 19, 2014 1
More informationBuilding the Abstract Syntax Trees
Building the Abstract Syntax Trees Lecture 23 Section 5.3 Robb T. Koether Hampden-Sydney College Wed, Mar 18, 2015 Robb T. Koether (Hampden-Sydney College) Building the Abstract Syntax Trees Wed, Mar 18,
More informationJFlex Regular Expressions
JFlex Regular Expressions Lecture 17 Section 3.5, JFlex Manual Robb T. Koether Hampden-Sydney College Wed, Feb 25, 2015 Robb T. Koether (Hampden-Sydney College) JFlex Regular Expressions Wed, Feb 25, 2015
More informationSolving Recursive Sequences by Iteration
Solving Recursive Sequences by Iteration Lecture 25 Section 5.7 Robb T. Koether Hampden-Sydney College Thu, Feb 28, 2013 Robb T. Koether (Hampden-Sydney College) Solving Recursive Sequences by Iteration
More informationThe Traveling Salesman Problem Brute Force Method
The Traveling Salesman Problem Brute Force Method Lecture 30 Sections 6.1, 6.3 Robb T. Koether Hampden-Sydney College Fri, Nov 3, 2017 Robb T. Koether (Hampden-Sydney College)The Traveling Salesman Problem
More informationProperties of Regular Expressions and Finite Automata
Properties of Regular Expressions and Finite Automata Some token patterns can t be defined as regular expressions or finite automata. Consider the set of balanced brackets of the form [[[ ]]]. This set
More informationReview main idea syntax-directed evaluation and translation. Recall syntax-directed interpretation in recursive descent parsers
Plan for Today Review main idea syntax-directed evaluation and translation Recall syntax-directed interpretation in recursive descent parsers Syntax-directed evaluation and translation in shift-reduce
More informationwhile Loops Lecture 13 Sections Robb T. Koether Wed, Sep 26, 2018 Hampden-Sydney College
while Loops Lecture 13 Sections 5.8-5.9 Robb T. Koether Hampden-Sydney College Wed, Sep 26, 2018 Robb T. Koether (Hampden-Sydney College) while Loops Wed, Sep 26, 2018 1 / 25 1 while Loops 2 Input Loops
More informationScope and Parameter Passing
Scope and Parameter Passing Lecture 17 Sections 6.5, 6.10, 6.13 Robb T. Koether Hampden-Sydney College Fri, Oct 5, 2018 Robb T. Koether (Hampden-Sydney College) Scope and Parameter Passing Fri, Oct 5,
More informationScheduling and Digraphs
Scheduling and Digraphs Lecture 35 Sections 8.1, 8.2 Robb T. Koether Hampden-Sydney College Mon, Nov 21, 2016 Robb T. Koether (Hampden-Sydney College) Scheduling and Digraphs Mon, Nov 21, 2016 1 / 25 1
More informationStacks and their Applications
Stacks and their Applications Lecture 23 Sections 18.1-18.2 Robb T. Koether Hampden-Sydney College Fri, Mar 16, 2018 Robb T. Koether Hampden-Sydney College) Stacks and their Applications Fri, Mar 16, 2018
More informationSimple LR (SLR) LR(0) Drawbacks LR(1) SLR Parse. LR(1) Start State and Reduce. LR(1) Items 10/3/2012
LR(0) Drawbacks Consider the unambiguous augmented grammar: 0.) S E $ 1.) E T + E 2.) E T 3.) T x If we build the LR(0) DFA table, we find that there is a shift-reduce conflict. This arises because the
More informationPointers. Lecture 2 Sections Robb T. Koether. Hampden-Sydney College. Fri, Jan 18, 2013
Pointers Lecture 2 Sections 10.3-10.8 Robb T. Koether Hampden-Sydney College Fri, Jan 18, 2013 Robb T. Koether (Hampden-Sydney College) Pointers Fri, Jan 18, 2013 1 / 35 1 Introduction 2 Pointer Arithmetic
More informationBoolean Expressions. Lecture 31 Sections 6.6, 6.7. Robb T. Koether. Hampden-Sydney College. Wed, Apr 8, 2015
Boolean Expressions Lecture 31 Sections 6.6, 6.7 Robb T. Koether Hampden-Sydney College Wed, Apr 8, 2015 Robb T. Koether (Hampden-Sydney College) Boolean Expressions Wed, Apr 8, 2015 1 / 22 1 Relational
More informationThe Traveling Salesman Problem Nearest-Neighbor Algorithm
The Traveling Salesman Problem Nearest-Neighbor Algorithm Lecture 31 Sections 6.4 Robb T. Koether Hampden-Sydney College Fri, Apr 6, 2018 Robb T. Koether (Hampden-Sydney College)The Traveling Salesman
More informationSyntax Analysis The Parser Generator (BYacc/J)
Syntax Analysis The Parser Generator (BYacc/J) CMPSC 470 Lecture 09-2 Topics: Yacc, BYacc/J A. Yacc Yacc is a computer program that generate LALR parser. Yacc stands for Yet Another Compiler-Compiler.
More informationThe Class Construct Part 1
The Class Construct Part 1 Lecture 23 Sections 7.5-7.6 Robb T. Koether Hampden-Sydney College Fri, Oct 26, 2018 Robb T. Koether (Hampden-Sydney College) The Class Construct Part 1 Fri, Oct 26, 2018 1 /
More informationStack Applications. Lecture 25 Sections Robb T. Koether. Hampden-Sydney College. Mon, Mar 30, 2015
Stack Applications Lecture 25 Sections 18.7-18.8 Robb T. Koether Hampden-Sydney College Mon, Mar 30, 2015 Robb T. Koether Hampden-Sydney College) Stack Applications Mon, Mar 30, 2015 1 / 34 1 The Triangle
More informationMagnification and Minification
Magnification and Minification Lecture 30 Robb T. Koether Hampden-Sydney College Fri, Nov 6, 2015 Robb T. Koether (Hampden-Sydney College) Magnification and Minification Fri, Nov 6, 2015 1 / 17 Outline
More informationOperator Precedence a+b*c b*c E + T T * P ( E )
Operator Precedence Most programming languages have operator precedence rules that state the order in which operators are applied (in the absence of explicit parentheses). Thus in C and Java and CSX, a+b*c
More informationRotations and Translations
Rotations and Translations Lecture 33 Sections 11.3-11.4 Robb T. Koether Hampden-Sydney College Wed, Nov 20, 2013 Robb T. Koether (Hampden-Sydney College) Rotations and Translations Wed, Nov 20, 2013 1
More informationFriends and Unary Operators
Friends and Unary Operators Lecture 11 Sections 11.3, 11.6 Robb T. Koether Hampden-Sydney College Fri, Feb 13, 2015 Robb T. Koether (Hampden-Sydney College) Friends and Unary Operators Fri, Feb 13, 2015
More informationBasic PHP Lecture 17
Basic PHP Lecture 17 Robb T. Koether Hampden-Sydney College Fri, Feb 24, 2012 Robb T. Koether (Hampden-Sydney College) Basic PHPLecture 17 Fri, Feb 24, 2012 1 / 30 1 PHP 2 Basic PHP 3 The Extended echo
More informationRecursive Linked Lists
Recursive Linked Lists Lecture 28 Sections 14.1-14.5, 14.7 Robb T. Koether Hampden-Sydney College Fri, Mar 31, 2017 Robb T. Koether (Hampden-Sydney College) Recursive Linked Lists Fri, Mar 31, 2017 1 /
More informationThe Graphics Pipeline
The Graphics Pipeline Lecture 2 Robb T. Koether Hampden-Sydney College Fri, Aug 28, 2015 Robb T. Koether (Hampden-Sydney College) The Graphics Pipeline Fri, Aug 28, 2015 1 / 19 Outline 1 Vertices 2 The
More informationScope and Parameter Passing
Scope and Parameter Passing Lecture 16 Sections 6.5, 6.10, 6.13 Robb T. Koether Hampden-Sydney College Mon, Oct 7, 2013 Robb T. Koether (Hampden-Sydney College) Scope and Parameter Passing Mon, Oct 7,
More informationDefining syntax using CFGs
Defining syntax using CFGs Roadmap Last time Defined context-free grammar This time CFGs for specifying a language s syntax Language membership List grammars Resolving ambiguity CFG Review G = (N,Σ,P,S)
More informationCompilation 2013 Parser Generators, Conflict Management, and ML-Yacc
Compilation 2013 Parser Generators, Conflict Management, and ML-Yacc Erik Ernst Aarhus University Parser generators, ML-Yacc LR parsers are tedious to write, but can be generated, e.g., by ML-Yacc Input:
More informationA Simple Syntax-Directed Translator
Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called
More informationXPath Lecture 34. Robb T. Koether. Hampden-Sydney College. Wed, Apr 11, 2012
XPath Lecture 34 Robb T. Koether Hampden-Sydney College Wed, Apr 11, 2012 Robb T. Koether (Hampden-Sydney College) XPathLecture 34 Wed, Apr 11, 2012 1 / 20 1 XPath Functions 2 Predicates 3 Axes Robb T.
More informationCSE 401 Midterm Exam Sample Solution 11/4/11
Question 1. (12 points, 2 each) The front end of a compiler consists of three parts: scanner, parser, and (static) semantics. Collectively these need to analyze the input program and decide if it is correctly
More informationEDAN65: Compilers, Lecture 06 A LR parsing. Görel Hedin Revised:
EDAN65: Compilers, Lecture 06 A LR parsing Görel Hedin Revised: 2017-09-11 This lecture Regular expressions Context-free grammar Attribute grammar Lexical analyzer (scanner) Syntactic analyzer (parser)
More informationName EID. (calc (parse '{+ {with {x {+ 5 5}} {with {y {- x 3}} {+ y y} } } z } ) )
CS 345 Spring 2010 Midterm Exam Name EID 1. [4 Points] Circle the binding instances in the following expression: (calc (parse '+ with x + 5 5 with y - x 3 + y y z ) ) 2. [7 Points] Using the following
More informationThe CYK Parsing Algorithm
The CYK Parsing Algorithm Lecture 19 Section 6.3 Robb T. Koether Hampden-Sydney College Fri, Oct 7, 2016 Robb T. Koether (Hampden-Sydney College) The CYK Parsing Algorithm Fri, Oct 7, 2016 1 / 21 1 The
More informationJavaCC Parser. The Compilation Task. Automated? JavaCC Parser
JavaCC Parser The Compilation Task Input character stream Lexer stream Parser Abstract Syntax Tree Analyser Annotated AST Code Generator Code CC&P 2003 1 CC&P 2003 2 Automated? JavaCC Parser The initial
More informationThe Decreasing-Time Algorithm
The Decreasing-Time Algorithm Lecture 36 Sections 8.4 Robb T. Koether Hampden-Sydney College Wed, Apr 18, 2018 Robb T. Koether (Hampden-Sydney College) The Decreasing-Time Algorithm Wed, Apr 18, 2018 1
More informationThe Pairwise-Comparison Method
The Pairwise-Comparison Method Lecture 10 Section 1.5 Robb T. Koether Hampden-Sydney College Mon, Sep 11, 2017 Robb T. Koether (Hampden-Sydney College) The Pairwise-Comparison Method Mon, Sep 11, 2017
More informationCSEP 501 Compilers. Languages, Automata, Regular Expressions & Scanners Hal Perkins Winter /8/ Hal Perkins & UW CSE B-1
CSEP 501 Compilers Languages, Automata, Regular Expressions & Scanners Hal Perkins Winter 2008 1/8/2008 2002-08 Hal Perkins & UW CSE B-1 Agenda Basic concepts of formal grammars (review) Regular expressions
More informationLecture 14 Sections Mon, Mar 2, 2009
Lecture 14 Sections 5.1-5.4 Hampden-Sydney College Mon, Mar 2, 2009 Outline 1 2 3 4 5 Parse A parse tree shows the grammatical structure of a statement. It includes all of the grammar symbols (terminals
More informationFor example, we might have productions such as:
1. Error Recovery This is an extract from http://www.cs.pr inceton.edu/ appel/moder n/java/cup/manual.html#errors A impor tant aspect of building parsers with CUP is support for syntactic error recovery.
More informationAction Table for CSX-Lite. LALR Parser Driver. Example of LALR(1) Parsing. GoTo Table for CSX-Lite
LALR r Driver Action Table for CSX-Lite Given the GoTo and parser action tables, a Shift/Reduce (LALR) parser is fairly simple: { S 5 9 5 9 void LALRDriver(){ Push(S ); } R S R R R R5 if S S R S R5 while(true){
More informationProgramming Languages
Programming Languages Lecture 3 Robb T. Koether Hampden-Sydney College Fri, Aug 31, 2018 Robb T. Koether (Hampden-Sydney College) Programming Languages Fri, Aug 31, 2018 1 / 23 1 Programming Languages
More informationThe Plurality-with-Elimination Method
The Plurality-with-Elimination Method Lecture 9 Section 1.4 Robb T. Koether Hampden-Sydney College Fri, Sep 8, 2017 Robb T. Koether (Hampden-Sydney College) The Plurality-with-Elimination Method Fri, Sep
More informationFunction Definition Syntax Tree
Function Definition Syntax Tree Lecture 34 Section 6.9 Robb T. Koether Hampden-Sydney College Wed, Apr 15, 2015 Robb T. Koether (Hampden-Sydney College) Function Definition Syntax Tree Wed, Apr 15, 2015
More informationConfiguration Sets for CSX- Lite. Parser Action Table
Configuration Sets for CSX- Lite State s 6 s 7 Cofiguration Set Prog { Stmts } Eof Stmts Stmt Stmts State s s Cofiguration Set Prog { Stmts } Eof Prog { Stmts } Eof Stmts Stmt Stmts Stmts λ Stmt if ( Expr
More informationLecture 12: Parser-Generating Tools
Lecture 12: Parser-Generating Tools Dr Kieran T. Herley Department of Computer Science University College Cork 2017-2018 KH (31/10/17) Lecture 12: Parser-Generating Tools 2017-2018 1 / 27 Summary Overview
More informationAgenda. Previously. Tentative syllabus. Fall Compiler Principles Lecture 5: Parsing part 4 12/2/2015. Roman Manevich Ben-Gurion University
Fall 2015-2016 Compiler Principles ecture 5: Parsing part 4 Tentative syllabus Front End Intermediate epresentation Optimizations Code Generation Scanning Operational Semantics Dataflow Analysis egister
More informationSampling Distribution Examples Sections 15.4, 15.5
Sampling Distribution Examples Sections 15.4, 15.5 Lecture 27 Robb T. Koether Hampden-Sydney College Wed, Mar 2, 2016 Robb T. Koether (Hampden-Sydney College)Sampling Distribution ExamplesSections 15.4,
More informationCSE 401 Midterm Exam 11/5/10
Name There are 5 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed books, closed notes, closed
More informationBottom-Up Syntax Anaysis
Implementation of Parsers Bottom-Up Syntax Anaysis Educational Objectives: General Principles of LR(k) Analysis Resolving Conflicts in Parser Generation Connection between CFGs and push-down automata Ina
More informationPointer Arithmetic. Lecture 4 Chapter 10. Robb T. Koether. Hampden-Sydney College. Wed, Jan 25, 2017
Pointer Arithmetic Lecture 4 Chapter 10 Robb T. Koether Hampden-Sydney College Wed, Jan 25, 2017 Robb T. Koether (Hampden-Sydney College) Pointer Arithmetic Wed, Jan 25, 2017 1 / 36 1 Pointer Arithmetic
More informationLinked Lists. Lecture 16 Sections Robb T. Koether. Hampden-Sydney College. Wed, Feb 22, 2017
Linked Lists Lecture 16 Sections 17.1-17.3 Robb T. Koether Hampden-Sydney College Wed, Feb 22, 2017 Robb T. Koether (Hampden-Sydney College) Linked Lists Wed, Feb 22, 2017 1 / 24 1 Linked Lists 2 The LinkedListNode
More informationDownloaded from Page 1. LR Parsing
Downloaded from http://himadri.cmsdu.org Page 1 LR Parsing We first understand Context Free Grammars. Consider the input string: x+2*y When scanned by a scanner, it produces the following stream of tokens:
More informationUsing an LALR(1) Parser Generator
Using an LALR(1) Parser Generator Yacc is an LALR(1) parser generator Developed by S.C. Johnson and others at AT&T Bell Labs Yacc is an acronym for Yet another compiler compiler Yacc generates an integrated
More informationRegular Expressions. Agenda for Today. Grammar for a Tiny Language. Programming Language Specifications
Agenda for Today Regular Expressions CSE 413, Autumn 2005 Programming Languages Basic concepts of formal grammars Regular expressions Lexical specification of programming languages Using finite automata
More informationCOMP-421 Compiler Design. Presented by Dr Ioanna Dionysiou
COMP-421 Compiler Design Presented by Dr Ioanna Dionysiou Administrative! Any questions about the syllabus?! Course Material available at www.cs.unic.ac.cy/ioanna! Next time reading assignment [ALSU07]
More informationPointers. Lecture 2 Sections Robb T. Koether. Hampden-Sydney College. Mon, Jan 20, 2014
Pointers Lecture 2 Sections 10.3-10.8 Robb T. Koether Hampden-Sydney College Mon, Jan 20, 2014 Robb T. Koether (Hampden-Sydney College) Pointers Mon, Jan 20, 2014 1 / 35 1 Endianness 2 Pointer Arithmetic
More informationImplementing Linked Lists
Implementing Linked Lists Lecture 16 Sections 17.1-17.3 Robb T. Koether Hampden-Sydney College Wed, Feb 27, 2013 Robb T. Koether (Hampden-Sydney College) Implementing Linked Lists Wed, Feb 27, 2013 1 /
More informationRegular Expressions. Lecture 10 Sections Robb T. Koether. Hampden-Sydney College. Wed, Sep 14, 2016
Regular Expressions Lecture 10 Sections 3.1-3.2 Robb T. Koether Hampden-Sydney College Wed, Sep 14, 2016 Robb T. Koether (Hampden-Sydney College) Regular Expressions Wed, Sep 14, 2016 1 / 23 Outline 1
More informationList Iterator Implementation
List Iterator Implementation Lecture 28 Section 14.6 Robb T. Koether Hampden-Sydney College Fri, Apr 10, 2015 Robb T. Koether (Hampden-Sydney College) List Iterator Implementation Fri, Apr 10, 2015 1 /
More informationArray Lists. Lecture 15. Robb T. Koether. Hampden-Sydney College. Fri, Feb 16, 2018
Array Lists Lecture 15 Robb T. Koether Hampden-Sydney College Fri, Feb 16, 2018 Robb T. Koether (Hampden-Sydney College) Array Lists Fri, Feb 16, 2018 1 / 21 1 Inlining Functions 2 List Implementations
More informationTable-Driven Top-Down Parsers
Table-Driven Top-Down Parsers Recursive descent parsers have many attractive features. They are actual pieces of code that can be read by programmers and extended. This makes it fairly easy to understand
More informationLECTURE 11. Semantic Analysis and Yacc
LECTURE 11 Semantic Analysis and Yacc REVIEW OF LAST LECTURE In the last lecture, we introduced the basic idea behind semantic analysis. Instead of merely specifying valid structures with a context-free
More informationLexical and Syntax Analysis
Lexical and Syntax Analysis (of Programming Languages) Bison, a Parser Generator Lexical and Syntax Analysis (of Programming Languages) Bison, a Parser Generator Bison: a parser generator Bison Specification
More informationA clarification on terminology: Recognizer: accepts or rejects strings in a language. Parser: recognizes and generates parse trees (imminent topic)
A clarification on terminology: Recognizer: accepts or rejects strings in a language Parser: recognizes and generates parse trees (imminent topic) Assignment 3: building a recognizer for the Lake expression
More informationThe Graphics Pipeline
The Graphics Pipeline Lecture 2 Robb T. Koether Hampden-Sydney College Wed, Aug 23, 2017 Robb T. Koether (Hampden-Sydney College) The Graphics Pipeline Wed, Aug 23, 2017 1 / 19 Outline 1 Vertices 2 The
More informationBoxplots. Lecture 17 Section Robb T. Koether. Hampden-Sydney College. Wed, Feb 10, 2010
Boxplots Lecture 17 Section 5.3.3 Robb T. Koether Hampden-Sydney College Wed, Feb 10, 2010 Robb T. Koether (Hampden-Sydney College) Boxplots Wed, Feb 10, 2010 1 / 34 Outline 1 Boxplots TI-83 Boxplots 2
More informationCSE 431S Final Review. Washington University Spring 2013
CSE 431S Final Review Washington University Spring 2013 What You Should Know The six stages of a compiler and what each stage does. The input to and output of each compilation stage (especially the back-end).
More information(01JEUHT) Formal Languages and Compilers
POLIECNICO DI ORINO (JEUH) Formal Languages and Compilers Laboratory N Stefano Scanzio mail: stefano.scanzio@polito.it Web: http://www.skenz.it/compilers Attributes of Symbols A set of attributes can be
More informationRelational Databases Lecture 2
Relational Databases Lecture 2 Robb T Koether Hampden-Sydney College Fri, Jan 20, 2012 Robb T Koether (Hampden-Sydney College) Relational DatabasesLecture 2 Fri, Jan 20, 2012 1 / 36 1 Databases Systems
More informationHow do LL(1) Parsers Build Syntax Trees?
How do LL(1) Parsers Build Syntax Trees? So far our LL(1) parser has acted like a recognizer. It verifies that input token are syntactically correct, but it produces no output. Building complete (concrete)
More informationInteger Overflow. Lecture 8 Section 2.5. Robb T. Koether. Hampden-Sydney College. Mon, Jan 27, 2014
Integer Overflow Lecture 8 Section 2.5 Robb T. Koether Hampden-Sydney College Mon, Jan 27, 2014 Robb T. Koether (Hampden-Sydney College) Integer Overflow Mon, Jan 27, 2014 1 / 32 1 Signed Addition and
More informationThe string Class. Lecture 21 Sections 2.9, 3.9, Robb T. Koether. Wed, Oct 17, Hampden-Sydney College
The string Class Lecture 21 Sections 2.9, 3.9, 3.10 Robb T. Koether Hampden-Sydney College Wed, Oct 17, 2018 Robb T. Koether (Hampden-Sydney College) The string Class Wed, Oct 17, 2018 1 / 18 1 The String
More informationXQuery FLOWR Expressions Lecture 35
XQuery FLOWR Expressions Lecture 35 Robb T. Koether Hampden-Sydney College Fri, Apr 13, 2012 Robb T. Koether (Hampden-Sydney College) XQuery FLOWR ExpressionsLecture 35 Fri, Apr 13, 2012 1 / 33 1 XQuery
More informationDensity Curves Sections
Density Curves Sections 3.1-3.2 Lecture 8 Robb T. Koether Hampden-Sydney College Wed, Jan 27, 2016 Robb T. Koether (Hampden-Sydney College) Density CurvesSections 3.1-3.2 Wed, Jan 27, 2016 1 / 18 Outline
More informationSyntactic Analysis. Syntactic analysis, or parsing, is the second phase of compilation: The token file is converted to an abstract syntax tree.
Syntactic Analysis Syntactic analysis, or parsing, is the second phase of compilation: The token file is converted to an abstract syntax tree. Compiler Passes Analysis of input program (front-end) character
More informationCSE 582 Autumn 2002 Exam Sample Solution
Question 1. (10 points) Regular expressions. Describe the set of strings that are generated by the each of the following regular expressions. a) (a (bc)* d)+ One or more of the string a or the string d
More informationProgramming Languages
Programming Languages Lecture 3 Section 1.3 Robb T. Koether Hampden-Sydney College Mon, Sep 2, 2013 Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 1 / 25 1 Programming
More informationCOMPILER (CSE 4120) (Lecture 6: Parsing 4 Bottom-up Parsing )
COMPILR (CS 4120) (Lecture 6: Parsing 4 Bottom-up Parsing ) Sungwon Jung Mobile Computing & Data ngineering Lab Dept. of Computer Science and ngineering Sogang University Seoul, Korea Tel: +82-2-705-8930
More informationCS453 : JavaCUP and error recovery. CS453 Shift-reduce Parsing 1
CS453 : JavaCUP and error recovery CS453 Shift-reduce Parsing 1 Shift-reduce parsing in an LR parser LR(k) parser Left-to-right parse Right-most derivation K-token look ahead LR parsing algorithm using
More informationTotal Orders. Lecture 41 Section 8.5. Robb T. Koether. Hampden-Sydney College. Mon, Apr 8, 2013
Total Orders Lecture 41 Section 8.5 Robb T. Koether Hampden-Sydney College Mon, Apr 8, 2013 Robb T. Koether (Hampden-Sydney College) Total Orders Mon, Apr 8, 2013 1 / 30 1 Total Orders 2 Topological Sorting
More informationCompiler Passes. Syntactic Analysis. Context-free Grammars. Syntactic Analysis / Parsing. EBNF Syntax of initial MiniJava.
Syntactic Analysis Syntactic analysis, or parsing, is the second phase of compilation: The token file is converted to an abstract syntax tree. Compiler Passes Analysis of input program (front-end) character
More informationLexical Analysis. Chapter 1, Section Chapter 3, Section 3.1, 3.3, 3.4, 3.5 JFlex Manual
Lexical Analysis Chapter 1, Section 1.2.1 Chapter 3, Section 3.1, 3.3, 3.4, 3.5 JFlex Manual Inside the Compiler: Front End Lexical analyzer (aka scanner) Converts ASCII or Unicode to a stream of tokens
More informationBinary Tree Applications
Binary Tree Applications Lecture 30 Section 19.2 Robb T. Koether Hampden-Sydney College Wed, Apr 15, 2015 Robb T. Koether (Hampden-Sydney College) Binary Tree Applications Wed, Apr 15, 2015 1 / 56 1 Binary
More information