Files modified in order to add SQL stuff: IronPython\External\ODAC\* IronPython\External\vcs_web IronPython\Demo\* IronPython\Languages\IronPython\Scripts\generate_ops.py IronPython\Languages\IronPython\IronPython\IronPython.csproj IronPython\Languages\IronPython\IronPython\Compiler\Tokenizer.cs IronPython\Languages\IronPython\IronPython\Compiler\TokenKind.Generated.cs IronPython\Languages\IronPython\IronPython\Compiler\Parser.cs IronPython\Languages\IronPython\IronPython\Compiler\ParseSql.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\AstMethods.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\PythonWalker.Generated.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\SqlConnectionStatement.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\SqlQueryExpression.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\SqlStatement.cs IronPython\Languages\IronPython\IronPython\Runtime\PySwanSqlRunner.cs IronPython\Languages\IronPython\IronPython\Runtime\Operations\PythonOps.cs Description of modified files (why they're important): IronPython\External\ODAC\* -- Contains all of the Oracle DB connectivity stuff, must be installed for SQL -- stuff to work. IronPython\External\vcs_web -- Installer for visual studio. Needed to navigate the .csproj and (maybe) for -- installing msbuild. IronPython\Demo\* -- Our presentation and associated images and demo files. IronPython\Languages\IronPython\Scripts\generate_ops.py -- This is used to automatically generate a list of tokens. generate_ops.py -- modifies TokenKind.Generated.cs IronPython\Languages\IronPython\IronPython\IronPython.csproj -- You need to modify this to add new references to dll's (like the ODBC stuff) -- and for adding new classes (typically nodes to the AST) -- This is also the file you open in Visual Studio to navigate the project. IronPython\Languages\IronPython\IronPython\Compiler\Tokenizer.cs -- This is where the individual tokens are parsed. Not usually necessary to look -- here, but can be useful to understand some of the tokenizing API. IronPython\Languages\IronPython\IronPython\Compiler\TokenKind.Generated.cs -- Should be auto-generated. Lists the different "Kinds" of tokens. IronPython\Languages\IronPython\IronPython\Compiler\Parser.cs -- This is the parse tree. This implements the BNF Python grammar exactly. Your -- understanding of how IronPython works starts here. IronPython\Languages\IronPython\IronPython\Compiler\ParseSql.cs -- We broke off our SQL parsing stuff into a separate file. We don't do a very good -- job parsing, because that was put off while we got other stuff working. IronPython\Languages\IronPython\IronPython\Compiler\Ast\AstMethods.cs -- This is the big list of calls that are targeted by "Call" objects placed on the -- AST during the Reduce() phase. This will direct those "Call"s to the correct -- function in PythonOps.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\PythonWalker.Generated.cs -- Some auto-generated stuff that gets updated with new Ast Node types when the -- .csproj is updated with new references. "SqlConnectionStatement", -- "SqlQueryExpression" and "SqlStatement" are examples of our new Ast Node types. -- We really don't know what these PythonWalker things do, to be honest. IronPython\Languages\IronPython\IronPython\Compiler\Ast\SqlConnectionStatement.cs -- A new type of node that is placed on the AST by the parser. Reduce() will be -- called, and this node type will be transformed into a Call object pointing to -- MakeConnection in AstMethods.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\SqlQueryExpression.cs -- A new type of node that is placed on the AST by the parser. Reduce() will be -- called, and this node type will be transformed into a Call object pointing to -- ExecuteSqlQuery in AstMethods.cs IronPython\Languages\IronPython\IronPython\Compiler\Ast\SqlStatement.cs -- A new type of node that is placed on the AST by the parser. Reduce() will be -- called, and this node type will be transformed into a Call object pointing to -- ExecuteSql in AstMethods.cs IronPython\Languages\IronPython\IronPython\Runtime\PySwanSqlRunner.cs -- This is where the actual runtime behavior resides. In this case, -- PySwanSqlRunner.cs establishes and maintains an Oracle DB connection, -- and hands off queries to the Oracle DB. IronPython\Languages\IronPython\IronPython\Runtime\Operations\PythonOps.cs -- PythonOps.cs contains the methods that are called by AstMethods.cs via reflection -- and some helper functions. After doing some massaging of input, this passes -- the completed SQL string over to PySwanSqlRunner.cs methods.