CMPS Programming Languages. Dr. Chengwei Lei CEECS California State University, Bakersfield

Similar documents
Chapter 3. Describing Syntax and Semantics

Describing Syntax and Semantics

Syntax. In Text: Chapter 3

Chapter 4. Syntax - the form or structure of the expressions, statements, and program units

Chapter 3. Describing Syntax and Semantics ISBN

Chapter 3. Describing Syntax and Semantics ISBN

Chapter 3. Describing Syntax and Semantics

Programming Language Syntax and Analysis

Chapter 3. Describing Syntax and Semantics

Habanero Extreme Scale Software Research Project

Programming Language Definition. Regular Expressions

Chapter 3. Syntax - the form or structure of the expressions, statements, and program units

Syntax and Semantics

3. DESCRIBING SYNTAX AND SEMANTICS

Chapter 3: Syntax and Semantics. Syntax and Semantics. Syntax Definitions. Matt Evett Dept. Computer Science Eastern Michigan University 1999

ICOM 4036 Spring 2004

Programming Languages

Programming Language Specification and Translation. ICOM 4036 Fall Lecture 3

Syntax. A. Bellaachia Page: 1

Chapter 3. Topics. Languages. Formal Definition of Languages. BNF and Context-Free Grammars. Grammar 2/4/2019

Principles of Programming Languages COMP251: Syntax and Grammars

Homework & Announcements

3. Context-free grammars & parsing

EECS 6083 Intro to Parsing Context Free Grammars

Parsing. source code. while (k<=n) {sum = sum+k; k=k+1;}

CPS 506 Comparative Programming Languages. Syntax Specification

Where We Are. CMSC 330: Organization of Programming Languages. This Lecture. Programming Languages. Motivation for Grammars

COP 3402 Systems Software Syntax Analysis (Parser)

Chapter 3: Describing Syntax and Semantics. Introduction Formal methods of describing syntax (BNF)

Dr. D.M. Akbar Hussain

Introduction to Parsing

CMSC 330: Organization of Programming Languages. Architecture of Compilers, Interpreters

Architecture of Compilers, Interpreters. CMSC 330: Organization of Programming Languages. Front End Scanner and Parser. Implementing the Front End

CMSC 330: Organization of Programming Languages. Context Free Grammars

Lecture 10 Parsing 10.1

Defining syntax using CFGs

Formal Languages. Formal Languages

COP 3402 Systems Software Top Down Parsing (Recursive Descent)

Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part2 3.3 Parse Trees and Abstract Syntax Trees

Part 5 Program Analysis Principles and Techniques

CMSC 330: Organization of Programming Languages

Parsing II Top-down parsing. Comp 412

CMSC 330: Organization of Programming Languages. Context Free Grammars

Lexical Scanning COMP360

CS415 Compilers. Syntax Analysis. These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University

Chapter 3. Describing Syntax and Semantics. Introduction. Why and How. Syntax Overview

CMSC 330: Organization of Programming Languages. Context Free Grammars

Syntax Analysis Check syntax and construct abstract syntax tree

CMSC 330: Organization of Programming Languages

Syntax/semantics. Program <> program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing

CMSC 330: Organization of Programming Languages

CSE302: Compiler Design

Chapter 3: CONTEXT-FREE GRAMMARS AND PARSING Part 1

Compiler Design Concepts. Syntax Analysis

Theoretical Part. Chapter one:- - What are the Phases of compiler? Answer:

CSE 3302 Programming Languages Lecture 2: Syntax

Lexical and Syntax Analysis. Top-Down Parsing

COP4020 Programming Languages. Syntax Prof. Robert van Engelen

Lecture 4: Syntax Specification

COP4020 Programming Languages. Syntax Prof. Robert van Engelen

CSE 311 Lecture 21: Context-Free Grammars. Emina Torlak and Kevin Zatloukal

Formal Languages and Grammars. Chapter 2: Sections 2.1 and 2.2

Chapter 4. Lexical and Syntax Analysis

Theory and Compiling COMP360

programming languages need to be precise a regular expression is one of the following: tokens are the building blocks of programs

P L. rogramming anguages. Fall COS 301 Programming Languages. Syntax & Semantics. UMaine School of Computing and Information Science

Syntax & Semantics. COS 301 Programming Languages

Context-free grammars (CFG s)

Principles of Programming Languages COMP251: Syntax and Grammars

CSE 130 Programming Language Principles & Paradigms Lecture # 5. Chapter 4 Lexical and Syntax Analysis

CSE P 501 Compilers. Parsing & Context-Free Grammars Hal Perkins Winter /15/ Hal Perkins & UW CSE C-1

CSCI312 Principles of Programming Languages!

CS 315 Programming Languages Syntax. Parser. (Alternatively hand-built) (Alternatively hand-built)

Programming Languages, Summary CSC419; Odelia Schwartz

Syntax Analysis/Parsing. Context-free grammars (CFG s) Context-free grammars vs. Regular Expressions. BNF description of PL/0 syntax

EDA180: Compiler Construc6on Context- free grammars. Görel Hedin Revised:

Syntax Analysis. Prof. James L. Frankel Harvard University. Version of 6:43 PM 6-Feb-2018 Copyright 2018, 2015 James L. Frankel. All rights reserved.

Wednesday, September 9, 15. Parsers

Parsers. What is a parser. Languages. Agenda. Terminology. Languages. A parser has two jobs:

Introduction to Lexing and Parsing

Parsing. Roadmap. > Context-free grammars > Derivations and precedence > Top-down parsing > Left-recursion > Look-ahead > Table-driven parsing

Context-Free Grammars

This book is licensed under a Creative Commons Attribution 3.0 License

