Graph-based analysis of JavaScript source code repositories

Size: px
Start display at page:

Download "Graph-based analysis of JavaScript source code repositories"

Transcription

1 Graph-based analysis of JavaScript source code repositories Gábor Szárnyas Graph Processing FOSDEM 2018

2 JAVASCRIPT Latest standard: ECMAScript 2017

3 STATIC ANALYSIS Static source code analysis is a software testing approach performed without compiling and executing the program itself. Static analysis Codacy, CodeClimate, etc. Development Version Control System Unit and integration tests Compilation

4 STATIC ANALYSIS TOOLS C o lint -> linters Java o FindBugs o PMD JavaScript o ESLint o Facebook Flow o Tern.js o TAJS

5 PERFORMANCE CONSIDERATIONS Checking global rules is computationally expensive Slow for large projects, difficult to integrate even to CI Unit tests Code analysis Workaround #1: no global rules (ESLint) Workaround #2: batching (e.g. 1/day) Unit tests Code analysis Workaround #3: custom algorithms (e.g. Flow)

6 PROJECT GOALS Goal Static analysis for JavaScript applications Design considerations Custom analysis rules o Both global and local o Extensible High-performance o real-time responses

7 ARCHITECTURE AND WORKFLOW

8 PROPOSED APPROACH Design considerations Custom analysis rules High-performance 1. Δ Approach Use a declarative query language Use incremental processing o in lieu of batch execution o file-granularity o maintain results analyzer

9 ARCHITECTURE Main.js Dependency.js Fiterator.js Parser.js ++ VCS Workspace discoverer +--- ChangeProcessor.js +--- CommandParser.js FileIterator.js +--- iterators DepCollector.js FileDiscoverer.js InitIterator.js +--- Main.js +--- whitepages +--- ConnectionMgr.js DependencyMgr.js. Abstract Syntax Tree Abstract Semantic Graph Analysis rules Analysis server Graph database <!> <?> Validation report <.> Client

10 CODE PROCESSING STEPS CODE forráskód code tokenizer tokenek tokens a sequence of statements: parser AST var foo = 1 / 0 scope analyzer ASG

11 CODE PROCESSING STEPS TOKENS code tokens: the shortest meaningful character sequence tokenizer tokens parser AST scope analyzer ASG var foo = 1 / 0 Token Token type var VAR (Keyword) foo IDENTIFIER (Ident) = ASSIGN (Punctuator) 1 NUMBER (NumericLiteral) / DIV (Punctuator) 0 NUMBER (NumericLiteral)

12 CODE PROCESSING STEPS AST Abstract Syntax Tree o Tree representation of o the grammar structure of tokenizer parser code o sequence of tokens. tokens AST items declaration declarators binding BindingIdentifier name = "foo" Module VariableDeclarationStatement VariableDeclaration VariableDeclarator init BinaryExpression operator = "Div" scope analyzer ASG left right LiteralNumericExpression value = 1.0 LiteralNumericExpression value = 0.0

13 CODE PROCESSING STEPS ASG Abstract Semantic Graph o Not necessarily a tree o Has scopes code & semantic info tokenizer o Cross edges parser tokens astnode GlobalScope Module children items items variables declaration declarators declaration declarators references binding declarations init binding Module init AST scope analyzer leftnode right left right ASG

14 AST VS. ASG var foo = 1 / 0 1 LOC -> 20+ nodes

15 PATTERN MATCHING Declarative graph patterns with Cypher VariableDeclarator binding BindingIdentifier name = "foo" be BinaryExpression operator = "Div" Match result MATCH (binding:bindingidentifier) LNExpression value = 1.0 right LNExpression value = 0.0 <-[:binding]-()--> (be:binaryexpression) -[:right]->(right:lnexpression) WHERE be.operator = 'Div' AND right.value = 0.0 RETURN binding

16 WORKFLOW Version control system source code tokenizer Developer s IDE tokens parser AST transformation graph database scope analyzer ASG traceability Git, Visual Studio Code ShapeSecurity Shift Java, Cypher Neo4j

17 USE CASES TYPE INFERENCING function foo(x, y) { return (x + y); } function bar(a, b) { return foo(b, a); } var quux = bar("goodbye", "hello"); Source:

18 USE CASES GLOBAL ANALYSIS Reachability: dead code detection async/await (ECMAScript 2017) potential division by zero

19 TECH DETAILS

