The CILY Programming Language Exactly What the World Needed.

Slides:



Advertisements
Similar presentations
CPSC 388 – Compiler Design and Construction
Advertisements

Introduction To Compilers And Phase 1 Inside a compiler. Inside a C-- compiler. The compilation process. Example C-- code. Extended Backus-Naur.
1 Mooly Sagiv and Greta Yorsh School of Computer Science Tel-Aviv University Modern Compiler Design.
Java Exceptions. Types of exceptions  Checked exceptions: A checked exception is an exception that is typically a user error or a problem that cannot.
Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
SableCC SableCC is developed by professors and graduate students at McGill University and is open source (licensed under the Apache License, Version 2.0)‏
CS 4800 By Brandon Andrews.  Specifications  Goals  Applications  Design Steps  Testing.
Nov 10, Fall 2006IAT 8001 Debugging. Nov 10, Fall 2006IAT 8002 How do I know my program is broken?  Compiler Errors –easy to fix!  Runtime Exceptions.
BROOM: A Matrix Language Chris Tobin Michael Weiss Gabe Glaser Brian Pellegrini.
WPSM Programming Language A simple language that transform simple data structure into complex xML format Wai Y. Wong Peter Chen Seema Gupta Miqdad Mohammed.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L13 (Chapter 21) Generics.
Exceptions in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Scott Grissom, copyright 2004Ch 3: Java Features Slide 1 Why Java? It is object-oriented provides many ready to use classes platform independent modern.
Maya: Multiple-Dispatch Syntax Extension in Java Jason Baker and Wilson C. Hsieh University of Utah.
Transformation of Java Card into Diet Java Semester Project Presentation Erich Laube.
Building An Interpreter After having done all of the analysis, it’s possible to run the program directly rather than compile it … and it may be worth it.
EMDL Extended Motion Description Language. EMDL vs. MDL.
Cs164 Prof. Bodik, Fall Symbol Tables and Static Checks Lecture 14.
Netprog 2002 Java Intro1 Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network.
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
Python Mini-Course University of Oklahoma Department of Psychology Day 1 – Lesson 2 Fundamentals of Programming Languages 4/5/09 Python Mini-Course: Day.
Chapter 6Java: an Introduction to Computer Science & Programming - Walter Savitch 1 l Array Basics l Arrays in Classes and Methods l Programming with Arrays.
Week 14 - Monday.  What did we talk about last time?  Image manipulation  Inheritance.
The foreach LooptMyn1 The foreach Loop The foreach loop gives an easy way to iterate over arrays. foreach works only on arrays, and will issue an error.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Java Programming, 3e Concepts and Techniques Chapter 2 - Part 2 Creating a Java Application and Applet.
The NetBeans IDE CSIS 3701: Advanced Object Oriented Programming.
Compilation (Chapter 3) 1 Course Overview PART I: overview material 1Introduction 2Language processors (tombstone diagrams, bootstrapping) 3Architecture.
COP4020 Programming Languages
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
{ Graphite Grigory Arashkovich, Anuj Khanna, Anirban Gangopadhyay, Michael D’Egidio, Laura Willson.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Java Introduction to JNI Prepared by Humaira Siddiqui.
Geoff Holmes and Bernhard Pfahringer COMP206-08S General Programming 2.
Cross Language Clone Analysis Team 2 October 27, 2010.
Introduction to java Prepared By:-Pragnesh Patel Lect. In Computer Dept. NSIT,Jetalpur 1.
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
1 Debugging. 2 A Lot of Time is Spent Debugging Programs Debugging. Cyclic process of editing, compiling, and fixing errors. n Always a logical explanation.
1 Introduction to Java. 2 What is Java? A programming language. A platform –A virtual machine (JVM) definition. –Runtime environments in diverse hardware.
Exception Handling Unit-6. Introduction An exception is a problem that arises during the execution of a program. An exception can occur for many different.
Working with arrays (we will use an array of double as example)
BUILD ON THE POLYGLOT COMPILER FRAMEWORK MIHAL BRUMBULLI 7th Workshop “SEERE” Montenegro-Risan 9-14 September 2007 SimJ Programming Language.
Compiler Construction Dr. Noam Rinetzky and Orr Tamir School of Computer Science Tel Aviv University
1 Languages and Compilers (SProg og Oversættere) Bent Thomsen Department of Computer Science Aalborg University With acknowledgement to Norm Hutchinson.
MATLIP: MATLAB-Like Language for Image Processing Pin-Chin Huang Shariar Zaber Kazi
Mixing integer and floating point numbers in an arithmetic operation.
PLT Final Project---COLOGO Lixing Dong, Zhou Ma, Chao Song, Siyuan Lu, Dongyang Jiang.
1 Original Source : and Problem and Problem Solving.ppt.
CS536 Semantic Analysis Introduction with Emphasis on Name Analysis 1.
Sheet 3 HANDLING EXCEPTIONS Advanced Programming using Java By Nora Alaqeel.
Using the while-statement to process data files. General procedure to access a data file General procedure in computer programming to read data from a.
EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from
The assignment expressions. The assignment operator in an assignment statement We have seen the assignment statement: Effect: var = expr; Stores the value.
Chapter 4 Generic Vector Class. Agenda A systemic problem with Vector of Object – Several approaches at a solution – Generic structures Converting classes.
David LOU – Project Manager Markus SCHANTA – Language Guru Long CHEN – System Architect Xiaolong JIANG – System Integrator Jingbo YANG – Tester & Validator.
Cross Language Clone Analysis Team 2 November 10, 2010.
Cross Language Clone Analysis Team 2 February 3, 2011.
Software Development Introduction
Objective You will be able to define the basic concepts of object-oriented programming with emphasis on objects and classes by taking notes, seeing examples,
Creating Web Services Presented by Ashraf Memon Presented by Ashraf Memon.
CSCI 115 Computer Programming Overview. Computer Software System Software –Operating systems –Utility programs –Language compilers Application Software.
LECTURE 3 Compiler Phases. COMPILER PHASES Compilation of a program proceeds through a fixed series of phases.  Each phase uses an (intermediate) form.
The ++ and -- expressions. The ++ and -- operators You guessed it: The ++ and -- are operators that return a value.
Throw, Throws & Try-Catch Statements Explanations and Pictures from: Reference:
Spring 2006 Special Topics in Computer Engineering: Java Intro 1 Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J.
Compiler Design 22. ANTLR AST Traversal (AST as Input, AST Grammars)
CSE401 Introduction to Compiler Construction
Exception Handling in Java
The for-statement.
Presentation transcript:

The CILY Programming Language Exactly What the World Needed

Why Use CILY? One can perform basic to advanced image manipulation operations using an iterative language (no GUI needed) One can perform basic to advanced image manipulation operations using an iterative language (no GUI needed) Very safe, robust and easy to use Very safe, robust and easy to use It’s works cross-platform It’s works cross-platform Unlike Photoshop and Dreamweaver, CILY is FREE! Unlike Photoshop and Dreamweaver, CILY is FREE!

Basic CILY Features Loading and saving images (or entire directory of images) for manipulation Loading and saving images (or entire directory of images) for manipulation Selecting rectangle or oval of pixels Selecting rectangle or oval of pixels Resizing, rotating, flipping, blurring, sharpening, brightening, cropping, inverting, edge detecting, and converting to grayscale Resizing, rotating, flipping, blurring, sharpening, brightening, cropping, inverting, edge detecting, and converting to grayscale

More Advanced Features Getting and setting pixel values of an image Getting and setting pixel values of an image Magic wand selection of pixels Magic wand selection of pixels Creating a web album from a directory of images Creating a web album from a directory of images

CILY Example: Batch Image Sharpening CILY source code is as follows: CILY source code is as follows: main() { array Image[] imgs = OpenDir(“c:\”); foreach i in imgs { Sharpen(i); Save(i); } }

Example CILY Syntax function void ConvertToColor(Pixel p, Color c) { p->color = c; return;} main() { var Image i = Open("images_original/earth.jpg"); var Color black = Color(0,0,0); var Color darkRed = Color(130, 25, 25); ConvertToGrayScale(i); array Pixel[] pixels = MagicWand(i, Color(0, 0, 0), 10); foreach j in pixels { ConvertToColor(pixels[j], darkRed); } Paste(i, pixels); SaveAs(i, "earthgray.jpg"); }

Output of Previous Example

Control Structures Expressions Expressions var int a = foo() + 3 * (a + b); Loops Loops foreach i in imgs { print(imgs[i]->filename); } Functions Functions function void foo() { return; } Library objects and functions Library objects and functions Brighten(image); Color c = Color(255,255,0);

Tree Parser Code Gen Error at line 2: a not declared import java.io.*; public class test2 { public static void main(String args[]) { try { CILYImage i = CILYLibrary.Open("blah.jpg"); CILYLibrary.Blur(i); } catch (ArrayIndexOutOfBoundsException aioobe) { System.err.println("RUNTIME ERROR: Array index out of bounds"); } catch (Exception e) { System.err.println("RUNTIME ERROR: Unable to read or write to file"); } AST Lexer/ Parser Compiling CILY Programs main() { var Image i = Open(“blah.jpg”); Blur(i); } Syntax error at line 1: token unexpected ‘.’ Error Check

Compiling CILY Programs CILY Program Lexer/ Parser Tree Parser Error Checker Code Gen Syntax Errors Semantic Errors Java program

Generated Code Compiler takes CILY program and generates an analogous Java program. Compiler takes CILY program and generates an analogous Java program. Java program compiled and run using J2E Java program compiled and run using J2E Java runtime used to run the program. Java runtime used to run the program.

Some examples of what CILY can do

Photo Album Creator Create photo albums with a call to one CILY library function Create photo albums with a call to one CILY library function Different album styles available Different album styles available

Testing Automated test suite to run regression tests after every major grammar change. Syntax error checking automatically checked Automated test suite to run regression tests after every major grammar change. Syntax error checking automatically checked Semantic error checking was done partially automatically, partially manually. Semantic error checking was done partially automatically, partially manually. Took a few days to implement, but saved us a lot of valuable time down the stretch Took a few days to implement, but saved us a lot of valuable time down the stretch

Lessons Learned Peer Programming VERY valuable Peer Programming VERY valuable Learned how to “move on” when little errors kept us from shipping. Learned how to “move on” when little errors kept us from shipping. Diff people testing vs. coding Diff people testing vs. coding Learn to trust your group Learn to trust your group Learn to like your group Learn to like your group