Upload
samson-moore
View
214
Download
0
Tags:
Embed Size (px)
Citation preview
PLT Final Project---COLOGO
Lixing Dong, Zhou Ma, Chao Song, Siyuan Lu, Dongyang Jiang
Overview of COLOGO
Columbia LOGOMotivation: For educational use
1. an effective programming language for drawing 2D graphics2. designed in spirit of low threshold, easily implemented.
Function Feature
Euclidean PicturesCreating FunctionsRecursiveIridescentSimple Data Structure such as Array.Support direct HTML and Javascript Output
COLOGO VS. LOGO
ColorfulCompile togetherNo list
Language Tutorial
Some examples of our program
• Fibonacci
• Recursive
Some examples of our program
• Olympic Rings (faked)
• Rainbow
Some examples of our program
Language Tutorial
• Variable Declaration
• Int a,b;
• Bool c;
• foo d; (:foo is a object:)
• Int e[10]; (:array:)
Language Tutorial
• Expression
• Assignment: a = 1; c = True;
• Arithmetic Expression: a = b + a;
• Comparison Expression: c = a < b;
• Logical Expression: c = (a == b); Not c;
• Function call: a = testfunc(b);
• Comment: (:This is a comment:)
Language Tutorial
• Loop
• Loop(10) { a = a + 1; }
• Loop(10) { a = a + 1; Break; }
• Loop(10) { a = a + 1; Goon;}
Language Tutorial
• Condition
• If (c) { a = b; } End
• If (c) { a = b; } Else { b = a; } End
Language Tutorial
• Jump
• If (c) { a = b; } End
• If (c) { a = b; } Else { b = a; } End
Language Tutorial
• Draw
•Move Forward: FD 10;
•Move Backward: BK 10;
• Turn Left: LF 90;
• Turn Right: RT 90;
Language Tutorial
• Draw
• Reset position: RESET;
• Clear Screen: CLS;
• Pen Operation: PU; PD; PF;
• Line Width: WD 10;
• Set Line Color: RGB 255, a, e[2]
Language Tutorial
• Function
• Declaration:
• Func testfunc(int n) : int { Return n;}
• Call:
• a = testfunc(b);
Language Tutorial
• Object
• Definition:
• Obj foo { int bar; int baz;}
• Declaration:
• foo d;
• Reference: dot operator
• d.bar = a; b = d.baz;
Implementation
Layout
Flow
Ast: Abstract Syntax Tree Types Definition
One Rule -> One Type Constructor
Flow
Scanner: Generate Tokens
Parser: Generate ASTUse Type Constructor Defined in AST
FlowScanner: Generate Tokens
Parser: Generate AST Use Type Constructor Defined in AST
Basic Error Recovery
Flow
Semantic: Traversal of AST, Checking Variables, Function
Definitions, Type Matching, etc.
Generator: Traversal of AST, Generate JS code in HTML file
Printer: Traverse and print the AST
Flow
Semantic: Traversal of AST,
Checking Variables , Redefinition
Type Matching: Array Object Function Matching
Parameter Count, Argument Type Return Type
Definition Scope Stack faked by List Small Features: infinite loop
Flow
Generator: Traversal of AST
Generate JS Code in HTML5 file
Draw Statement
Array in Obj
Flow
•SUMMARY
•Further to develop
•Lessons learned