Homework & Announcements
|
|
- Loreen Stokes
- 6 years ago
- Views:
Transcription
1 Homework & nnouncements New schedule on line. Reading: Chapter 18 Homework: Exercises at end Due: 11/1 Copyright c UMaine School of Computing and Information S 1 / 25
2 COS 140: Foundations of Specifying Programming : Backus Naur Form (BNF) Fall 2017 Copyright c UMaine School of Computing and Information S 2 / 25
3 Problem Problem Syntax and Semantics Syntax Formalisms Backus Naur Form Problem: how to specify a programming language? Have to have a way to describe its syntax (and, possibly, its semantics) Copyright c UMaine School of Computing and Information S 3 / 25
4 Syntax and Semantics Problem Syntax and Semantics Syntax Formalisms Backus Naur Form Syntax: Form of something (e.g., language) Describes relationships between components Semantics: Meaning of something Describes what the statements will do Need to capture formally so it s clear how language is to be used. Copyright c UMaine School of Computing and Information S 4 / 25
5 Syntax Formalisms Problem Syntax and Semantics Syntax Formalisms Backus Naur Form What is needed in a syntax formalism? ble to specify language s for users and compiler designers Easy to write and understand Expressive enough to capture all programming languages Easy to translate into algorithms for machine translation of language Copyright c UMaine School of Computing and Information S 5 / 25
6 Syntax Formalisms Problem Syntax and Semantics Syntax Formalisms Backus Naur Form Formalisms often expressed as production rules: LHS RHS Match LHS with what you have, produce RHS E.g.: S NP VP s we ll see: can also think of going backwards If you have NP and VP have a valid sentence S. Copyright c UMaine School of Computing and Information S 6 / 25
7 Backus Naur Form Problem Syntax and Semantics Syntax Formalisms Backus Naur Form BNF is the most common way of specifying of a programming language lso important for: Computability theory Natural language processing Many other places in CS where you need to specify a Copyright c UMaine School of Computing and Information S 7 / 25
8 Language Terminology Language Terminology Chomsky Hierarchy String: any combination of characters in the language may be the whole program Lexemes: lowest-level unit of language analogous to words in English sometimes called tokens Syntactic category: classes of lexemes that play the same role in the structure of a statement analogous to parts of speech also called tokens just to be confusing, maybe? Constituents: tokens or groups of tokens that are put together in ways specified by the analogous to noun phrases, etc. Grammar: specification of the syntax; a set of rules describing the legal strings of the language Terminal and non-terminal symbols Copyright c UMaine School of Computing and Information S 8 / 25
9 Types of : The Chomsky Hierarchy Language Terminology Chomsky Hierarchy s go down the hierarchy, languages increase in complexity, more machinery needed to recognize them Copyright c UMaine School of Computing and Information S 9 / 25
10 Types of : The Chomsky Hierarchy Language Terminology Chomsky Hierarchy s go down the hierarchy, languages increase in complexity, more machinery needed to recognize them Regular languages (regular expressions) tokens Single symbol on the LHS; RHS has at most one non-terminal: E.g.: S as b generatesa + b Copyright c UMaine School of Computing and Information S 9 / 25
11 Types of : The Chomsky Hierarchy Language Terminology Chomsky Hierarchy s go down the hierarchy, languages increase in complexity, more machinery needed to recognize them Regular languages (regular expressions) tokens Single symbol on the LHS; RHS has at most one non-terminal: E.g.: S as b generatesa + b Context-free languages programming languages LHS: single symbol; terminals, non-terminals in RHS E.g.: S asb nil generatesa n b n Copyright c UMaine School of Computing and Information S 9 / 25
12 Types of : The Chomsky Hierarchy Language Terminology Chomsky Hierarchy s go down the hierarchy, languages increase in complexity, more machinery needed to recognize them Regular languages (regular expressions) tokens Single symbol on the LHS; RHS has at most one non-terminal: E.g.: S as b generatesa + b Context-free languages programming languages LHS: single symbol; terminals, non-terminals in RHS E.g.: S asb nil generatesa n b n Context-sensitive languages RHS has at least as many symbols as LHS E.g.: asc asbsc Copyright c UMaine School of Computing and Information S 9 / 25
13 Types of : The Chomsky Hierarchy Language Terminology Chomsky Hierarchy s go down the hierarchy, languages increase in complexity, more machinery needed to recognize them Regular languages (regular expressions) tokens Single symbol on the LHS; RHS has at most one non-terminal: E.g.: S as b generatesa + b Context-free languages programming languages LHS: single symbol; terminals, non-terminals in RHS E.g.: S asb nil generatesa n b n Context-sensitive languages RHS has at least as many symbols as LHS E.g.: asc asbsc Recursively-enumerable languages Turing-equivalent representation No restrictions on LHS, RHS E.g.: aaas aaatq Copyright c UMaine School of Computing and Information S 9 / 25
14 (BNF) BNF Derivation Recursion Grammar formalism for context-free languages (only one symbol on LHS) Terminology: Rewrite (production) rules rules that rewrite current pattern into a new one LHS, RHS parts of rule: LHS RHS Terminal symbols symbols that appear only on RHS i.e., do not get replaced by anything Non-terminal symbols symbols that appear in some LHS lternatives ( ) different RHS s that can be used with the LHS Copyright c UMaine School of Computing and Information S 10 / 25
15 (BNF) BNF Derivation Recursion E.g.: <var> <var> + <var> <var> B C Often written with::= instead of : <var>::= B C Copyright c UMaine School of Computing and Information S 11 / 25
16 Example: Producing a String from BNF BNF Derivation Recursion <var> <var> + <var> <var> B C Start with the kind of constituent you want to produce Replace each non-terminal in LHS with a RHS that appears in the rule for which that non-terminal is in the LHS <var> +<var> Keep doing this until there are only non-terminals in the string + <var>... +B Copyright c UMaine School of Computing and Information S 12 / 25
17 Derivation BNF Derivation Recursion Start symbol: where derivations begin to derive all possible strings (programs) Sentential form: any string derived from the start symbols using the rewrite rules Derivation: rewrite sentential forms until have all terminal symbols Options: Order of rewriting left-most, right-most derivations lternative used for rewriting Copyright c UMaine School of Computing and Information S 13 / 25
18 Recursion BNF Derivation Recursion What is recursion? In BNF: LHS appears in the RHS llows infinite language from finite Cannot specify the number of times rule will be applied E.g.: to allow any number of additions in an expression: <var> <var> + Need an alternative that can stop the recursion! Copyright c UMaine School of Computing and Information S 14 / 25
19 Grammar Parse What is parsing? Checking the legality of input against a Producing a parse tree that shows the relationships between the tokens Parse trees record derivations Start with a string of only tokens (terminal symbols) Find a RHS pattern in the string, replace with the LHS. Continue until you have the start symbol If you can do this: the input was a valid sentence in the language Create a parse tree by showing how we replace terminal/non-terminal symbols using appropriate rules Copyright c UMaine School of Computing and Information S 15 / 25
20 Example Grammar Parse Copyright c UMaine School of Computing and Information S 16 / 25
21 Example Input: + B + C Processed so far: Parse tree: Grammar: <var> <var> <var> + B C Grammar Parse Copyright c UMaine School of Computing and Information S 16 / 25
22 Example Input: + B + C Processed so far: Parse tree: Grammar: <var> <var> <var> + B C Grammar Parse Copyright c UMaine School of Computing and Information S 16 / 25
23 Example Input: + B + C Processed so far: Parse tree: <var> Grammar: <var> <var> <var> + B C Grammar Parse Copyright c UMaine School of Computing and Information S 16 / 25
24 Example Grammar Parse Input: + B + C Grammar: Processed so far: + <var> Parse tree: <var> + <var> <var> + B C Copyright c UMaine School of Computing and Information S 16 / 25
25 Example Grammar Parse Input: + B + C Grammar: Processed so far: +B + C <var> Parse tree: <var> + <var> + B <var> C <var> <var> + B C Copyright c UMaine School of Computing and Information S 16 / 25
26 mbiguity Grammar Parse More than one different, legal, correct parse trees for the same string Problem, since parse tree indicates relationship between the constituents Property of the Copyright c UMaine School of Computing and Information S 17 / 25
27 mbiguity Example Grammar Parse Grammar: <var> + Parse trees: <var> <var> B C + <var> B + <var> C <var> + + <var> <var> B C Sub-expressions that are more deeply nested in the tree are evaluated first Copyright c UMaine School of Computing and Information S 18 / 25
28 n Unambiguous Grammar for ddition Expressions Grammar Parse Need to ensure that the expression can be evaluated in only one way Want the expression to be evaluated left to right first expression formed (lowest in tree) needs to be to the left Copyright c UMaine School of Computing and Information S 19 / 25
29 n Unambiguous Grammar for ddition Expressions Grammar Parse Need to ensure that the expression can be evaluated in only one way Want the expression to be evaluated left to right first expression formed (lowest in tree) needs to be to the left Replace rule in previous with: + <var> Copyright c UMaine School of Computing and Information S 19 / 25
30 n Unambiguous Grammar for ddition Expressions Grammar Parse Need to ensure that the expression can be evaluated in only one way Want the expression to be evaluated left to right first expression formed (lowest in tree) needs to be to the left Replace rule in previous with: + <var> + + <var> <var> C <var> B Copyright c UMaine School of Computing and Information S 19 / 25
31 Operator Precedence Grammar Parse Need a constituent for each set of operators with the same precedence Operators with the highest precedence need to be built at the lowest level in the tree Get left associativity if we parse left right, keep recursion to the left + <var> Right associativity: recursion to the left. Copyright c UMaine School of Computing and Information S 20 / 25
32 Levels of Precendence Grammar Parse Items in parentheses and identifiers, numbers: factor, B, (C + D) Multiplication and division: term *B, /B ddition and subtraction: expression +B, -B Copyright c UMaine School of Computing and Information S 21 / 25
33 Example Grammar Grammar Parse + / () B C D Copyright c UMaine School of Computing and Information S 22 / 25
34 Grammar Parse Can think of there being a state of the parse Records where we are in the process E.g.: + would mean that we ve turned the tokens we ve read so far into the non-terminal, the terminal symbol (token)+, and the non-terminal Idea of state can be used to parse using a state machine or automata we ll talk about this later in course Can also think of there being some tokens that have not yet been read Start with an empty state, and with all terminals unread Copyright c UMaine School of Computing and Information S 23 / 25
35 Parse of + B * C - D Grammar Parse State: (empty) Input left: + B * C - D No rules apply to empty state. Read next token (). + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
36 Parse of + B * C - D Grammar Parse State: Input left: + B * C - D Only rule that applies is: ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
37 Parse of + B * C - D Grammar Parse State: Input left: + B * C - D Only rule that applies is: ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
38 Parse of + B * C - D Grammar Parse State: Input left: + B * C - D Only rule that applies is: ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
39 Parse of + B * C - D Grammar Parse State: Input left: + B * C - D Only rule that applies is: ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
40 Parse of + B * C - D Grammar Parse State: Input left: + B * C - D lthough is the current state, there are still input tokens left, so we re not done. Read next token (+). + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
41 Parse of + B * C - D Grammar Parse State: + Input left: B * C - D No rule applies. Read next token (B). + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
42 Parse of + B * C - D Grammar Parse State: + B Input left: * C - D Can t replace whole thing. Use ::= B + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
43 Parse of + B * C - D Grammar Parse State: + Input left: * C - D Can t replace whole thing. Use ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
44 Parse of + B * C - D Grammar Parse State: + Input left: * C - D Can t replace whole thing. Use ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
45 Parse of + B * C - D Grammar Parse State: + Input left: * C - D Can apply ::= + + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
46 Parse of + B * C - D Grammar Parse State: Input left: * C - D Can t stop -- still have input tokens left. Read next token (*) + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
47 Parse of + B * C - D Grammar Parse State: * Input left: C - D No rule produces anything beginning with * -- dead end. Backtrack to previous state + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
48 Parse of + B * C - D Grammar Parse State: + Input left: * C - D lthough we could apply ::= +, we ve already tried that with no luck -- so read next input token (*). + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
49 Parse of + B * C - D Grammar Parse State: + * Input left: C - D Nothing matches directly with * Read next token (C). + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
50 Parse of + B * C - D Grammar Parse State: + * C Input left: - D Nothing matches directly with * C Use rule: ::= C + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
51 Parse of + B * C - D Grammar Parse State: + * Input left: - D Nothing matches directly with * Use rule: ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
52 Parse of + B * C - D Grammar Parse State: + * Input left: - D Use rule: ::= * + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
53 Parse of + B * C - D Grammar Parse State: + Input left: - D Use rule: ::= + + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
54 Parse of + B * C - D Grammar Parse State: Input left: - D lthough is state, there is still input, so we re not done. No matching rules in ; so read next input token. + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
55 Parse of + B * C - D Grammar Parse State: - Input left: D Doesn t match anything in. Read D from input. + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
56 Parse of + B * C - D State: - D Input: none Doesn t match anything in directly. So use ::= D Grammar Parse + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
57 Parse of + B * C - D Grammar Parse State: - Input: none Doesn t match anything in. So use ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
58 Parse of + B * C - D Grammar Parse State: - Input: none Doesn t match anything in. So use ::= + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
59 Parse of + B * C - D Grammar Parse State: Matches rule ::= - - Input: none + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
60 Parse of + B * C - D State: Input: none Done. Grammar Parse + B * C - D Copyright c UMaine School of Computing and Information S 24 / 25
61 Parsers Grammar Parse Kinds of s/kinds of parsing: LL: left-to-right, leftmost derivation LR: left-to-right, rightmost derivation Different amounts of lookahead: LR(1), e.g. LL parsing: e.g., recursive-descent parsers LR parsing: e.g., shift-reduce parsers typically table-driven Copyright c UMaine School of Computing and Information S 25 / 25
CMPS Programming Languages. Dr. Chengwei Lei CEECS California State University, Bakersfield
CMPS 3500 Programming Languages Dr. Chengwei Lei CEECS California State University, Bakersfield Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing
More informationSyntax. In Text: Chapter 3
Syntax In Text: Chapter 3 1 Outline Syntax: Recognizer vs. generator BNF EBNF Chapter 3: Syntax and Semantics 2 Basic Definitions Syntax the form or structure of the expressions, statements, and program
More informationChapter 3. Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:
More informationDescribing Syntax and Semantics
Describing Syntax and Semantics Introduction Syntax: the form or structure of the expressions, statements, and program units Semantics: the meaning of the expressions, statements, and program units Syntax
More informationParsing II Top-down parsing. Comp 412
COMP 412 FALL 2018 Parsing II Top-down parsing Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2018, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled
More informationDerivations vs Parses. Example. Parse Tree. Ambiguity. Different Parse Trees. Context Free Grammars 9/18/2012
Derivations vs Parses Grammar is used to derive string or construct parser Context ree Grammars A derivation is a sequence of applications of rules Starting from the start symbol S......... (sentence)
More informationProgramming Language Syntax and Analysis
Programming Language Syntax and Analysis 2017 Kwangman Ko (http://compiler.sangji.ac.kr, kkman@sangji.ac.kr) Dept. of Computer Engineering, Sangji University Introduction Syntax the form or structure of
More informationChapter 3. Describing Syntax and Semantics ISBN
Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Copyright 2009 Addison-Wesley. All
More informationHabanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Grammars Zoran Budimlić (Rice University) Grammar, which knows how to control even kings - Moliere So you know everything about regular expressions
More informationLanguages and Compilers
Principles of Software Engineering and Operational Systems Languages and Compilers SDAGE: Level I 2012-13 3. Formal Languages, Grammars and Automata Dr Valery Adzhiev vadzhiev@bournemouth.ac.uk Office:
More informationCSE450 Translation of Programming Languages. Lecture 4: Syntax Analysis
CSE450 Translation of Programming Languages Lecture 4: Syntax Analysis http://xkcd.com/859 Structure of a Today! Compiler Source Language Lexical Analyzer Syntax Analyzer Semantic Analyzer Int. Code Generator
More informationCS415 Compilers. Syntax Analysis. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University
CS415 Compilers Syntax Analysis These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University Limits of Regular Languages Advantages of Regular Expressions
More informationContext-Free Grammar (CFG)
Context-Free Grammar (CFG) context-free grammar looks like this bunch of rules: ain idea: + 1 (),, are non-terminal symbols aka variables. When you see them, you apply rules to expand. One of them is designated
More informationCOP 3402 Systems Software Syntax Analysis (Parser)
COP 3402 Systems Software Syntax Analysis (Parser) Syntax Analysis 1 Outline 1. Definition of Parsing 2. Context Free Grammars 3. Ambiguous/Unambiguous Grammars Syntax Analysis 2 Lexical and Syntax Analysis
More informationChapter 4. Lexical and Syntax Analysis. Topics. Compilation. Language Implementation. Issues in Lexical and Syntax Analysis.
Topics Chapter 4 Lexical and Syntax Analysis Introduction Lexical Analysis Syntax Analysis Recursive -Descent Parsing Bottom-Up parsing 2 Language Implementation Compilation There are three possible approaches
More informationEECS 6083 Intro to Parsing Context Free Grammars
EECS 6083 Intro to Parsing Context Free Grammars Based on slides from text web site: Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. 1 Parsing sequence of tokens parser
More informationIntroduction to Parsing
Introduction to Parsing The Front End Source code Scanner tokens Parser IR Errors Parser Checks the stream of words and their parts of speech (produced by the scanner) for grammatical correctness Determines
More informationChapter 4. Syntax - the form or structure of the expressions, statements, and program units
Syntax - the form or structure of the expressions, statements, and program units Semantics - the meaning of the expressions, statements, and program units Who must use language definitions? 1. Other language
More informationLecture 10 Parsing 10.1
10.1 The next two lectures cover parsing. To parse a sentence in a formal language is to break it down into its syntactic components. Parsing is one of the most basic functions every compiler carries out,
More informationPrinciples of Programming Languages COMP251: Syntax and Grammars
Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2006
More informationCS 314 Principles of Programming Languages
CS 314 Principles of Programming Languages Lecture 5: Syntax Analysis (Parsing) Zheng (Eddy) Zhang Rutgers University January 31, 2018 Class Information Homework 1 is being graded now. The sample solution
More informationICOM 4036 Spring 2004
Language Specification and Translation ICOM 4036 Spring 2004 Lecture 3 Copyright 2004 Pearson Addison-Wesley. All rights reserved. 3-1 Language Specification and Translation Topics Structure of a Compiler
More informationCOP 3402 Systems Software Top Down Parsing (Recursive Descent)
COP 3402 Systems Software Top Down Parsing (Recursive Descent) Top Down Parsing 1 Outline 1. Top down parsing and LL(k) parsing 2. Recursive descent parsing 3. Example of recursive descent parsing of arithmetic
More informationCPS 506 Comparative Programming Languages. Syntax Specification
CPS 506 Comparative Programming Languages Syntax Specification Compiling Process Steps Program Lexical Analysis Convert characters into a stream of tokens Lexical Analysis Syntactic Analysis Send tokens
More informationCS 406/534 Compiler Construction Parsing Part I
CS 406/534 Compiler Construction Parsing Part I Prof. Li Xu Dept. of Computer Science UMass Lowell Fall 2004 Part of the course lecture notes are based on Prof. Keith Cooper, Prof. Ken Kennedy and Dr.
More informationProgramming Language Specification and Translation. ICOM 4036 Fall Lecture 3
Programming Language Specification and Translation ICOM 4036 Fall 2009 Lecture 3 Some parts are Copyright 2004 Pearson Addison-Wesley. All rights reserved. 3-1 Language Specification and Translation Topics
More informationChapter 3. Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:
More informationParsing. source code. while (k<=n) {sum = sum+k; k=k+1;}
Compiler Construction Grammars Parsing source code scanner tokens regular expressions lexical analysis Lennart Andersson parser context free grammar Revision 2012 01 23 2012 parse tree AST builder (implicit)
More informationCSE 12 Abstract Syntax Trees
CSE 12 Abstract Syntax Trees Compilers and Interpreters Parse Trees and Abstract Syntax Trees (AST's) Creating and Evaluating AST's The Table ADT and Symbol Tables 16 Using Algorithms and Data Structures
More informationCSE 3302 Programming Languages Lecture 2: Syntax
CSE 3302 Programming Languages Lecture 2: Syntax (based on slides by Chengkai Li) Leonidas Fegaras University of Texas at Arlington CSE 3302 L2 Spring 2011 1 How do we define a PL? Specifying a PL: Syntax:
More informationParsing. Roadmap. > Context-free grammars > Derivations and precedence > Top-down parsing > Left-recursion > Look-ahead > Table-driven parsing
Roadmap > Context-free grammars > Derivations and precedence > Top-down parsing > Left-recursion > Look-ahead > Table-driven parsing The role of the parser > performs context-free syntax analysis > guides
More informationannouncements CSE 311: Foundations of Computing review: regular expressions review: languages---sets of strings
CSE 311: Foundations of Computing Fall 2013 Lecture 19: Regular expressions & context-free grammars announcements Reading assignments 7 th Edition, pp. 878-880 and pp. 851-855 6 th Edition, pp. 817-819
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Context Free Grammars and Parsing 1 Recall: Architecture of Compilers, Interpreters Source Parser Static Analyzer Intermediate Representation Front End Back
More informationLexical and Syntax Analysis. Top-Down Parsing
Lexical and Syntax Analysis Top-Down Parsing Easy for humans to write and understand String of characters Lexemes identified String of tokens Easy for programs to transform Data structure Syntax A syntax
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages Syntactic Analysis Dr. Hyunyoung Lee 1 What Is a Programming Language? Language = syntax + semantics The syntax of a language is concerned with the form of a program: how
More informationChapter 4. Lexical and Syntax Analysis
Chapter 4 Lexical and Syntax Analysis Chapter 4 Topics Introduction Lexical Analysis The Parsing Problem Recursive-Descent Parsing Bottom-Up Parsing Copyright 2012 Addison-Wesley. All rights reserved.
More informationParsing III. CS434 Lecture 8 Spring 2005 Department of Computer Science University of Alabama Joel Jones
Parsing III (Top-down parsing: recursive descent & LL(1) ) (Bottom-up parsing) CS434 Lecture 8 Spring 2005 Department of Computer Science University of Alabama Joel Jones Copyright 2003, Keith D. Cooper,
More informationChapter 2 :: Programming Language Syntax
Chapter 2 :: Programming Language Syntax Michael L. Scott kkman@sangji.ac.kr, 2015 1 Regular Expressions A regular expression is one of the following: A character The empty string, denoted by Two regular
More informationprogramming languages need to be precise a regular expression is one of the following: tokens are the building blocks of programs
Chapter 2 :: Programming Language Syntax Programming Language Pragmatics Michael L. Scott Introduction programming languages need to be precise natural languages less so both form (syntax) and meaning
More information15 212: Principles of Programming. Some Notes on Grammars and Parsing
15 212: Principles of Programming Some Notes on Grammars and Parsing Michael Erdmann Spring 2011 1 Introduction These notes are intended as a rough and ready guide to grammars and parsing. The theoretical
More informationLecture 4: Syntax Specification
The University of North Carolina at Chapel Hill Spring 2002 Lecture 4: Syntax Specification Jan 16 1 Phases of Compilation 2 1 Syntax Analysis Syntax: Webster s definition: 1 a : the way in which linguistic
More informationLL(k) Parsing. Predictive Parsers. LL(k) Parser Structure. Sample Parse Table. LL(1) Parsing Algorithm. Push RHS in Reverse Order 10/17/2012
Predictive Parsers LL(k) Parsing Can we avoid backtracking? es, if for a given input symbol and given nonterminal, we can choose the alternative appropriately. his is possible if the first terminal of
More informationCSE 130 Programming Language Principles & Paradigms Lecture # 5. Chapter 4 Lexical and Syntax Analysis
Chapter 4 Lexical and Syntax Analysis Introduction - Language implementation systems must analyze source code, regardless of the specific implementation approach - Nearly all syntax analysis is based on
More informationChapter 3. Describing Syntax and Semantics ISBN
Chapter 3 Describing Syntax and Semantics ISBN 0-321-49362-1 Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the
More information10/4/18. Lexical and Syntactic Analysis. Lexical and Syntax Analysis. Tokenizing Source. Scanner. Reasons to Separate Lexical and Syntactic Analysis
Lexical and Syntactic Analysis Lexical and Syntax Analysis In Text: Chapter 4 Two steps to discover the syntactic structure of a program Lexical analysis (Scanner): to read the input characters and output
More informationChapter 3. Describing Syntax and Semantics
Chapter 3 Describing Syntax and Semantics Chapter 3 Topics Introduction The General Problem of Describing Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs:
More informationWhere We Are. CMSC 330: Organization of Programming Languages. This Lecture. Programming Languages. Motivation for Grammars
CMSC 330: Organization of Programming Languages Context Free Grammars Where We Are Programming languages Ruby OCaml Implementing programming languages Scanner Uses regular expressions Finite automata Parser
More informationSyntax Analysis Part I
Syntax Analysis Part I Chapter 4: Context-Free Grammars Slides adapted from : Robert van Engelen, Florida State University Position of a Parser in the Compiler Model Source Program Lexical Analyzer Token,
More information3. Parsing. Oscar Nierstrasz
3. Parsing Oscar Nierstrasz Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes. http://www.cs.ucla.edu/~palsberg/ http://www.cs.purdue.edu/homes/hosking/
More informationTheory and Compiling COMP360
Theory and Compiling COMP360 It has been said that man is a rational animal. All my life I have been searching for evidence which could support this. Bertrand Russell Reading Read sections 2.1 3.2 in the
More informationSyntax. Syntax. We will study three levels of syntax Lexical Defines the rules for tokens: literals, identifiers, etc.
Syntax Syntax Syntax defines what is grammatically valid in a programming language Set of grammatical rules E.g. in English, a sentence cannot begin with a period Must be formal and exact or there will
More informationSyntax and Semantics
Syntax and Semantics Syntax - The form or structure of the expressions, statements, and program units Semantics - The meaning of the expressions, statements, and program units Syntax Example: simple C
More informationIntroduction to Lexing and Parsing
Introduction to Lexing and Parsing ECE 351: Compilers Jon Eyolfson University of Waterloo June 18, 2012 1 Riddle Me This, Riddle Me That What is a compiler? 1 Riddle Me This, Riddle Me That What is a compiler?
More informationTop-Down Parsing and Intro to Bottom-Up Parsing. Lecture 7
Top-Down Parsing and Intro to Bottom-Up Parsing Lecture 7 1 Predictive Parsers Like recursive-descent but parser can predict which production to use Predictive parsers are never wrong Always able to guess
More informationChapter 3. Syntax - the form or structure of the expressions, statements, and program units
Syntax - the form or structure of the expressions, statements, and program units Semantics - the meaning of the expressions, statements, and program units Who must use language definitions? 1. Other language
More informationBuilding Compilers with Phoenix
Building Compilers with Phoenix Syntax-Directed Translation Structure of a Compiler Character Stream Intermediate Representation Lexical Analyzer Machine-Independent Optimizer token stream Intermediate
More informationSyntax Analysis, V Bottom-up Parsing & The Magic of Handles Comp 412
Midterm Exam: Thursday October 18, 7PM Herzstein Amphitheater Syntax Analysis, V Bottom-up Parsing & The Magic of Handles Comp 412 COMP 412 FALL 2018 source code IR Front End Optimizer Back End IR target
More informationParsing. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice.
Parsing Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice. Copyright 2010, Keith D. Cooper & Linda Torczon, all rights reserved. Students
More informationLanguages, Automata, Regular Expressions & Scanners. Winter /8/ Hal Perkins & UW CSE B-1
CSE 401 Compilers Languages, Automata, Regular Expressions & Scanners Hal Perkins Winter 2010 1/8/2010 2002-10 Hal Perkins & UW CSE B-1 Agenda Quick review of basic concepts of formal grammars Regular
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 informationWednesday, September 9, 15. Parsers
Parsers What is a parser A parser has two jobs: 1) Determine whether a string (program) is valid (think: grammatically correct) 2) Determine the structure of a program (think: diagramming a sentence) Agenda
More informationParsers. What is a parser. Languages. Agenda. Terminology. Languages. A parser has two jobs:
What is a parser Parsers A parser has two jobs: 1) Determine whether a string (program) is valid (think: grammatically correct) 2) Determine the structure of a program (think: diagramming a sentence) Agenda
More information10/5/17. Lexical and Syntactic Analysis. Lexical and Syntax Analysis. Tokenizing Source. Scanner. Reasons to Separate Lexical and Syntax Analysis
Lexical and Syntactic Analysis Lexical and Syntax Analysis In Text: Chapter 4 Two steps to discover the syntactic structure of a program Lexical analysis (Scanner): to read the input characters and output
More informationA language is a subset of the set of all strings over some alphabet. string: a sequence of symbols alphabet: a set of symbols
The current topic:! Introduction! Object-oriented programming: Python! Functional programming: Scheme! Python GUI programming (Tkinter)! Types and values! Logic programming: Prolog! Introduction! Rules,
More informationDr. D.M. Akbar Hussain
Syntax Analysis Parsing Syntax Or Structure Given By Determines Grammar Rules Context Free Grammar 1 Context Free Grammars (CFG) Provides the syntactic structure: A grammar is quadruple (V T, V N, S, R)
More informationCOP4020 Programming Languages. Syntax Prof. Robert van Engelen
COP4020 Programming Languages Syntax Prof. Robert van Engelen Overview n Tokens and regular expressions n Syntax and context-free grammars n Grammar derivations n More about parse trees n Top-down and
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Context Free Grammars 1 Architecture of Compilers, Interpreters Source Analyzer Optimizer Code Generator Abstract Syntax Tree Front End Back End Compiler
More informationCSCI312 Principles of Programming Languages!
CSCI312 Principles of Programming Languages! Chapter 2 Syntax! Xu Liu Review! Principles of PL syntax, naming, types, semantics Paradigms of PL design imperative, OO, functional, logic What makes a successful
More informationIntroduction to Parsing. Comp 412
COMP 412 FALL 2010 Introduction to Parsing Comp 412 Copyright 2010, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University have explicit permission to make
More informationSyntax. 2.1 Terminology
Syntax 2 Once you ve learned to program in one language, learning a similar programming language isn t all that hard. But, understanding just how to write in the new language takes looking at examples
More information4. Lexical and Syntax Analysis
4. Lexical and Syntax Analysis 4.1 Introduction Language implementation systems must analyze source code, regardless of the specific implementation approach Nearly all syntax analysis is based on a formal
More informationflex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input.
flex is not a bad tool to use for doing modest text transformations and for programs that collect statistics on input. More often than not, though, you ll want to use flex to generate a scanner that divides
More informationA programming language requires two major definitions A simple one pass compiler
A programming language requires two major definitions A simple one pass compiler [Syntax: what the language looks like A context-free grammar written in BNF (Backus-Naur Form) usually suffices. [Semantics:
More informationCMSC 330: Organization of Programming Languages. Architecture of Compilers, Interpreters
: Organization of Programming Languages Context Free Grammars 1 Architecture of Compilers, Interpreters Source Scanner Parser Static Analyzer Intermediate Representation Front End Back End Compiler / Interpreter
More informationEDAN65: Compilers, Lecture 04 Grammar transformations: Eliminating ambiguities, adapting to LL parsing. Görel Hedin Revised:
EDAN65: Compilers, Lecture 04 Grammar transformations: Eliminating ambiguities, adapting to LL parsing Görel Hedin Revised: 2017-09-04 This lecture Regular expressions Context-free grammar Attribute grammar
More informationLexical and Syntax Analysis
Lexical and Syntax Analysis In Text: Chapter 4 N. Meng, F. Poursardar Lexical and Syntactic Analysis Two steps to discover the syntactic structure of a program Lexical analysis (Scanner): to read the input
More informationCS2210: Compiler Construction Syntax Analysis Syntax Analysis
Comparison with Lexical Analysis The second phase of compilation Phase Input Output Lexer string of characters string of tokens Parser string of tokens Parse tree/ast What Parse Tree? CS2210: Compiler
More informationCMSC 330: Organization of Programming Languages. Context Free Grammars
CMSC 330: Organization of Programming Languages Context Free Grammars 1 Architecture of Compilers, Interpreters Source Analyzer Optimizer Code Generator Abstract Syntax Tree Front End Back End Compiler
More informationCSE P 501 Compilers. LR Parsing Hal Perkins Spring UW CSE P 501 Spring 2018 D-1
CSE P 501 Compilers LR Parsing Hal Perkins Spring 2018 UW CSE P 501 Spring 2018 D-1 Agenda LR Parsing Table-driven Parsers Parser States Shift-Reduce and Reduce-Reduce conflicts UW CSE P 501 Spring 2018
More informationCS Lecture 2. The Front End. Lecture 2 Lexical Analysis
CS 1622 Lecture 2 Lexical Analysis CS 1622 Lecture 2 1 Lecture 2 Review of last lecture and finish up overview The first compiler phase: lexical analysis Reading: Chapter 2 in text (by 1/18) CS 1622 Lecture
More information4. Lexical and Syntax Analysis
4. Lexical and Syntax Analysis 4.1 Introduction Language implementation systems must analyze source code, regardless of the specific implementation approach Nearly all syntax analysis is based on a formal
More informationChapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)
Chapter 3: Describing Syntax and Semantics Introduction Formal methods of describing syntax (BNF) We can analyze syntax of a computer program on two levels: 1. Lexical level 2. Syntactic level Lexical
More informationStructure of a Compiler: Scanner reads a source, character by character, extracting lexemes that are then represented by tokens.
CS 441 Fall 2018 Notes Compiler - software that translates a program written in a source file into a program stored in a target file, reporting errors when found. Source Target program written in a High
More informationCS 315 Programming Languages Syntax. Parser. (Alternatively hand-built) (Alternatively hand-built)
Programming languages must be precise Remember instructions This is unlike natural languages CS 315 Programming Languages Syntax Precision is required for syntax think of this as the format of the language
More informationCOP4020 Programming Languages. Syntax Prof. Robert van Engelen
COP4020 Programming Languages Syntax Prof. Robert van Engelen Overview Tokens and regular expressions Syntax and context-free grammars Grammar derivations More about parse trees Top-down and bottom-up
More informationCompiler Construction Using
Compiler Construction Using Java, JavaCC, and Yacc ANTHONY J. DOS REIS Stale University ofnew York at New Pallz IEEE computer society WILEY A JOHN WILEY & SONS, INC., PUBLICATION Preface xv Chapter 1 Strings,
More informationTopic 3: Syntax Analysis I
Topic 3: Syntax Analysis I Compiler Design Prof. Hanjun Kim CoreLab (Compiler Research Lab) POSTECH 1 Back-End Front-End The Front End Source Program Lexical Analysis Syntax Analysis Semantic Analysis
More informationCS 230 Programming Languages
CS 230 Programming Languages 10 / 16 / 2013 Instructor: Michael Eckmann Today s Topics Questions/comments? Top Down / Recursive Descent Parsers Top Down Parsers We have a left sentential form xa Expand
More informationCIT Lecture 5 Context-Free Grammars and Parsing 4/2/2003 1
CIT3136 - Lecture 5 Context-Free Grammars and Parsing 4/2/2003 1 Definition of a Context-free Grammar: An alphabet or set of basic symbols (like regular expressions, only now the symbols are whole tokens,
More informationGrammars and Parsing. Paul Klint. Grammars and Parsing
Paul Klint Grammars and Languages are one of the most established areas of Natural Language Processing and Computer Science 2 N. Chomsky, Aspects of the theory of syntax, 1965 3 A Language...... is a (possibly
More informationCompilers. Yannis Smaragdakis, U. Athens (original slides by Sam
Compilers Parsing Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts) Next step text chars Lexical analyzer tokens Parser IR Errors Parsing: Organize tokens into sentences Do tokens conform
More informationA simple syntax-directed
Syntax-directed is a grammaroriented compiling technique Programming languages: Syntax: what its programs look like? Semantic: what its programs mean? 1 A simple syntax-directed Lexical Syntax Character
More information3. Syntax Analysis. Andrea Polini. Formal Languages and Compilers Master in Computer Science University of Camerino
3. Syntax Analysis Andrea Polini Formal Languages and Compilers Master in Computer Science University of Camerino (Formal Languages and Compilers) 3. Syntax Analysis CS@UNICAM 1 / 54 Syntax Analysis: the
More informationTop-Down Parsing and Intro to Bottom-Up Parsing. Lecture 7
Top-Down Parsing and Intro to Bottom-Up Parsing Lecture 7 1 Predictive Parsers Like recursive-descent but parser can predict which production to use Predictive parsers are never wrong Always able to guess
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Context Free Grammars 1 Architecture of Compilers, Interpreters Source Analyzer Optimizer Code Generator Abstract Syntax Tree Front End Back End Compiler
More informationCMSC 330: Organization of Programming Languages. Context Free Grammars
CMSC 330: Organization of Programming Languages Context Free Grammars 1 Architecture of Compilers, Interpreters Source Analyzer Optimizer Code Generator Abstract Syntax Tree Front End Back End Compiler
More informationPrinciples of Programming Languages COMP251: Syntax and Grammars
Principles of Programming Languages COMP251: Syntax and Grammars Prof. Dekai Wu Department of Computer Science and Engineering The Hong Kong University of Science and Technology Hong Kong, China Fall 2007
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Massachusetts Institute of Technology Language Definition Problem How to precisely define language Layered structure
More informationMIT Specifying Languages with Regular Expressions and Context-Free Grammars
MIT 6.035 Specifying Languages with Regular essions and Context-Free Grammars Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Language Definition Problem How to precisely
More informationCompiler Design Concepts. Syntax Analysis
Compiler Design Concepts Syntax Analysis Introduction First task is to break up the text into meaningful words called tokens. newval=oldval+12 id = id + num Token Stream Lexical Analysis Source Code (High
More information