20 IMPORTS AND EXPORTS

21 FIXPOINT ALGORITHMS Lots of propagation algorithms Run to completion scheduling o Mix of Java code and Cypher

22 EFFICIENT INITIALIZATION Initial build of the graph with Cypher was slow Generate CSV and bulk load Two files: nodes, relationships $NEO4J_HOME/bin/neo4j-admin import --database=db --nodes=nodes.csv --relationships=relationships.csv 10 speedup

23 REGULAR PATH QUERIES Transitive closure on certain combinations Workaround: o Start transaction o Add proxy relationships o Calculate transitive closure o Rollback transaction A B * opencypher proposal for path patterns (:A)-/[:R1 :R2 :R3]+/->(:B)

24 INCREMENTAL QUERIES

25 OPENCYPHER SYSTEMS The opencypher project aims to deliver a full and open specification of the industry s most widely adopted graph database query language: Cypher. (late 2015) Research prototypes o Graphflow (Univesity of Waterloo) o ingraph (incremental graph engine) incremental processing (Source: Keynote GraphConnect NYC 2017)

26 FOSDEM 2017: INGRAPH

27

28 STATE OF INGRAPH IN 2018 Cover a substantial fragment of opencypher o MATCH, OPTIONAL MATCH, WHERE o WITH, functions, aggregations o CREATE, DELETE Features on the roadmap o MERGE, REMOVE, SET o List comprehensions J. Marton, G. Szárnyas, D. Varró: Formalising opencypher Graph Queries in Relational Algebra, ADBIS, Springer, 2017 G. Szárnyas: Incremental View Maintenance for Property Graph Queries, SIGMOD SRC, 2018

29 RELATED PROJECTS

30 Dirk Mahler, Pushing the evolution of software analytics with graph technology, Neo4j blog, 2017 JQASSISTANT Code comprehension: software to graph

31 SLIZAA slizaa uses Neo4j/jQAssistant and provides a front end with a bunch of specific tools and viewers to provide an easy-to-use in-depth insight of your software's architecture. Gerd Wütherich, Core concepts, slizaa

32 SLIZAA: ECLIPSE IDE

33 SLIZAA: XTEXT OPENCYPHER Xtext-based grammar Used in the ingraph compiler Now has a scope analyzer Works in the Eclipse IDE and web UI

34 WRAPPING UP

35 PUBLICATIONS Dániel Stein: Graph-based source code analysis of JavaScript repositories, Master s thesis, 2016 Soma Lucz: Static analysis algorithms for JavaScript, Bachelor s thesis, 2017

36 CONCLUSION Some interesting analysis rules require a global view of the code Good use case for graph databases o Property graph o Cypher language Very good use case for incremental queries o Incrementality on multiple levels

37 RELATED RESOURCES Codemodel-Rifle ingraph engine Shape Security s Shift parser Slizaa opencypher Xtext github.com/ftsrg/codemodel-rifle github.com/ftsrg/ingraph github.com/shapesecurity/shift-java github.com/slizaa/slizaa-opencypher-xtext Thanks to Ádám Lippai, Soma Lucz, Dániel Stein, Dávid Honfi and the ingraph team.

38 Ω

39 VISUAL STUDIO CODE INTEGRATION Language Server Protocol (LSP) allows portable implementation

40 USE CASES Control Flow Graph o graph representation of o every possible statement sequence Basis for type inferencing and test generation statement statement if statement statement statement statement CFG error condition done

András Zsámboki, Gábor Szárnyas, József Marton

András Zsámboki, Gábor Szárnyas, József Marton opencypher TCK András Zsámboki, Gábor Szárnyas, József Marton TCK Overview opencypher TCK The project aims to deliver four types of artifacts: 1. Cypher Reference Documentation 2. Grammar specification

More information

Incremental Graph Queries for Cypher

Incremental Graph Queries for Cypher Incremental Graph Queries for Cypher Gábor Szárnyas, József Marton Budapest University of Technology and Economics McGill University, Montréal Budapest University of Technology and Economics Department

More information

What 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 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 information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages

More information

Anatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?

Anatomy 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 information

Comparison and merge use-cases from practice with EMF Compare

Comparison and merge use-cases from practice with EMF Compare Comparison and merge use-cases from practice with EMF Compare Laurent Delaigue Philip Langer EMF Compare Working with models Comparing text files EMF Compare Working with models Comparing models EMF Compare

