Graph-based analysis of JavaScript source code repositories
|
|
- Willis Gray
- 6 years ago
- Views:
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
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 informationIncremental 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 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 informationSemantic 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 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 informationComparison 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 informationThe 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 informationTrain 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 informationUndergraduate 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 informationSemantic 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 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 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 informationThe 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 informationThe 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 informationAndy 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 informationAcademic 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 informationCIP 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 informationJavaScript 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 informationCompiling 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 informationJavaScript 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 informationAbout 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 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 informationECE251 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 informationFull 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 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 informationA Simple Syntax-Directed Translator
Chapter 2 A Simple Syntax-Directed Translator 1-1 Introduction The analysis phase of a compiler breaks up a source program into constituent pieces and produces an internal representation for it, called
More 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 informationLessons 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 informationLecture 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 informationJavaScript: 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 informationJASMINT: 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 informationRuby: 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 informationMultiple 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 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 informationCOP4020 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 informationCSS 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 informationIndex. 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 informationFormats 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 informationCSE 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 informationSEMANTIC 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 informationThe 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 informationReview 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 informationA 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 informationCS153: 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 informationFaculty 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 informationEnterprise 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 informationConfiguration 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 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 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 informationCST-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 informationEclipse 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 informationClient-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 informationCA 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 informationWhat 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 informationJianning 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 informationMicrosoft. 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 informationFrontend 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 information9/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 informationSemantic 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 informationIn 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 informationCode 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 informationFall Compiler Principles Lecture 4: Parsing part 3. Roman Manevich Ben-Gurion University of the Negev
Fall 2016-2017 Compiler Principles Lecture 4: Parsing part 3 Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation Scanning
More informationCodeCompass 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 informationONLINE 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 informationAgenda. Previously. Tentative syllabus. Fall Compiler Principles Lecture 5: Parsing part 4 12/2/2015. Roman Manevich Ben-Gurion University
Fall 2015-2016 Compiler Principles ecture 5: Parsing part 4 Tentative syllabus Front End Intermediate epresentation Optimizations Code Generation Scanning Operational Semantics Dataflow Analysis egister
More informationReading 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 informationSemantic 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 informationCompilation 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 informationParallel 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 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 informationSAP 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 informationCompiler 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 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 informationCOMP-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 informationPowerful 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 informationPyROOT: 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 informationCourse 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 informationTest 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 informationExtracting 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 informationFall Compiler Principles Lecture 5: Parsing part 4. Roman Manevich Ben-Gurion University
Fall 2014-2015 Compiler Principles Lecture 5: Parsing part 4 Roman Manevich Ben-Gurion University Tentative syllabus Front End Intermediate Representation Optimizations Code Generation Scanning Lowering
More informationSemantic 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 informationComprehensive 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 informationCS5363 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 informationInside 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 informationCross-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 informationCrafting 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 informationSemantic 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 informationM : 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 informationAbout 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 informationWebStorm, 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 informationUniversity 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 informationMQ 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 informationHUG038. 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 informationOutline. 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 informationCSE 401 Midterm Exam Sample Solution 11/4/11
Question 1. (12 points, 2 each) The front end of a compiler consists of three parts: scanner, parser, and (static) semantics. Collectively these need to analyze the input program and decide if it is correctly
More informationCS 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 informationBEAMJIT, 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 informationJSX 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 informationHPE 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 informationTechnology 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