MIT Specifying Languages with Regular Expressions and Context-Free Grammars. Martin Rinard Massachusetts Institute of Technology

MIT Specifying Languages with Regular Expressions and Context-Free Grammars

CSE 12 Abstract Syntax Trees

4. Lexical and Syntax Analysis

Languages and Compilers

A programming language requires two major definitions A simple one pass compiler

Optimizing Finite Automata

CSCE 314 Programming Languages

CS 314 Principles of Programming Languages

Syntax. Syntax. We will study three levels of syntax Lexical Defines the rules for tokens: literals, identifiers, etc.

4. Lexical and Syntax Analysis

3. Parsing. Oscar Nierstrasz

CMPT 755 Compilers. Anoop Sarkar.

COMP-421 Compiler Design. Presented by Dr Ioanna Dionysiou

Syntax Intro and Overview. Syntax

Parsing. Note by Baris Aktemur: Our slides are adapted from Cooper and Torczon s slides that they prepared for COMP 412 at Rice.

announcements CSE 311: Foundations of Computing review: regular expressions review: languages---sets of strings

Transcription:

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 Syntax Formal Methods of Describing Syntax Attribute Grammars Describing the Meanings of Programs: Dynamic Semantics 1-3

Introduction Syntax: the form or structure of the expressions, statements, and program units Semantics: the meaning of the expressions, statements, and program units Syntax and semantics provide a language s definition Users of a language definition Other language designers Implementers Programmers (the users of the language) 1-4

The General Problem of Describing Syntax: Terminology A sentence is a string of characters over some alphabet A language is a set of sentences A lexeme is the lowest level syntactic unit of a language (e.g., *, sum, begin) A token is a category of lexemes (e.g., identifier) 1-5

Formal Definition of Languages Recognizers A recognition device reads input strings over the alphabet of the language and decides whether the input strings belong to the language Example: syntax analysis part of a compiler - Detailed discussion of syntax analysis appears in Chapter 4 Generators A device that generates sentences of a language One can determine if the syntax of a particular sentence is syntactically correct by comparing it to the structure of the generator 1-6

BNF and Context-Free Grammars Context-Free Grammars Developed by Noam Chomsky in the mid-1950s Language generators, meant to describe the syntax of natural languages Define a class of languages called context-free languages Backus-Naur Form (1959) Invented by John Backus to describe the syntax of Algol 58 BNF is equivalent to context-free grammars 1-7

BNF Fundamentals In BNF, abstractions are used to represent classes of syntactic structures--they act like syntactic variables (also called nonterminal symbols, or just terminals) Terminals are lexemes or tokens A rule has a left-hand side (LHS), which is a nonterminal, and a right-hand side (RHS), which is a string of terminals and/or nonterminals 1-8

BNF Fundamentals (continued) Nonterminals are often enclosed in angle brackets Examples of BNF rules: <ident_list> identifier identifier, <ident_list> <if_stmt> if <logic_expr> then <stmt> Grammar: a finite non-empty set of rules A start symbol is a special element of the nonterminals of a grammar 1-9

BNF Rules An abstraction (or nonterminal symbol) can have more than one RHS <stmt> <single_stmt> begin <stmt_list> end 1-10

Describing Lists Syntactic lists are described using recursion <ident_list> ident ident, <ident_list> A derivation is a repeated application of rules, starting with the start symbol and ending with a sentence (all terminal symbols) 1-11

An Example Grammar <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <var> a b c d <term> + <term> <term> - <term> <term> <var> const 1-12

An Example Grammar <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <var> a b c d <term> + <term> <term> - <term> <term> <var> const Write a dummy 1-13 program based on the grammar

An Example Grammar <program> <stmts> <stmts> <stmt> <stmt> ; <stmts> <stmt> <var> = <var> a b c d <term> + <term> <term> - <term> <term> <var> const a = b + const 1-14

An Example Derivation <program> => <stmts> => <stmt> => <var> = => a = => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const 1-15

Derivations Every string of symbols in a derivation is a sentential form A sentence is a sentential form that has only terminal symbols A leftmost derivation is one in which the leftmost nonterminal in each sentential form is the one that is expanded A derivation may be neither leftmost nor rightmost 1-16

Parse Tree A hierarchical representation of a derivation <program> <stmts> <stmt> <var> = a <term> + <term> <var> const 1-17 b

Ambiguity in Grammars A grammar is ambiguous if and only if it generates a sentential form that has two or more distinct parse trees 1-18

An Ambiguous Expression Grammar <op> const <op> / -

An Ambiguous Expression Grammar <op> const <op> / - <op> <op> <op> <op> 1-20 const - const / const const - const / const

An Unambiguous Expression Grammar If we use the parse tree to indicate precedence levels of the operators, we cannot have ambiguity - <term> <term> <term> <term> / const const 1-21

An Unambiguous Expression Grammar If we use the parse tree to indicate precedence levels of the operators, we cannot have ambiguity - <term> <term> <term> <term> / const const - <term> <term> <term> / const 1-22 const const

Associativity of Operators Operator associativity can also be indicated by a grammar -> + const (ambiguous) -> + const const (unambiguous) + const + const 1-23 const

Unambiguous Grammar for Selector Java if-then-else grammar <if_stmt> -> if (<logic_expr>) <stmt> if (<logic_expr>) <stmt> else <stmt> Ambiguous! - An unambiguous grammar for if-then-else <stmt> -> <matched> <unmatched> <matched> -> if (<logic_expr>) <stmt> a non-if statement <unmatched> -> if (<logic_expr>) <stmt> if (<logic_expr>) <matched> else <unmatched> 1-24