Presentation is loading. Please wait.

Presentation is loading. Please wait.

EMDL Extended Motion Description Language. EMDL vs. MDL.

Similar presentations


Presentation on theme: "EMDL Extended Motion Description Language. EMDL vs. MDL."— Presentation transcript:

1 eMDL Extended Motion Description Language

2 EMDL vs. MDL

3 MDL classic Syntax: –line x1, y1, z1, x2, y2, z2 –Box x, y, z, dx, dy, dz –sphere x, y, z, r –move x, y, z [knob]

4 EMDL –Simple –Object Oriented –Robust –Supports Animation

5 Sample Syntax # delcare filename filename sample_syntax; # fucntion definiitions function ears { sphere2=sphere1; sphere3=sphere1; sphere2.r=sphere1.r/2; sphere3.r=sphere1.r/2; save; } function moveout { move sphere3 ; sphere2.y=sphere2.y-50; save; } #more function definitions function moveback { sphere3.y=sphere3.y-50; sphere2.y=sphere2.y+50; save; } function movesideways { sphere3.x=sphere3.x-50; sphere2.x=sphere2.x+50; save; } function moveup { sphere3.y=sphere3.y-50; sphere2.y=sphere2.y-50; save; }

6 Sample Syntax (2) # main body set sphere1 as sphere ; set sphere2 as sphere ; set sphere3 as sphere ; hide sphere2; hide sphere3; save; funct ears; repeat {funct moveout;}; repeat {funct moveback;}; repeat {funct movesideways;}; repeat {funct moveup;};

7 Output

8

9

10

11

12

13

14

15

16

17 Structure of eMDL Filename Specification Function Declarations Variable Declarations Main Body

18 Filename Specification Allows users to chose the filename for all MDL files that will be output Must be the first line of the eMDL script Optional : if not included, then the program will default to outputting tmp.mdl files.

19 Filename Specification (2) Example : filename mdlTest; Will result in all outputted MDL files named mdlTest.mdl is enumerated based on how many times the save function was called in the code.

20 Function Declarations If you want to create any functions, they must be declared and defined in the second section. eMDL supports macro style functions with no parameters Every function must have a unique identifier.

21 Function Declarations (2) Function declarations consist of the keyword “function” followed by the identifying name The function body is enclosed in curly braces and can contain of any combination of pre or user defined functions, assignments, or repeat clauses.

22 Function Declarations (3) Example : function move50 { repeat { move sphere1 ; move box2 ; save; }

23 Variable Declarations Must occur between the function declarations and the main body All variables have a global scope. Each variable must have its own unique identifier. Five types of variables.

24 Variable Types Integer set as integer Box set as box Line set as line Sphere set as sphere Torus set as torus

25 Main Body This is where the actual graphic manipulations occur Any variable declared previously can be changed and moved

26 Main Body (2) Users may: –Utilize assignment statements –Call predefined functions –Call user defined functions –Create repeat blocks –Remove a variable –Save the current state to an MDL file

27 Details of our Compiler

28 Lexer – splits code into tokens. Parser – creates an AST. TreeWalker – generates mdl Code mdlParser – mdl Parser generates gif images. (compiled in C)

29 How We Implemented Our Compiler

30 emdlLexer Lexer splits emdl code into tokens. Some common tokens are: –INT –ID, which can be variable names and function names.

31 emdlParser Parser makes an Abstract Syntax Tree out of the stream of tokens that the Lexer outputs. –Syntax is checked here. –The AST is designed and created here in the most efficient way for static semantic analysis to take place.

32 emdlTreeWalker TreeWalker performs the static semantic analysis, as well as the code generation. A linked list is created to hold all global variables. The object in linked list knows what type of object the variable is, and all of its parameters.

33 emdlTreeWalker A copy of the AST is made before we walk through the function declarations. This is to facilitate function calls. Each function call creates a copy of the this tree and call a treeWalker function on this tree. Since our functions act like macros, the function body is just a sequential continuation of our code.

34 mdlParser mdlParser is a binary executable that is compiled in C. It asks the user for the names of an mdl file, and the name of the image file to be created. It then outputs an image file for the given mdl file.

35 Comparison between emdl and mdl One of the main reasons for the creation of this language was to extend mdl so that we could make the coding tighter and cleaner. For the demo you had seen earlier, one emdl file created 9 separate mdl files, which created 9 separate image files.

36 Comparison between eMDL and mdl Now if we had wanted to run the same animation, but with the two outside spheres being farther away from the interior sphere, I would only need to change on line in emdl. But to do the same change in mdl would require us to modify all 9 of the mdl files that created this animation.

37 Testing Tested during and after development.

38 During Development Ran two test files when each new functionality was implemented. –One that ought to work –One that ought not and give errors Didn’t always include all possible formations of newly implemented statements.

39 After Development Created suite of test cases –Tested all legal formations of statements. –Tested for what we predicted to be common syntactic and semantic mistakes.

40 Lessons Learned Compilers are harder to make than you might think. Perpetual debugging and error- checking, since errors can and did crop up in the simplest functions.


Download ppt "EMDL Extended Motion Description Language. EMDL vs. MDL."

Similar presentations


Ads by Google