roslyn compiler as a service

21
revealed by / Eugene Zharkov @2j2e

Upload: eugene-zharkov

Post on 06-May-2015

724 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Roslyn compiler as a service

revealed by / Eugene Zharkov @2j2e

Page 2: Roslyn compiler as a service

COMPILER IS A BLACK BOX

Page 3: Roslyn compiler as a service

ROSLYN TEAMAnders Hejlsberg - father of Microsoft's C# language.

Matt Warren - software achitect at Microsoft on the C#programming language product team.

Pete Golde - lead developer of the original Microsoft C#compiler.

Karen Ng - lead program manager on the Visual StudioProfessional team.

Page 4: Roslyn compiler as a service

FEATURESManaged compilers (C# / VB)Code analysis APIsLanguage service extensibilityRead-Eval-Print-Loop (REPL)

Page 5: Roslyn compiler as a service

COMPILER PIPELINE

Page 6: Roslyn compiler as a service

COMPILER API

Page 7: Roslyn compiler as a service

LANGUAGE SERVICE

Page 8: Roslyn compiler as a service

SYNTAX TREESImmutableResilientEfficientComplete & Consistent

Page 9: Roslyn compiler as a service

SYNTAX TREE CODE EXAMPLEclass C{ void M() { } // C}

Page 10: Roslyn compiler as a service

SYNTAX TREE - NODES

Page 11: Roslyn compiler as a service

SYNTAX TREE CODE EXAMPLEclass C{ void M() { } // C}

Page 12: Roslyn compiler as a service

SYNTAX TREE - TOKENS

Page 13: Roslyn compiler as a service

SYNTAX TREE CODE EXAMPLEclass C{ void M() { } // C}

Page 14: Roslyn compiler as a service

SYNTAX TREE - "TRIVIA"

Page 15: Roslyn compiler as a service

SYNTAX TREE CODE EXAMPLEclass C{ void M() { } // C}

Page 16: Roslyn compiler as a service

SYNTAX VISUALIZER

Page 17: Roslyn compiler as a service

WORKSPACES

Page 18: Roslyn compiler as a service

EXAMPLEProjectId pid1, pid2;DocumentId did1, did2;ISolution solution = Solution.Create(SolutionId.CreateNewId("Solution")) .AddCSharpProject("Project1.dll", "Project1", out pid1) .AddDocument(pid1, "A.cs", "public class A { }", out did1) .AddCSharpProject("Project2.dll", "Project2", out pid2) .AddDocument(pid2, "B.cs", "class B : A { }", out did2) .AddProjectReference(pid2, pid1);

Page 19: Roslyn compiler as a service

DEMO

Page 20: Roslyn compiler as a service

FOR REVIEWRoslyn documentation - http://bit.ly/roslyndocsRefactoring with Roslyn Circus Comes to TownBUILD: Anders – Future of C# and Visual BasicMeet the Design Team

Page 21: Roslyn compiler as a service

THANK YOU!

source -

@2j2e

[email protected]

http://github.com/2j2e

http://bit.ly/rolsynbasics