Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming Languages and Translators Fall 2007 Eli Hamburger Michele Merler Jimmy Wei

Similar presentations


Presentation on theme: "Programming Languages and Translators Fall 2007 Eli Hamburger Michele Merler Jimmy Wei"— Presentation transcript:

1 Programming Languages and Translators Fall 2007 Eli Hamburger (eh2315@columbia.edu) Michele Merler (mm3233@columbia.edu) Jimmy Wei (jw2553@columbia.edu) Lin Yang (ly2179@columbia.edu) TMIL Text ManIpulation Language

2 Generate CAPTCHAs (image based RTT) Manipulate text on multiple images to create animations Create easily adaptable templates (for web site designers) Simple, easy to use, c++ like programming language that allows iterative operations text and images Motivation

3 TMIL Features Manipulate color, size, rotation, font of a text Write text on an image Draw lines on an image Open and save images Build text or lines animations on sequences of images

4 Lexical Conventions Basic types (C/C++ like): bool, char, float, int, string Built-in types: –color (r,g,b) –coordinate (x,y) –image (h,w) –text (name, font, colour, position, size, rotation) Built-in functions: –open (image, name) –create (image,h,w,bgcolor) –save (image,name) –drawline (image, pos1, pos2, color, width) –int2string, float2string, string2float, string2int, char_at Operators: () [] + - * / % ++ -- == != > = <= && || !., Special operator: <~ image <~ text : stamps text on image

5 TMIL Program Sample int main(){ image im; open(im,"Dock.jpg"); // loads image from file text t; t.name = "dog"; t.font = "Arial.ttf"; t.size = 60; coordinate coor[3]; /* array definition */ color c; c.r = c.g = c.b = 50; t.colour = c; for (int i=0; i<=2; i++) { coor[i].x = i*150; coor[i].y = 200; t.rotation = i*40; t.position = coor[i]; if(i==1) t.font = "Times.ttf"; im <~ t; } drawline(im, coor[0], coor[2], c, 5); save(im, "test5.png"); // save image into a file return 0; }

6 // int main() { image im; open(im,"Dock.jpg"); loads image from file text t; t.name = "dog"; t.font = "Arial.ttf"; t.size = 60; coordinate coor[3]; array definition color c; c.r = c.r = c.b = 50; t.colour = c; for (int i=0; i<=2; i++) { coor[i].x = i*150; coor[i].y = 200; t.rotation = i*40; t.position = coor [ i ] ; if (i==1) t.font = "Times.ttf"; im <~ t; } drawline (im, coor[0], coor[2], c, 5); save (im, "test5.png"); // save image into a file return 0; } TMIL Program Sample C/C++ comments style multiple assignments control flow statements Stamp operatorBuilt-in functions Built-in type property access main() function required /**/ Array access

7 Another TMIL Sample void circular_draw(image im, text w) { text w1 = w; string name; for(int j = 0; j<15; j++) { name = "./turtle/turtle" + int2string(j+1) + ".jpg"; w1.colour.b -= 30; w1.colour.g -= 10; w1.rotation = - j*(360/15); im <~ w1; save(im,name); } int main() { image im; open(im, "turtle.jpg"); text w1; w1.name = "turtle"; w1.font = "GOTHIC.ttf"; w1.rotation = 0; w1.size = 80; w1.position.x = im.w/2; w1.position.y = im.h/2; w1.colour.r = w1.colour.g = w1.colour.b = 255; circular_draw(im,w1); return 0; } User defined function

8 TMIL Compiler Architecture Input: TMIL code Tree Walker Syntax Analysis Semantic Analysis Semantic Errors LEXER/PARSER Output: executable G++ GDFreeType AST C++ Code tmil.h Code Generation

9 Testing Lexer Tests Parser Tests Walker/Semantic Analysis Tests Final Programs (more complex and actually do something)

10 Lessons Learned & Conclusions Start early Good communication Pros of teamwork Modifying grammar There will always be more corner cases to test Writing your own compiler is fun


Download ppt "Programming Languages and Translators Fall 2007 Eli Hamburger Michele Merler Jimmy Wei"

Similar presentations


Ads by Google