More information

The Structure of a Compiler

The Structure of a Compiler The Structure of a Compiler A compiler performs two major tasks: Analysis of the source program being compiled Synthesis of a target program Almost all modern compilers are syntax-directed: The compilation

More information

Train Benchmark Case: an EMF-INCQUERY Solution

Train Benchmark Case: an EMF-INCQUERY Solution Train Benchmark Case: an EMF-INCQUERY Solution Gábor Szárnyas Márton Búr István Ráth Budapest University of Technology and Economics Department of Measurement and Information Systems H-1117 Magyar tudósok

More information

Undergraduate Compilers in a Day

Undergraduate Compilers in a Day Question of the Day Backpatching o.foo(); In Java, the address of foo() is often not known until runtime (due to dynamic class loading), so the method call requires a table lookup. After the first execution

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

LECTURE 3. Compiler Phases

LECTURE 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 information

The Compiler So Far. Lexical analysis Detects inputs with illegal tokens. Overview of Semantic Analysis

The 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 information

The role of semantic analysis in a compiler

The role of semantic analysis in a compiler Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

The Structure of a Syntax-Directed Compiler

The Structure of a Syntax-Directed Compiler Source Program (Character Stream) Scanner Tokens Parser Abstract Syntax Tree Type Checker (AST) Decorated AST Translator Intermediate Representation Symbol Tables Optimizer (IR) IR Code Generator Target

More information

Andy Clement, SpringSource/VMware SpringSource, A division of VMware. All rights reserved

Andy Clement, SpringSource/VMware SpringSource, A division of VMware. All rights reserved Mixed language project compilation in Eclipse: Java and Groovy Andy Clement, SpringSource/VMware 2010 SpringSource, A division of VMware. All rights reserved Agenda Me Groovy-Eclipse version 2 Quick review

More information

Academic research on graph processing: connecting recent findings to industrial technologies. Gábor Szárnyas opencypher NYC

Academic research on graph processing: connecting recent findings to industrial technologies. Gábor Szárnyas opencypher NYC Academic research on graph processing: connecting recent findings to industrial technologies Gábor Szárnyas opencypher Meetup @ NYC LINKED DATA BENCHMARK COUNCIL LDBC is a non-profit organization dedicated

More information

CIP Multiple Graphs. Presentation at ocig 8 on April 11, Stefan Plantikow, Andrés Taylor, Petra Selmer (Neo4j)

CIP Multiple Graphs. Presentation at ocig 8 on April 11, Stefan Plantikow, Andrés Taylor, Petra Selmer (Neo4j) CIP2017-06-18 Multiple Graphs Presentation at ocig 8 on April 11, 2018 Stefan Plantikow, Andrés Taylor, Petra Selmer (Neo4j) History Started working on multiple graphs early 2017 Parallel work in LDBC

More information

JavaScript CS 4640 Programming Languages for Web Applications

JavaScript CS 4640 Programming Languages for Web Applications JavaScript CS 4640 Programming Languages for Web Applications 1 How HTML, CSS, and JS Fit Together {css} javascript() Content layer The HTML gives the page structure and adds semantics Presentation

More information

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

Compiling and Interpreting Programming. Overview of Compilers and Interpreters Copyright R.A. van Engelen, FSU Department of Computer Science, 2000 Overview of Compilers and Interpreters Common compiler and interpreter configurations Virtual machines Integrated programming environments

More information

JavaScript CS 4640 Programming Languages for Web Applications

JavaScript CS 4640 Programming Languages for Web Applications JavaScript CS 4640 Programming Languages for Web Applications 1 How HTML, CSS, and JS Fit Together {css} javascript() Content layer The HTML gives the page structure and adds semantics Presentation

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design i About the Tutorial A compiler translates the codes written in one language to some other language without changing the meaning of the program. It is also expected that a compiler should make the target

More information

Project Compiler. CS031 TA Help Session November 28, 2011

Project 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 information

ECE251 Midterm practice questions, Fall 2010

ECE251 Midterm practice questions, Fall 2010 ECE251 Midterm practice questions, Fall 2010 Patrick Lam October 20, 2010 Bootstrapping In particular, say you have a compiler from C to Pascal which runs on x86, and you want to write a self-hosting Java

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

Semantic Analysis. Compiler Architecture

Semantic 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 information

A Simple Syntax-Directed Translator

