Top Banner
Mitchell McMullen Paul Nguyen SWAN
15

Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Jan 17, 2016

Download

Documents

Lorena Summers
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Mitchell McMullenPaul Nguyen

SWA

N

Page 2: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

• Python written entirely in C#.• Can access all .NET libraries and

Silverlight.• Created by the same guy as Jython.• No design documentation or developer’s

guide for source code =(

Page 3: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

IronPySwan• Added Oracle Database Connectivity.• Embedded SQL commands/queries.• Allows arbitrary python expressions within

SQL commands/queries. (Using back ticks)

Page 4: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Overview

Page 5: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Tokenizer

• Breaks up the source code into tokens.• IronPython uses a mostly hand-written

tokenizer and parser.• Some token recognition code is auto-

generated.

MAKECONNECT

INSERT

_________________

______________

Page 6: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Parser

• Identifies tokens as they come in.• Implements the Python (BNF) grammar directly.• Constructs the Python AST.

Page 7: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

MSAstNode Declaration

• This is where a statement/expression is turned into a node fit for the AST.

• The statement/expression’s Reduce() method is called, which returns a simpler node.

• Typically, reduce() links to implementation code.

Page 8: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

AstMethods

• Big collection of Method signatures, used for reflection/indirection to PythonOps.

Connection

Statement (Nonquery)

Expression (Query)

AstMethods

Page 9: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

PythonOps

• Pretty much another layer of indirection, and a repository for some helper functions.

Connection

Statement (Nonquery)

Expression (Query)

Page 10: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Runtime Behavior

• This is the implementation-ey kind of stuff. In the end, this is where the heavy lifting for each method call is located.

• We have one class, PySwanSqlRunner, which houses the connection and passes the final SQL strings on to the database.

• These methods are executed by the interpreter.

Page 11: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

PySwanSqlRunnerConnection

Statement (Nonquery)

Expression (Query)

Page 12: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Stuff That Still Really Needs Work

• Error handling is pretty primitive.• No RDF. (Sorry, Dr. Cannata!!)• SQL must be well-formed.

Page 13: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Programming Language Terms

• Terminal/Nonterminal (Tokenizer.cs).• Abstract Syntax Tree (Parser.cs).• Parse tree is implicitly built.

(Parser.cs)• Python.g BNF is implemented directly

(Parser.cs• Some SQL involved.

Page 14: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Demonstration

• Hope you enjoy!

Page 15: Mitchell McMullen Paul Nguyen SWAN. Python written entirely in C#. Can access all.NET libraries and Silverlight. Created by the same guy as Jython. No.

Questions?