Generating Programs with Grammars and ASTGen
|
|
- Noah Hawkins
- 5 years ago
- Views:
Transcription
1 Generating Programs with Grammars and ASTGen 598DM Guest Lecture Brett Daniel Tuesday, March 11,
2 Overview Grammar AST Nodes language for composed of Program Text parsed by Parser produces Parse Tree 2
3 Overview ASTGen generates Grammar (roughly) corresponds to AST Nodes generates language for composed of Program Text parsed by Parser produces Parse Tree acts on Refactoring Engine 3
4 Grammar-Based Testing Produce many programs from grammar Used to test parser/compiler Grammar (roughly) corresponds to AST Nodes generates language for composed of Program Text parsed by Parser produces Parse Tree 4
5 Example: Fields int f; Field Declaration void m(int i) { f = i * f; Field References 5
6 Field Declaration Grammar FieldDeclaration ::= Modifier Type Identifier ; Modifer ::= public protected private ε Type ::= BasicType Identifier BasicType ::= int boolean Identifier ::= [a-za-z_]+ 6
7 Terminal Symbol Coverage The set of test inputs contains each terminal symbol FieldDeclaration ::= Modifier Type Identifier ; Modifer ::= public protected private ε Type ::= BasicType Identifier BasicType ::= int boolean Identifier ::= [a-za-z_]+ 7
8 Terminal Symbol Coverage The set of test inputs contains each terminal symbol FieldDeclaration ::= Modifier Type Identifier ; Modifer ::= public protected private ε Type ::= BasicType Identifier BasicType ::= int boolean Identifier ::= [a-za-z_]+ 8
9 Production Coverage The set of test inputs contains each production FieldDeclaration ::= Modifier Type Identifier ; Modifer ::= public protected private ε Type ::= BasicType Identifier BasicType ::= int boolean Identifier ::= [a-za-z_]+ 9
10 Derivation Coverage The set of test inputs contains every possible string Modifier Type Identifier public protected private ε int boolean + <id1>... <idn> <id1>... <idn> 10
11 Grammars and ASTs Grammar roughly corresponds to AST class structure Grammar (roughly) corresponds to AST Nodes language for composed of Program Text parsed by Parser produces Parse Tree 11
12 Grammars and ASTs Grammar (roughly) corresponds to AST Nodes FieldDeclaration ::= Modifier Type Identifier ; Modifer ::= public protected private ε Type ::= BasicType Identifier? BasicType ::= int boolean Identifier ::= [a-za-z_]+ 12
13 Grammars and ASTs Grammar (roughly) corresponds to AST Nodes FieldDeclaration ::= Modifier Type Identifier ; Modifer ::= public protected private ε Type ::= BasicType Identifier BasicType ::= int boolean Identifier ::= [a-za-z_]+ 13
14 Abstract Grammars Grammar used to generate AST class and composition structure FieldDeclaration ::= Modifier Type Identifier; Modifer; abstract Type; BasicType : Type; SimpleType : Type ::= Identifier; Identifier ::= <Name:String>; 14
15 What About Field References? Difficult to define grammar for all types of field references int f; void m(int i) { f = i * f; boolean f; class B { new A().f = true; int f; class B extends A { super.f = 0; int f; class B { int i = f; 15
16 What About Field References? Difficult to define grammar for all types of field references Want both read and write references Expressions depend on field name Productions spread across language grammar Multiple classes, inheritance relationships, containment, etc. Alternative: Extended Grammars 16
17 Generating ASTs ASTGen generators produce many AST Nodes Combining generators produces many parse trees ASTGen generates Grammar (roughly) corresponds to AST Nodes language for composed of Program Text parsed by Parser produces Parse Tree 17
18 Generators Normal Java Classes ModifierGenerator modgen = new ModifierGenerator( Modifier.PUBLIC, Modifier.PRIVATE); Produce values when prompted Modifier = modgen.next(); 18
19 Generator Characteristics Iterative Act like collection of AST fragments Internally, produce fragments lazily Composable Tester creates complex generators by reusing simpler parts Generators contain code to combine AST fragments Bounded-Exhaustive Achieves derivation coverage within bounds
20 Field Declaration Generator Iterates children and builds AST node Instances supplied by caller 20
21 Field Declaration Generator // define child generators ModifierGenerator modgen = new ModifierGenerator(Modifier.PUBLIC, Modifier.PRIVATE); IGenerator<Type> typegen = new Chain<Type>(BasicType.INT, new SimpleType("Object")); IdentifierGenerator idgen = new IdentifierGenerator("f", "g"); // compose generator FieldDeclarationGenerator fielddeclgen = new FieldDeclarationGenerator(); fielddeclgen.setmodifiergenerator(modgen); fielddeclgen.settypegenerator(typegen); fielddeclgen.setidentifiergenerator(idgen); // loop over values for(fielddeclaration fielddecl : fielddeclgen) { System.out.println(fieldDecl); 21
22 Complex Generator Double-class field reference generator Produces pairs of classes related by containment and inheritance. One class declares a field, and the other references the field in some way. int f; class B extends A { super.f = 0; boolean f; class B { new A().f = true; int f; class B { int i = f;... 22
23 Complex Generator Produces pairs of classes related by containment and inheritance. One class declares a field, and the other references the field in some way. int f; class B extends A { super.f = 0; boolean f; class B { new A().f = true; int f; class B { int i = f;... 23
24 Complex Generator Produces pairs of classes related by containment and inheritance. One class declares a field, and the other references the field in some way. int f; class B extends A { super.f = 0; boolean f; class B { new A().f = true; int f; class B { int i = f;... 24
25 Complex Generator Produces pairs of classes related by containment and inheritance. One class declares a field, and the other references the field in some way. int f; class B extends A { super.f = 0; boolean f; class B { new A().f = true; int f; class B { int i = f;... 25
26 Complex Generator Produces pairs of classes related by containment and inheritance. One class declares a field, and the other references the field in some way. int f; class B extends A { super.f = 0; boolean f; class B { new A().f = true; int f; class B { int i = f;... 26
27 Composing Generators Containment Generator class B { class B { class B {... Inheritance Generator class B { class B extends A {... Field Declaration Generator Field Reference Generator int f; boolean f; public char f;... f this.f this.a.f new A().f super.f... 27
28 Invalid Combinations Composition may be invalid class B { + class A extends B { class B { = class A extends B { class B { Three solutions Tester writes filter that verifies values Dependent generators super.f depends on int f; Delegate to compiler 28
29 Testing Refactoring Engines ASTGen generates Grammar (roughly) corresponds to AST Nodes generates language for composed of Program Text parsed by Parser produces Parse Tree acts on Refactoring Engine 29
30 Example: Encapsulate Field Replaces all field reads and writes with accesses through getter and setter methods int f; void m(int i) { f = i * f; Encapsulate Field private int f; 5 2 void m(int i) { setf(i * getf()); 4 3 void setf(int f) { this.f = f; 1 int getf() { return f; 30
31 Testing Encapsulate Field String fieldname = "f"; IGenerator<Program> testgen = new DoubleClassFieldReferenceGenerator(fieldName); for (Program in : testgen) { Refactoring r = new EncapsulateFieldRefactoring(); r.settargetfield(fieldname); Program out = r.performrefactoring(in); checkoracles(out);
32 Oracles Check that the program was refactored correctly Challenges Don't know expected output Semantic equivalence is undecidable Need to verify that correct structural changes were made 32
33 Oracles 33
34 Oracles DoesCrash: Engine throws exception DoesNotCompile: Refactored program does not compile WarningStatus: Engine can(not) perform refactoring Inverse: A refactoring is not undone by its inverse Custom Structural: Check for desired structural changes Differential: Perform refactoring in both Eclipse and NetBeans and compare result 34
35 Case Study Tested Eclipse and NetBeans Eight refactorings Target field, method, or class Wrote about 50 generators Reported 47 new bugs Compared effectiveness of oracles 35
36 Results 47 new bugs reported 21 in Eclipse: 20 confirmed by developers 26 in NetBeans: 17 confirmed, 3 fixed, 5 duplicates, 1 won't fix Found others, but did not report duplicate or fixed 36
37 Recap ASTGen generates Grammar (roughly) corresponds to AST Nodes generates language for composed of Program Text parsed by Parser produces Parse Tree acts on Refactoring Engine 37
Automated Testing of Refactoring Engines. Brett Daniel Danny Dig Kely Garcia Darko Marinov
Automated Testing of Refactoring Engines Brett Daniel Danny Dig Kely Garcia Darko Marinov ESEC/FSE 2007 Refactoring engines are tools that automate the application of refactorings 2 Eclipse and NetBeans
More informationAutomated Testing of Refactoring Engines
Automated Testing of Refactoring Engines Brett Daniel Danny Dig Kely Garcia Darko Marinov Department of Computer Science University of Illinois at Urbana-Champaign Urbana, IL 61801, USA {bdaniel3, dig,
More informationAutomated Testing of Refactoring Engines
Automated Testing of Refactoring Engines Brett Daniel Danny Dig Kely Garcia Darko Marinov Department of Computer Science University of Illinois at Urbana-Champaign Urbana, IL 61801, USA {bdaniel3, dig,
More informationLECTURE 3. Compiler Phases
LECTURE 3 Compiler Phases COMPILER PHASES Compilation of a program proceeds through a fixed series of phases. Each phase uses an (intermediate) form of the program produced by an earlier phase. Subsequent
More informationClasses and Objects 3/28/2017. How can multiple methods within a Java class read and write the same variable?
Peer Instruction 8 Classes and Objects How can multiple methods within a Java class read and write the same variable? A. Allow one method to reference a local variable of the other B. Declare a variable
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationREFACTORING is the process of changing a program
1 Automated Behavioral Testing of Refactoring Engines Gustavo Soares, Member, IEEE, Rohit Gheyi and Tiago Massoni Abstract Refactoring is a transformation that preserves the external behavior of a program
More informationProject Compiler. CS031 TA Help Session November 28, 2011
Project Compiler CS031 TA Help Session November 28, 2011 Motivation Generally, it s easier to program in higher-level languages than in assembly. Our goal is to automate the conversion from a higher-level
More informationEINDHOVEN UNIVERSITY OF TECHNOLOGY
EINDHOVEN UNIVERSITY OF TECHNOLOGY Department of Mathematics & Computer Science Exam Programming Methods, 2IP15, Wednesday 17 April 2013, 09:00 12:00 TU/e THIS IS THE EXAMINER S COPY WITH (POSSIBLY INCOMPLETE)
More informationCS 406: Syntax Directed Translation
CS 406: Syntax Directed Translation Stefan D. Bruda Winter 2015 SYNTAX DIRECTED TRANSLATION Syntax-directed translation the source language translation is completely driven by the parser The parsing process
More informationComputing Science 114 Solutions to Midterm Examination Tuesday October 19, In Questions 1 20, Circle EXACTLY ONE choice as the best answer
Computing Science 114 Solutions to Midterm Examination Tuesday October 19, 2004 INSTRUCTOR: I E LEONARD TIME: 50 MINUTES In Questions 1 20, Circle EXACTLY ONE choice as the best answer 1 [2 pts] What company
More informationCOMP 401 Spring 2013 Midterm 2
COMP 401 Spring 2013 Midterm 2 I have not received nor given any unauthorized assistance in completing this exam. Signature: Name: PID: Please be sure to put your PID at the top of each page. This page
More informationJava Object Oriented Design. CSC207 Fall 2014
Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code
More informationCSE450. Translation of Programming Languages. Lecture 11: Semantic Analysis: Types & Type Checking
CSE450 Translation of Programming Languages Lecture 11: Semantic Analysis: Types & Type Checking Structure Project 1 - of a Project 2 - Compiler Today! Project 3 - Source Language Lexical Analyzer Syntax
More informationCOURSE 2 DESIGN PATTERNS
COURSE 2 DESIGN PATTERNS CONTENT Fundamental principles of OOP Encapsulation Inheritance Abstractisation Polymorphism [Exception Handling] Fundamental Patterns Inheritance Delegation Interface Abstract
More informationObject Oriented Programming. Week 1 Part 3 Writing Java with Eclipse and JUnit
Object Oriented Programming Part 3 Writing Java with Eclipse and JUnit Today's Lecture Test Driven Development Review (TDD) Building up a class using TDD Adding a Class using Test Driven Development in
More informationGraphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub
Lebanese University Faculty of Science Computer Science BS Degree Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub 2 Crash Course in JAVA Classes A Java
More informationCOMP 401 Spring 2013 Midterm 2
COMP 401 Spring 2013 Midterm 2 I have not received nor given any unauthorized assistance in completing this exam. Signature: Name: PID: Please be sure to put your PID at the top of each page. This page
More informationStatic program checking and verification
Chair of Software Engineering Software Engineering Prof. Dr. Bertrand Meyer March 2007 June 2007 Slides: Based on KSE06 With kind permission of Peter Müller Static program checking and verification Correctness
More informationCSE115 Introduction to Computer Science I Coding Exercise #7 Retrospective Fall 2017
This week the main activity was a quiz activity, with a structure similar to our Friday lecture activities. The retrospective for the quiz is in Quiz-07- retrospective.pdf This retrospective explores the
More informationExam 1 Prep. Dr. Demetrios Glinos University of Central Florida. COP3330 Object Oriented Programming
Exam 1 Prep Dr. Demetrios Glinos University of Central Florida COP3330 Object Oriented Programming Progress Exam 1 is a Timed Webcourses Quiz You can find it from the "Assignments" link on Webcourses choose
More informationProgram Representations
Program Representations 17-654/17-765 Analysis of Software Artifacts Jonathan Aldrich Representing Programs To analyze software automatically, we must be able to represent it precisely Some representations
More informationRefactoring. Refactoring Techniques
Refactoring Refactoring Techniques Code Quality is Important! Refactoring is... A disciplined technique for restructuring an existing body of code, altering its internal structure without changing its
More informationGenerating Continuation Passing Style Code for the Co-op Language
Generating Continuation Passing Style Code for the Co-op Language Mark Laarakkers University of Twente Faculty: Computer Science Chair: Software engineering Graduation committee: dr.ing. C.M. Bockisch
More informationG51PGP Programming Paradigms. Lecture OO-4 Aggregation
G51PGP Programming Paradigms Lecture OO-4 Aggregation 1 The story so far We saw that C code can be converted into Java code Note real object oriented code though Hopefully shows you how much you already
More information4. Semantic Processing and Attributed Grammars
4. Semantic Processing and Attributed Grammars 1 Semantic Processing The parser checks only the syntactic correctness of a program Tasks of semantic processing Checking context conditions - Declaration
More informationIntroduction to Java
Introduction to Java Module 1: Getting started, Java Basics 22/01/2010 Prepared by Chris Panayiotou for EPL 233 1 Lab Objectives o Objective: Learn how to write, compile and execute HelloWorld.java Learn
More informationCSE 5317 Midterm Examination 4 March Solutions
CSE 5317 Midterm Examination 4 March 2010 1. / [20 pts] Solutions (parts a j; -1 point for each wrong answer, 0 points for each blank answer, 2 point for each correct answer. Therefore, the score for this
More informationLecture 10. Overriding & Casting About
Lecture 10 Overriding & Casting About Announcements for This Lecture Readings Sections 4.2, 4.3 Prelim, March 8 th 7:30-9:30 Material up to next Tuesday Sample prelims from past years on course web page
More informationDiscover how to get up and running with the Java Development Environment and with the Eclipse IDE to create Java programs.
Java SE11 Development Java is the most widely-used development language in the world today. It allows programmers to create objects that can interact with other objects to solve a problem. Explore Java
More informationCS 4120 Introduction to Compilers
CS 4120 Introduction to Compilers Andrew Myers Cornell University Lecture 12: Modules, Type representations, Visitors 1 Structuring Analysis Analysis is a traversal of AST Technique used in lecture: recursion
More informationChapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures
Chapter 5: Procedural abstraction Proper procedures and function procedures Abstraction in programming enables distinction: What a program unit does How a program unit works This enables separation of
More informationPrinciples of Object Oriented Programming. Lecture 4
Principles of Object Oriented Programming Lecture 4 Object-Oriented Programming There are several concepts underlying OOP: Abstract Types (Classes) Encapsulation (or Information Hiding) Polymorphism Inheritance
More informationJAVA MOCK TEST JAVA MOCK TEST II
http://www.tutorialspoint.com JAVA MOCK TEST Copyright tutorialspoint.com This section presents you various set of Mock Tests related to Java Framework. You can download these sample mock tests at your
More informationCOMP 202 Java in one week
COMP 202 Java in one week... Continued CONTENTS: Return to material from previous lecture At-home programming exercises Please Do Ask Questions It's perfectly normal not to understand everything Most of
More informationStatic Checking and Intermediate Code Generation Pat Morin COMP 3002
Static Checking and Intermediate Code Generation Pat Morin COMP 3002 Static Checking and Intermediate Code Generation Parser Static Checker Intermediate Code Generator Intermediate Code Generator Parse
More informationCSC 467 Lecture 13-14: Semantic Analysis
CSC 467 Lecture 13-14: Semantic Analysis Recall Parsing is to translate token stream to parse tree Today How to build trees: syntax direction translation How to add information to trees: semantic analysis
More informationAnatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?
Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator
More informationSmall changes to code to improve it
Small changes to code to improve it 1 Refactoring Defined A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior
More informationLecture Overview Code generation in milestone 2 o Code generation for array indexing o Some rational implementation Over Express Over o Creating
1 ecture Overview Code generation in milestone 2 o Code generation for array indexing o Some rational implementation Over Express Over o Creating records for arrays o Short-circuiting Or o If statement
More informationCSE 70 Final Exam Fall 2009
Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15
More informationScaling Testing of Refactoring Engines
1 Scaling Testing of Refactoring Engines Melina Mongiovi, Rohit Gheyi (advisor) Abstract Defining and implementing refactorings is a nontrivial task since it is difficult to define preconditions to guarantee
More informationSummary of the course lectures
Summary of the course lectures 1 Components and Interfaces Components: Compile-time: Packages, Classes, Methods, Run-time: Objects, Invocations, Interfaces: What the client needs to know: Syntactic and
More informationSemantic Analysis. Compiler Architecture
Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Source Compiler Architecture Front End Scanner (lexical tokens Parser (syntax Parse tree Semantic Analysis
More informationCmSc 150 Fundamentals of Computing I. Lesson 28: Introduction to Classes and Objects in Java. 1. Classes and Objects
CmSc 150 Fundamentals of Computing I Lesson 28: Introduction to Classes and Objects in Java 1. Classes and Objects True object-oriented programming is based on defining classes that represent objects with
More informationTutorial 02: Writing Source Code
Tutorial 02: Writing Source Code Contents: 1. Generating a constructor. 2. Generating getters and setters. 3. Renaming a method. 4. Extracting a superclass. 5. Using other refactor menu items. 6. Using
More informationLecture 8 CS 412/413 Spring '00 -- Andrew Myers 2. Lecture 8 CS 412/413 Spring '00 -- Andrew Myers 4
CS412/413 Introduction to Compilers and Translators Spring 00 Outline Typechecking Symbol tables Using symbol tables for analysis Lecture 8: Semantic Analysis and Symbol Tables Lecture 8 CS 412/413 Spring
More information(a) Write the signature (visibility, name, parameters, types) of the method(s) required
1. (6 pts) Is the final comprehensive? 1 2. (6 pts) Java has interfaces Comparable and Comparator. As discussed in class, what is the main advantage of Comparator? 3. (6 pts) We can use a comparator in
More informationAn Introduction to C++
An Introduction to C++ Introduction to C++ C++ classes C++ class details To create a complex type in C In the.h file Define structs to store data Declare function prototypes The.h file serves as the interface
More informationCREATED BY: Muhammad Bilal Arslan Ahmad Shaad. JAVA Chapter No 5. Instructor: Muhammad Naveed
CREATED BY: Muhammad Bilal Arslan Ahmad Shaad JAVA Chapter No 5 Instructor: Muhammad Naveed Muhammad Bilal Arslan Ahmad Shaad Chapter No 5 Object Oriented Programming Q: Explain subclass and inheritance?
More informationCompilers Project 3: Semantic Analyzer
Compilers Project 3: Semantic Analyzer CSE 40243 Due April 11, 2006 Updated March 14, 2006 Overview Your compiler is halfway done. It now can both recognize individual elements of the language (scan) and
More informationCourse introduction. Advanced Compiler Construction Michel Schinz
Course introduction Advanced Compiler Construction Michel Schinz 2016 02 25 General information Course goals The goal of this course is to teach you: how to compile high-level functional and objectoriented
More informationInf1-OP. Inf1-OP Exam Review. Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein. March 20, School of Informatics
Inf1-OP Inf1-OP Exam Review Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein School of Informatics March 20, 2017 Overview Overview of examinable material: Lectures Week 1
More informationCompositional Model Based Software Development
Compositional Model Based Software Development Prof. Dr. Bernhard Rumpe http://www.se-rwth.de/ Seite 2 Our Working Groups and Topics Automotive / Robotics Autonomous driving Functional architecture Variability
More informationChapter 15: Object Oriented Programming
Chapter 15: Object Oriented Programming Think Java: How to Think Like a Computer Scientist 5.1.2 by Allen B. Downey How do Software Developers use OOP? Defining classes to create objects UML diagrams to
More informationOverview of Eclipse Lectures. Module Road Map
Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring Lecture 2 5. Debugging 6. Testing with JUnit 7. Version Control with CVS 1 Module
More informationDesign Patterns. Visitor Pattern. Hans Vangheluwe and Alexandre Denault
Design Patterns Visitor Pattern Hans Vangheluwe and Alexandre Denault 3D Room Scene Graphs Universe Room 1 Room 2 Desk Bed Wardrobe Books Lamp Doors Drawers What if? I want to print out the content of
More informationHomework 3 Semantic Analysis. Remi Meier Compiler Design
Homework 3 Semantic Analysis Remi Meier Compiler Design 28.10.2015 1 Compiler phases Javali Compiler x86 Assembly IR IR Front-end Optimizations Back-end Machine independent Machine dependent Lexical Analysis
More informationChapter 5 Object-Oriented Programming
Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares
More informationObject Oriented Features. Inheritance. Inheritance. CS257 Computer Science I Kevin Sahr, PhD. Lecture 10: Inheritance
CS257 Computer Science I Kevin Sahr, PhD Lecture 10: Inheritance 1 Object Oriented Features For a programming language to be called object oriented it should support the following features: 1. objects:
More informationIntermediate Formats. for object oriented languages
Intermediate Formats for object oriented languages Program Representation Goals Enable Program Analysis and Transformation Semantic Checks, Correctness Checks, Optimizations Structure Translation to Machine
More informationC08: Inheritance and Polymorphism
CISC 3120 C08: Inheritance and Polymorphism Hui Chen Department of Computer & Information Science CUNY Brooklyn College 2/26/2018 CUNY Brooklyn College 1 Outline Recap and issues Project progress? Practice
More informationRefactoring. Section (JIA s) OTHER SOURCES
Refactoring Section 7.2.1 (JIA s) OTHER SOURCES Code Evolution Programs evolve and code is NOT STATIC Code duplication Outdated knowledge (now you know more) Rethink earlier decisions and rework portions
More informationObject-Relational Mapping
Object-Relational Mapping Object-Relational Mapping Software Architecture ORM Problems ORM Solutions Demo Software Architecture Part 1 Architecture Separation of Concerns A design principle that comprises
More informationCmpt 135 Assignment 2: Solutions and Marking Rubric Feb 22 nd 2016 Due: Mar 4th 11:59pm
Assignment 2 Solutions This document contains solutions to assignment 2. It is also the Marking Rubric for Assignment 2 used by the TA as a guideline. The TA also uses his own judgment and discretion during
More informationAutomated Behavioral Testing of Refactoring Engines
Automated Behavioral Testing of Refactoring Engines Gustavo Soares Federal University of Campina Grande, Campina Grande, PB, Brazil gsoares@dsc.ufcg.edu.br Abstract Refactoring is a transformation that
More informationType Checking. Outline. General properties of type systems. Types in programming languages. Notation for type rules.
Outline Type Checking General properties of type systems Types in programming languages Notation for type rules Logical rules of inference Common type rules 2 Static Checking Refers to the compile-time
More informationThe Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.
The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees
More informationA Solver-Independent Platform for Modeling Constrained Objects Involving Discrete and Continuous Domains
A Solver-Independent Platform for Modeling Constrained Objects Involving Discrete and Continuous Domains Ricardo Soto 1,2 and Laurent Granvilliers 1 1 LINA, CNRS, Université de Nantes, France 2 Escuela
More informationProf. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan
Language Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Semantic Analysis Compiler Architecture Front End Back End Source language Scanner (lexical analysis)
More informationThe Abstract Behavioral Specification Language
The Abstract Behavioral Specification Language Frank S. de Boer CWI frb@cwi.nl Scientific Meeting CWI, November 29, 2013 How It All Started? Simula (Ole Johan Dahl, Turing award 2001) Credo FP6 project
More informationCS-202 Introduction to Object Oriented Programming
CS-202 Introduction to Object Oriented Programming California State University, Los Angeles Computer Science Department Lecture III Inheritance and Polymorphism Introduction to Inheritance Introduction
More informationOutline. General properties of type systems. Types in programming languages. Notation for type rules. Common type rules. Logical rules of inference
Type Checking Outline General properties of type systems Types in programming languages Notation for type rules Logical rules of inference Common type rules 2 Static Checking Refers to the compile-time
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Inheritance Introduction Generalization/specialization Version of January 20, 2014 Abstract
More informationFINAL TERM EXAMINATION SPRING 2010 CS304- OBJECT ORIENTED PROGRAMMING
FINAL TERM EXAMINATION SPRING 2010 CS304- OBJECT ORIENTED PROGRAMMING Question No: 1 ( Marks: 1 ) - Please choose one Classes like TwoDimensionalShape and ThreeDimensionalShape would normally be concrete,
More informationMidterm Reminders. Design Pattern #6: Facade. General Idea. The Situation
Midterm Reminders The midterm is next Tuesday: March 4, 7-9 p.m. If you have a conflict and haven't told us, send e-mail TODAY! (conflicts with other Queens courses or exams) Location: Stirling Hall rooms
More informationCMPT 379 Compilers. Parse trees
CMPT 379 Compilers Anoop Sarkar http://www.cs.sfu.ca/~anoop 10/25/07 1 Parse trees Given an input program, we convert the text into a parse tree Moving to the backend of the compiler: we will produce intermediate
More informationCSCI312 Principles of Programming Languages!
CSCI312 Principles of Programming Languages!! Chapter 3 Regular Expression and Lexer Xu Liu Recap! Copyright 2006 The McGraw-Hill Companies, Inc. Clite: Lexical Syntax! Input: a stream of characters from
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationAssertions, pre/postconditions
Programming as a contract Assertions, pre/postconditions Assertions: Section 4.2 in Savitch (p. 239) Specifying what each method does q Specify it in a comment before method's header Precondition q What
More informationSoftware Architecture Bertrand Meyer. Lecture 3: Language constructs for modularity and information hiding
Software Architecture Bertrand Meyer Last update: 3 April 2007 ETH Zurich, March-July 2007 Lecture 3: Language constructs for modularity and information hiding Ilinca Ciupa Overview Review of modularity
More informationTesting Stragegies. Black Box Testing. Test case
References: Teach Yourself Object-Oriented Programming in 21 Days by A.Sintes, 1 Testing Stragegies Test case a set of inputs and expected outputs looks at specific piece of functionality to determine
More informationCS1004: Intro to CS in Java, Spring 2005
CS1004: Intro to CS in Java, Spring 2005 Lecture #23: OO Design, cont d. Janak J Parekh janak@cs.columbia.edu Administrivia HW#5 due Tuesday And if you re cheating on (or letting others see your) HW#5
More informationDomain-Specific Languages for Composable Editor Plugins
Domain-Specific Languages for Composable Editor Plugins LDTA 2009, York, UK Lennart Kats (me), Delft University of Technology Karl Trygve Kalleberg, University of Bergen Eelco Visser, Delft University
More informationCO Java SE 8: Fundamentals
CO-83527 Java SE 8: Fundamentals Summary Duration 5 Days Audience Application Developer, Developer, Project Manager, Systems Administrator, Technical Administrator, Technical Consultant and Web Administrator
More informationRefactoring. What to refactor Refactor to what How to conduct the refactoring. This website is also very informative
Refactoring What to refactor Refactor to what How to conduct the refactoring This website is also very informative https://refactoring.com/catalog/ Definitions Changing/improving the code structure w/o
More informationvoid printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) {
Refactoring References: Martin Fowler, Refactoring: Improving the Design of Existing Code; ; Bruce Wampler, The Essence of Object-Oriented Oriented Programming with Java and UML A recent OO technique that
More informationIntermediate Code Generation
Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target
More informationCOP4020 Programming Languages. Semantics Prof. Robert van Engelen
COP4020 Programming Languages Semantics Prof. Robert van Engelen Overview Static semantics Dynamic semantics Attribute grammars Abstract syntax trees COP4020 Spring 2011 2 Static Semantics Syntax concerns
More informationThe Compiler So Far. Lexical analysis Detects inputs with illegal tokens. Overview of Semantic Analysis
The Compiler So Far Overview of Semantic Analysis Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Lexical analysis Detects inputs with illegal tokens Parsing Detects inputs with ill-formed
More informationCS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question)
CS/B.TECH/CSE(New)/SEM-5/CS-504D/2013-14 2013 OBJECT ORIENTED PROGRAMMING Time Allotted : 3 Hours Full Marks : 70 The figures in the margin indicate full marks. Candidates are required to give their answers
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Inheritance Introduction Generalization/specialization Version of January 21, 2013 Abstract
More informationIntroduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt www.introsoftwaretesting.com OO Software and Designs Emphasis on modularity and reuse puts complexity
More informationObject-Oriented Programming. Lecture 2 Dr Piotr Cybula
Object-Oriented Programming Lecture 2 Dr Piotr Cybula Encapsulation : data protection code safety and independence better team support with the code separation without «giving
More informationWhat Every Xtext User Wished to Know Industry Experience of Implementing 80+ DSLs
What Every Xtext User Wished to Know Industry Experience of Implementing 80+ DSLs EclipseCon Europe 2016 2016-10-26 Roman Mitin Avaloq Evolution AG Allmendstrasse 140 8027 Zurich Switzerland T +41 58 316
More informationJava classes cannot extend multiple superclasses (unlike Python) but classes can implement multiple interfaces.
CSM 61B Abstract Classes & Interfaces Spring 2017 Week 5: February 13, 2017 1 An Appealing Appetizer 1.1 public interface Consumable { public void consume (); public abstract class Food implements Consumable
More informationIntroduction to OO Concepts
Introduction to OO Concepts Written by John Bell for CS 342, Fall 2018 Based on chapters 1, 2, and 10 of The Object-Oriented Thought Process by Matt Weisfeld, with additional material from UML Distilled
More informationIntermediate Formats. for object oriented languages
Intermediate Formats for object oriented languages Program Representation Goals Enable Program Analysis and Transformation Semantic Checks, Correctness Checks, Optimizations Structure Translation to Machine
More information2IP15 Programming Methods
Lecture 5: Iteration Abstraction 2IP15 Programming Methods From Small to Large Programs Tom Verhoeff Eindhoven University of Technology Department of Mathematics & Computer Science Software Engineering
More informationProgramming Languages & Translators PARSING. Baishakhi Ray. Fall These slides are motivated from Prof. Alex Aiken: Compilers (Stanford)
Programming Languages & Translators PARSING Baishakhi Ray Fall 2018 These slides are motivated from Prof. Alex Aiken: Compilers (Stanford) Languages and Automata Formal languages are very important in
More information