A Simple Syntax-Directed Translator Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called

More information

CMPT 379 Compilers. Parse trees

CMPT 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 information

Lessons learned from building Eclipse-based add-ons for commercial modeling tools

Lessons learned from building Eclipse-based add-ons for commercial modeling tools Lessons learned from building Eclipse-based add-ons for commercial modeling tools (from a technology perspective) István Ráth Ákos Horváth EclipseCon France June 14 2018 MagicDraw A popular modeling tool

More information

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction to the different Programming Paradigm The different programming paradigm Why different paradigms? Introduction

More information

JavaScript: Sort of a Big Deal,

JavaScript: Sort of a Big Deal, : Sort of a Big Deal, But Sort of Quirky... March 20, 2017 Lisp in C s Clothing (Crockford, 2001) Dynamically Typed: no static type annotations or type checks. C-Like Syntax: curly-braces, for, semicolons,

More information

JASMINT: Language to User-Friendly AST with Emphasis on Transpilation. By: John Bradbury. Advisor: John Clements. Computer Science Department

JASMINT: Language to User-Friendly AST with Emphasis on Transpilation. By: John Bradbury. Advisor: John Clements. Computer Science Department JASMINT: Language to User-Friendly AST with Emphasis on Transpilation By: John Bradbury Advisor: John Clements Computer Science Department College of Engineering California Polytechnic State University,

More information

Ruby: Introduction, Basics

