clase
play

CLASE Cursor Library for A Structured Editor T ool Demo Tristan - PowerPoint PPT Presentation

CLASE Cursor Library for A Structured Editor T ool Demo Tristan Allwood (tora@doc.ic.ac.uk) Susan Eisenbach (s.eisenbach@imperial.ac.uk) Zip! Photo from http://www.flickr.com/photos/sarmax/109561164/ Cursor Library for A Structured


  1. CLASE Cursor Library for A Structured Editor “T ool Demo” Tristan Allwood (tora@doc.ic.ac.uk) Susan Eisenbach (s.eisenbach@imperial.ac.uk) Zip! Photo from http://www.flickr.com/photos/sarmax/109561164/ Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  2. Polite Notice This talk will feature code snippets! Code a user has Code that is in Code that can be to write the CLASE autogenerated with library T.H. scripts “Blue User” “Green Library” “Generated Orange” http://www.flickr.com/photos/alkalinezoo http://www.flickr.com/photos/cambridgelib/ http://www.flickr.com/photos/webel/76 /2374201026/ 2343211287/ 665500/ Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  3. A Sample Language module Lam.Lam where data Lam = Lam Exp data Exp = Abs String Type Exp | App Exp Exp | Var Integer | NoExp data Type = Unit | Arr Type Type | NoType Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  4. A CLASE Cursor λ λ τ λ τ ( x : ? . x) >( y : . z : . (z y))< Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  5. A CLASE Cursor λ λ τ λ τ ( x : ? . x) >( y : . z : . (z y))< it Abs “y” Unit Abs “z” Unit App Var 0 Var 1 Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  6. A CLASE Cursor λ λ τ λ τ ( x : ? . x) >( y : . z : . (z y))< context it Abs “y” Lam' App' ² Unit Abs “z” Abs “x” Unit App NoType Var 0 Var 0 Var 1 Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  7. A CLASE Cursor data Cursor l x a = (Reify l a) => Cursor { it :: a, ctx :: Path l (Context l) a l, log :: Route l a x } λ λ τ λ τ ( x : ? . x) >( y : . z : . (z y))< context it Abs “y” Lam' App' ² Unit Abs “z” Abs “x” Unit App NoType Var 0 Var 0 Var 1 Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  8. Generating Boilerplate {-# LANGUAGE TemplateHaskell #-} module Lam.Gen where import Lam.Lam import Data.Cursor.CLASE.Gen.Adapters import Data.Cursor.CLASE.Gen.Language import Data.Cursor.CLASE.Gen.Persistence $(languageGen ["Lam", "Language"] ''Lam [''Lam, ''Exp, ''Type]) $(adapterGen ["Lam", "Adapters"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") $(persistenceGen ["Lam", "Persistence"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") main :: IO () main = return () Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  9. Generating Boilerplate {-# LANGUAGE TemplateHaskell #-} module Lam.Gen where import Lam.Lam import Data.Cursor.CLASE.Gen.Adapters import Data.Cursor.CLASE.Gen.Language import Data.Cursor.CLASE.Gen.Persistence $(languageGen ["Lam", "Language"] ''Lam [''Lam, ''Exp, ''Type]) $(adapterGen ["Lam", "Adapters"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") $(persistenceGen ["Lam", "Persistence"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") main :: IO () main = return () Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  10. Generating Boilerplate {-# LANGUAGE TemplateHaskell #-} module Lam.Gen where import Lam.Lam import Data.Cursor.CLASE.Gen.Adapters import Data.Cursor.CLASE.Gen.Language import Data.Cursor.CLASE.Gen.Persistence $(languageGen ["Lam", "Language"] ''Lam [''Lam, ''Exp, ''Type]) $(adapterGen ["Lam", "Adapters"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") $(persistenceGen ["Lam", "Persistence"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") main :: IO () main = return () Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

  11. Generating Boilerplate {-# LANGUAGE TemplateHaskell #-} module Lam.Gen where import Lam.Lam import Data.Cursor.CLASE.Gen.Adapters import Data.Cursor.CLASE.Gen.Language import Data.Cursor.CLASE.Gen.Persistence $(languageGen ["Lam", "Language"] ''Lam [''Lam, ''Exp, ''Type] ) $(adapterGen ["Lam", "Adapters"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") $(persistenceGen ["Lam", "Persistence"] ''Lam [''Lam, ''Exp, ''Type] "Lam.Language") main :: IO () main = return () Cursor Library for A Structured Editor Tristan Allwood, Susan Eisenbach

Recommend


More recommend