Ruby: Introduction, Basics Ruby: Introduction, Basics Computer Science and Engineering College of Engineering The Ohio State University Lecture 4 Ruby vs Java: Similarities Imperative and object-oriented Classes and instances (ie

More information

Multiple Graphs Updatable views & Choices

Multiple Graphs Updatable views & Choices CIP2017-06-18 and related Multiple Graphs Updatable views & Choices Presentation at ocim 4 on May 22-24, 2018 Stefan Plantikow, Andrés Taylor, Petra Selmer (Neo4j) History Started working on multiple graphs

More information

Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan

Prof. 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 information

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher COP4020 ming Languages Compilers and Interpreters Robert van Engelen & Chris Lacher Overview Common compiler and interpreter configurations Virtual machines Integrated development environments Compiler

More information

CSS JavaScript General Implementation Preloading Preloading in the Design Thinking Process Preloading in the Summary View Android UI Design Design

CSS JavaScript General Implementation Preloading Preloading in the Design Thinking Process Preloading in the Summary View Android UI Design Design Table of Contents Introduction Purpose Scope Overview Design Thinking Process Description Empathy Define Ideate Prototype Test Design Thinking Requirement Analysis Empathy Define Ideate Prototype Test

More information

Index. Symbols. /**, symbol, 73 >> symbol, 21

Index. Symbols. /**, symbol, 73 >> symbol, 21 17_Carlson_Index_Ads.qxd 1/12/05 1:14 PM Page 281 Index Symbols /**, 73 @ symbol, 73 >> symbol, 21 A Add JARs option, 89 additem() method, 65 agile development, 14 team ownership, 225-226 Agile Manifesto,

More information

Formats of Translated Programs

Formats of Translated Programs Formats of Translated Programs Compilers differ in the format of the target code they generate. Target formats may be categorized as assembly language, relocatable binary, or memory-image. Assembly Language

More information

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent

More information

SEMANTIC ANALYSIS TYPES AND DECLARATIONS

SEMANTIC ANALYSIS TYPES AND DECLARATIONS SEMANTIC ANALYSIS CS 403: Type Checking Stefan D. Bruda Winter 2015 Parsing only verifies that the program consists of tokens arranged in a syntactically valid combination now we move to check whether

More information

The Structure of a Syntax-Directed Compiler

The Structure of a Syntax-Directed Compiler Source Program (Character Stream) Scanner Tokens Parser Abstract Syntax Tree Type Checker (AST) Decorated AST Translator Intermediate Representation Symbol Tables Optimizer (IR) IR Code Generator Target

More information

Review Version Control Concepts

Review Version Control Concepts Review Version Control Concepts SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Managing change is a constant aspect of software development.

More information

A JavaScript Framework for Presentations and Animations on Computer Science

A JavaScript Framework for Presentations and Animations on Computer Science A JavaScript Framework for Presentations and Animations on Computer Science Laszlo Korte Bachelor Thesis Technical Aspects of Multimodal Systems Department of Informatics University of Hamburg 1 / 76 Outline

More information

CS153: Compilers Lecture 15: Local Optimization

CS153: Compilers Lecture 15: Local Optimization CS153: Compilers Lecture 15: Local Optimization Stephen Chong https://www.seas.harvard.edu/courses/cs153 Announcements Project 4 out Due Thursday Oct 25 (2 days) Project 5 out Due Tuesday Nov 13 (21 days)

More information

Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology

Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False

More information

Enterprise Architect Training Courses

Enterprise Architect Training Courses On-site training from as little as 135 per delegate per day! Enterprise Architect Training Courses Tassc trainers are expert practitioners in Enterprise Architect with over 10 years experience in object

More information

Configuration Management

Configuration Management Configuration Management A True Life Story October 16, 2018 Page 1 Configuration Management: A True Life Story John E. Picozzi Senior Drupal Architect Drupal Providence 401-228-7660 oomphinc.com 72 Clifford

More information

Introduction to Java

Introduction 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 information

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

programming 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 information

CST-402(T): Language Processors

CST-402(T): Language Processors CST-402(T): Language Processors Course Outcomes: On successful completion of the course, students will be able to: 1. Exhibit role of various phases of compilation, with understanding of types of grammars

More information

Eclipse and Java 8. Daniel Megert Platform and JDT Lead Eclipse PMC Member IBM Rational Zurich Research Lab

Eclipse and Java 8. Daniel Megert Platform and JDT Lead Eclipse PMC Member IBM Rational Zurich Research Lab Eclipse and Java 8 Daniel Megert Platform and JDT Lead Eclipse PMC Member IBM Rational Zurich Research Lab Eclipse and Java 8 New Java language features Eclipse features for Java 8 (demo) Behind the scenes

More information

Client-Side Web Technologies. JavaScript Part I

Client-Side Web Technologies. JavaScript Part I Client-Side Web Technologies JavaScript Part I JavaScript First appeared in 1996 in Netscape Navigator Main purpose was to handle input validation that was currently being done server-side Now a powerful

More information

CA Compiler Construction

CA Compiler Construction CA4003 - Compiler Construction Semantic Analysis David Sinclair Semantic Actions A compiler has to do more than just recognise if a sequence of characters forms a valid sentence in the language. It must

More information

What do Compilers Produce?

What do Compilers Produce? What do Compilers Produce? Pure Machine Code Compilers may generate code for a particular machine, not assuming any operating system or library routines. This is pure code because it includes nothing beyond

More information

Jianning Yue Wookyun Kho Young Jin Yoon. AGL : Animation applet Generation Language

Jianning Yue Wookyun Kho Young Jin Yoon. AGL : Animation applet Generation Language Jianning Yue Wookyun Kho Young Jin Yoon Contents IPL? Advantages Syntax Development Examples Lessons Learned IPL? IPL is not Image Processing Language Now this is an Animation applet Generation Language!

More information

Microsoft. Inside Microsoft. SharePoint Ted Pattison. Andrew Connell. Scot Hillier. David Mann

Microsoft. Inside Microsoft. SharePoint Ted Pattison. Andrew Connell. Scot Hillier. David Mann Microsoft Inside Microsoft SharePoint 2010 Ted Pattison Andrew Connell Scot Hillier David Mann ble of Contents Foreword Acknowledgments Introduction xv xvii xix 1 SharePoint 2010 Developer Roadmap 1 SharePoint

More information

Frontend UI Training. Whats App :

Frontend UI Training. Whats App : Frontend UI Training Whats App : + 916 667 2961 trainer.subbu@gmail.com What Includes? 1. HTML 5 2. CSS 3 3. SASS 4. JavaScript 5. ES 6/7 6. jquery 7. Bootstrap 8. AJAX / JSON 9. Angular JS 1x 10. Node

More information

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to

More information

Semantic Analysis. Lecture 9. February 7, 2018

Semantic Analysis. Lecture 9. February 7, 2018 Semantic Analysis Lecture 9 February 7, 2018 Midterm 1 Compiler Stages 12 / 14 COOL Programming 10 / 12 Regular Languages 26 / 30 Context-free Languages 17 / 21 Parsing 20 / 23 Extra Credit 4 / 6 Average

More information

In One Slide. Outline. LR Parsing. Table Construction

In One Slide. Outline. LR Parsing. Table Construction LR Parsing Table Construction #1 In One Slide An LR(1) parsing table can be constructed automatically from a CFG. An LR(1) item is a pair made up of a production and a lookahead token; it represents a

More information

Code Structure Visualization

Code Structure Visualization TECHNISCHE UNIVERSITEIT EINDHOVEN Department of Mathematics and Computer Science MASTER S THESIS Code Structure Visualization by G.L.P.M. Lommerse Supervisor: Dr. Ir. A.C. Telea (TUE) Eindhoven, August

More information

Fall Compiler Principles Lecture 4: Parsing part 3. Roman Manevich Ben-Gurion University of the Negev

Fall Compiler Principles Lecture 4: Parsing part 3. Roman Manevich Ben-Gurion University of the Negev Fall 2016-2017 Compiler Principles Lecture 4: Parsing part 3 Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation Scanning

More information

CodeCompass an Open Software Comprehension Framework

CodeCompass an Open Software Comprehension Framework CodeCompass an Open Software Comprehension Framework Zoltán Porkoláb 1,2, Dániel Krupp 1, Tibor Brunner 2, Márton Csordás 2 https://github.com/ericsson/codecompass Motto: If it was hard to write it should

More information

ONLINE VIRTUAL TOUR CREATOR

ONLINE VIRTUAL TOUR CREATOR P a g e 1 ONLINE VIRTUAL TOUR CREATOR SCHOOL OF SCIENCE AND COMPUTER ENGINEERING CSCI 6838 TEAM 1 SPRING 2017 INSTRUCTOR DR. SADEGH DAVARI MENTOR MR. CLAUS NILSSON SUBMITTED BY: SUPRIYA HUBLI SOWMYA KONGARA

More information

Agenda. Previously. Tentative syllabus. Fall Compiler Principles Lecture 5: Parsing part 4 12/2/2015. Roman Manevich Ben-Gurion University

Agenda. Previously. Tentative syllabus. Fall Compiler Principles Lecture 5: Parsing part 4 12/2/2015. Roman Manevich Ben-Gurion University Fall 2015-2016 Compiler Principles ecture 5: Parsing part 4 Tentative syllabus Front End Intermediate epresentation Optimizations Code Generation Scanning Operational Semantics Dataflow Analysis egister

More information

Reading Assignment. Scanner. Read Chapter 3 of Crafting a Compiler.

Reading Assignment. Scanner. Read Chapter 3 of Crafting a Compiler. Reading Assignment Source Program (Character Stream) Scanner Tokens Parser Abstract Syntax Tree (AST) Type Checker Decorated AST Read Chapter 3 of Crafting a Compiler. Translator Intermediate Representation

More information

Semantic actions for declarations and expressions

Semantic actions for declarations and expressions Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate

More information

Compilation 2012 Context-Free Languages Parsers and Scanners. Jan Midtgaard Michael I. Schwartzbach Aarhus University

Compilation 2012 Context-Free Languages Parsers and Scanners. Jan Midtgaard Michael I. Schwartzbach Aarhus University Compilation 2012 Parsers and Scanners Jan Midtgaard Michael I. Schwartzbach Aarhus University Context-Free Grammars Example: sentence subject verb object subject person person John Joe Zacharias verb asked

More information

Parallel Programming and Optimization with GCC. Diego Novillo

Parallel Programming and Optimization with GCC. Diego Novillo Parallel Programming and Optimization with GCC Diego Novillo dnovillo@google.com Outline Parallelism models Architectural overview Parallelism features in GCC Optimizing large programs Whole program mode

More information

Compositional Model Based Software Development

Compositional 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 information

SAP Agile Data Preparation Simplify the Way You Shape Data PUBLIC

SAP Agile Data Preparation Simplify the Way You Shape Data PUBLIC SAP Agile Data Preparation Simplify the Way You Shape Data Introduction SAP Agile Data Preparation Overview Video SAP Agile Data Preparation is a self-service data preparation application providing data

More information

Compiler Theory. (Semantic Analysis and Run-Time Environments)

Compiler Theory. (Semantic Analysis and Run-Time Environments) Compiler Theory (Semantic Analysis and Run-Time Environments) 005 Semantic Actions A compiler must do more than recognise whether a sentence belongs to the language of a grammar it must do something useful

More information

A simple syntax-directed

A 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 information

COMP-520 GoLite Tutorial

COMP-520 GoLite Tutorial COMP-520 GoLite Tutorial Alexander Krolik Sable Lab McGill University Winter 2019 Plan Target languages Language constructs, emphasis on special cases General execution semantics Declarations Types Statements

More information

Powerful and Efficient Bulk Shortest-Path Queries: Cypher language extension & Giraph implementation

Powerful and Efficient Bulk Shortest-Path Queries: Cypher language extension & Giraph implementation Powerful and Efficient Bulk Shortest-Path Queries: Cypher language extension & Giraph implementation Peter Rutgers, Claudio Martella, Spyros Voulgaris, Peter Boncz VU University Amsterdam Spyros Voulgaris

More information

PyROOT: Seamless Melting of C++ and Python. Pere MATO, Danilo PIPARO on behalf of the ROOT Team

PyROOT: Seamless Melting of C++ and Python. Pere MATO, Danilo PIPARO on behalf of the ROOT Team PyROOT: Seamless Melting of C++ and Python Pere MATO, Danilo PIPARO on behalf of the ROOT Team ROOT At the root of the experiments, project started in 1995 Open Source project (LGPL2) mainly written in

More information

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL:

Course Details. Skills Gained. Who Can Benefit. Prerequisites. View Online URL: Specialized - Mastering jquery Code: Lengt h: URL: TT4665 4 days View Online Mastering jquery provides an introduction to and experience working with the JavaScript programming language in the environment

More information

Test I Solutions MASSACHUSETTS INSTITUTE OF TECHNOLOGY Spring Department of Electrical Engineering and Computer Science

Test I Solutions MASSACHUSETTS INSTITUTE OF TECHNOLOGY Spring Department of Electrical Engineering and Computer Science Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.035 Spring 2013 Test I Solutions Mean 83 Median 87 Std. dev 13.8203 14 12 10 8 6 4 2 0 0 10 20 30 40 50

More information

Extracting knowledge from Ontology using Jena for Semantic Web

Extracting knowledge from Ontology using Jena for Semantic Web Extracting knowledge from Ontology using Jena for Semantic Web Ayesha Ameen I.T Department Deccan College of Engineering and Technology Hyderabad A.P, India ameenayesha@gmail.com Khaleel Ur Rahman Khan

More information

Fall Compiler Principles Lecture 5: Parsing part 4. Roman Manevich Ben-Gurion University

Fall Compiler Principles Lecture 5: Parsing part 4. Roman Manevich Ben-Gurion University Fall 2014-2015 Compiler Principles Lecture 5: Parsing part 4 Roman Manevich Ben-Gurion University Tentative syllabus Front End Intermediate Representation Optimizations Code Generation Scanning Lowering

More information

Semantic actions for declarations and expressions

Semantic actions for declarations and expressions Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate

More information

Comprehensive AngularJS Programming (5 Days)

Comprehensive AngularJS Programming (5 Days) www.peaklearningllc.com S103 Comprehensive AngularJS Programming (5 Days) The AngularJS framework augments applications with the "model-view-controller" pattern which makes applications easier to develop

More information

CS5363 Final Review. cs5363 1

CS5363 Final Review. cs5363 1 CS5363 Final Review cs5363 1 Programming language implementation Programming languages Tools for describing data and algorithms Instructing machines what to do Communicate between computers and programmers

More information

Inside A Compiler. Jonathan Worthington

Inside A Compiler. Jonathan Worthington Inside A Compiler Jonathan Worthington Perl 6 Mutable grammar means we really need to parse Perl 6 using a Perl 6 grammar grammar engine Pluggable object model need meta-object programming support Runs

More information

Cross-Platform Parallels: Understanding SharePoint (Online) Through Notes-colored glasses

Cross-Platform Parallels: Understanding SharePoint (Online) Through Notes-colored glasses Cross-Platform Parallels: Understanding SharePoint (Online) Through Notes-colored glasses Presented by Ben Menesi Speaker Head of Product at Ytria IBM Notes Domino Admin & Dev. for the past 10 years Actually

More information

Crafting a Compiler with C (II) Compiler V. S. Interpreter

Crafting a Compiler with C (II) Compiler V. S. Interpreter Crafting a Compiler with C (II) 資科系 林偉川 Compiler V S Interpreter Compilation - Translate high-level program to machine code Lexical Analyzer, Syntax Analyzer, Intermediate code generator(semantics Analyzer),

More information

Semantic actions for declarations and expressions. Monday, September 28, 15

Semantic actions for declarations and expressions. Monday, September 28, 15 Semantic actions for declarations and expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate

More information

M : an Open Model for Measuring Code Artifacts

M : an Open Model for Measuring Code Artifacts Software Analysis And Transformation 3 M : an Open Model for Measuring Code Artifacts Anastasia Izmaylova, Paul Klint, Ashim Shahi, Jurgen Vinju SWAT Centrum Wiskunde & Informatica (CWI) OSSMETER: FP7

More information

About Codefrux While the current trends around the world are based on the internet, mobile and its applications, we try to make the most out of it. As for us, we are a well established IT professionals

More information

WebStorm, intelligent IDE for JavaScript development

WebStorm, intelligent IDE for JavaScript development , intelligent IDE for JavaScript development JetBrains is a powerful Integrated development environment (IDE) built specifically for JavaScript developers. How does match up against competing tools? Product

More information

University of Marburg Department of Mathematics & Computer Science. Bachelor Thesis. Variability-Aware Interpretation. Author: Jonas Pusch

University of Marburg Department of Mathematics & Computer Science. Bachelor Thesis. Variability-Aware Interpretation. Author: Jonas Pusch University of Marburg Department of Mathematics & Computer Science Bachelor Thesis Variability-Aware Interpretation Author: Jonas Pusch October 11, 2012 Advisors: Prof. Dr. Klaus Ostermann University of

More information

MQ Explorer for Power Users

MQ Explorer for Power Users MQ Explorer for Power Users An interactive demo Jeff Lowrey, IBM Agenda This is mostly a demonstration presentation Features of MQ Explorer you might not know Using MQ Explorer from a standalone Eclipse

More information

HUG038. Change Management User Guide. Holocentric User Guide

HUG038. Change Management User Guide. Holocentric User Guide HUG038 Change Management User Guide Holocentric User Guide Document Control Document Status Item Title Document Type Information Change Management User Guide (HUG038) Holocentric User Guide Issued Version

More information

Outline. Lecture 17: Putting it all together. Example (input program) How to make the computer understand? Example (Output assembly code) Fall 2002

Outline. Lecture 17: Putting it all together. Example (input program) How to make the computer understand? Example (Output assembly code) Fall 2002 Outline 5 Fall 2002 Lecture 17: Putting it all together From parsing to code generation Saman Amarasinghe 2 6.035 MIT Fall 1998 How to make the computer understand? Write a program using a programming

More information

CSE 401 Midterm Exam Sample Solution 11/4/11

CSE 401 Midterm Exam Sample Solution 11/4/11 Question 1. (12 points, 2 each) The front end of a compiler consists of three parts: scanner, parser, and (static) semantics. Collectively these need to analyze the input program and decide if it is correctly

More information

CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square)

CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) CS 4240: Compilers and Interpreters Project Phase 1: Scanner and Parser Due Date: October 4 th 2015 (11:59 pm) (via T-square) Introduction This semester, through a project split into 3 phases, we are going

More information

BEAMJIT, a Maze of Twisty Little Traces

BEAMJIT, a Maze of Twisty Little Traces BEAMJIT, a Maze of Twisty Little Traces A walk-through of the prototype just-in-time (JIT) compiler for Erlang. Frej Drejhammar 130613 Who am I? Senior researcher at the Swedish Institute

More information

JSX in Depth. Why JSX? The Transform. JSX is a JavaScript XML syntax transform recommended for use with React.

JSX in Depth. Why JSX? The Transform. JSX is a JavaScript XML syntax transform recommended for use with React. 1 of 7 QUICK START Getting Started Tutorial GUIDES Why? Displaying Data JSX in Depth JSX Gotchas Interactivity and Dynamic UIs Multiple Components Reusable Components Forms Working With the Browser More

More information

HPE Security Fortify Software

HPE Security Fortify Software HPE Security Fortify Software What s New in HPE Security Fortify Software 17.20 November 2017 This release of HPE Security Fortify Software includes the following new functions and features. HPE Security

More information

Technology Background Development environment, Skeleton and Libraries

Technology Background Development environment, Skeleton and Libraries Technology Background Development environment, Skeleton and Libraries Christian Kroiß (based on slides by Dr. Andreas Schroeder) 18.04.2013 Christian Kroiß Outline Lecture 1 I. Eclipse II. Redmine, Jenkins,

More information