memphis usage

Upload: amr-emam

Post on 04-Jun-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/13/2019 Memphis Usage

    1/9

    M e m p h i s

    U s e r M a n u a l

    T h i s d o c u m e n t d e s c r i b e s h o w t o i n s t a l l a n d u s e t h e p r e c o m p i l e r f o r M e m p h i s , a C / C + +

    e x t e n s i o n f o r c o m p i l e r w r i t e r s .

    1

  • 8/13/2019 Memphis Usage

    2/9

    1 I N S T A L L A T I O N 2

    1 I n s t a l l a t i o n

    F o r U n i x s y s t e m s M e m p h i s i s d i s t r i b u t e d a s a c o m p r e s s e d t a r l e m e m p h i s - 1 . 6 . t a r . g z .

    T o u n p a c k t h i s l e t y p e

    g u n z i p m e m p h i s - 1 . 6 . t a r . g z

    t a r - x v f m e m p h i s - 1 . 6 . t a r

    T h i s c r e a t e s a d i r e c t o r y m e m p h i s - 1 . 6 w i t h t h e f o l l o w i n g s u b d i r e c t o r i e s

    m e m p h i s T h e C c o d e o f t h e M e m p h i s p r e c o m p i l e r

    m r t s C o n t a i n s a s i m p l e m o d u l e t o b e l i n k e d w i t h M e m p h i s p r o g r a m s

    e x a m p l e s S o m e s m a l l e x a m p l e s

    d o c T h e d o c u m e n t a t i o n

    G o t o d i r e c t o r y m e m p h i s a n d t y p e

    b u i l d

    T h i s c o m p i l e s t h e M e m p h i s p r e c o m p i l e r .

    G o t o d i r e c t o r y m r t s a n d t y p e

    b u i l d

    T h i s c o m p i l e s t h e l e m r t s . c p p t h a t m u s t b e l i n k e d t o a M e m p h i s p r o g r a m .

    T o t e s t y o u r i n s t a l l a t i o n y o u m a y g o t o d i r e c t o r y e x a m p l e s / t r e e s a n d t y p e

    b u i l d

    T h i s t r a n s l a t e s a n d e x e c u t e s a s i m p l e M e m p h i s p r o g r a m .

    T h e p r o g r a m s h o u l d p r i n t t h e r e s u l t

    S u m o f E x a m p l e T r e e i s 3 3

    T h e n e x t s e c t i o n d i s c u s s e s h o w t o p r o c e s s t h i s e x a m p l e .

    2 P r o c e s s i n g a S i m p l e P r o g r a m

    T h e d i r e c t o r y e x a m p l e s / t r e e s c o n t a i n s a l e p r o g . m a s d e p i c t e d i n F i g . 1 . T h i s l e

    p r o v i d e s a d o m a i n d e c l a r a t i o n t o i n t r o d u c e a d a t a t y p e T r e e a n d a f u n c t i o n t h a t u s e s a

    m a t c h s t a t e m e n e n t t o p r o c e s s T r e e v a l u e s ( s e e t h e M e m p h i s C / C + + , A L a n g u a g e f o r

    C o m p i l e r W r i t e r s f o r d e t a i l s ) .

    H e r e i s a s h e l l s c r i p t ( l e b u i l d ) t o c o m p i l e t h i s l e a n d t o e x e c u t e t h e r e s u l t i n g p r o g r a m .

  • 8/13/2019 Memphis Usage

    3/9

    2 P R O C E S S I N G A S I M P L E P R O G R A M 3

    / / D e f i n e a d a t a t y p e T r e e .

    / / A T r e e i s e i t h e r

    / / a n o d e w i t h a n i n t f i e l d v a l a n d t w o s u b t r e e s l e f t a n d r i g h t

    / / d e n o t e d n o d e ( v a l , l e f t , r i g h t )

    / / o r

    / / a n e m p t y t r e e

    / / d e n o t e d e m p t y ( )

    d o m a i n T r e e {

    n o d e ( i n t v a l , T r e e l e f t , T r e e r i g h t )

    e m p t y ( )

    }

    / / D e f i n e a f u n c t i o n E x a m p l e T r e e t h a t c o n s t r u c t s a T r e e

    / /

    / / n o d e

    / / |

    / / + - 1 1

    / / |

    / / + - e m p t y

    / / |

    / / + - n o d e

    / / |

    / / + - 2 2

    / / |

    / / + - e m p t y

    / / |

    / / + - e m p t y

    T r e e E x a m p l e T r e e ( )

    {

    r e t u r n n o d e ( 1 1 , e m p t y ( ) , n o d e ( 2 2 , e m p t y ( ) , e m p t y ( ) ) ) ;

    }

    / / D e f i n e a f u n c t i o n S u m t h a t c o m p u t e s t h e s u m

    / / o f t h e v a l u e s o f a a l l n o d e s o f a g i v e n T r e e t

    i n t S u m ( T r e e t )

    {

    / / i n s p e c t t h e s t r u c t u r e o f t

    m a t c h t {

    r u l e n o d e ( v , l , r ) :

    / / i f t h a s t h e f o r m n o d e ( v , l , r )

    / / t h e r e s u l t i s o b t a i n e d b y a d d i n g v t o t h e

    / / r e c u r s i v e l y c o m p u t e d s u m s o f l a n d r

    r e t u r n v + S u m ( l ) + S u m ( r ) ;

    r u l e e m p t y ( ) :

    / / i f t i s t h e e m p t y t r e e

    / / t h e r e s u l t i s 0

    r e t u r n 0 ;

    }

    }

    / / T h e m a i n f u n c t i o n

    e x t e r n " C " v o i d p r i n t f ( . . . ) ;

    m a i n ( )

    {

    p r i n t f ( " S u m o f E x a m p l e T r e e i s % d \ n " , S u m ( E x a m p l e T r e e ( ) ) ) ;

    }

    F i g . 1 . A S i m p l e P r o g r a m ( p r o g . m )

  • 8/13/2019 Memphis Usage

    4/9

    3 M U L T I P L E F I L E P R O G R A M S 4

    M E M P H I S = . . / . . / m e m p h i s

    M R T S = . . / . . / r t s / m r t s . o

    C P L U S P L U S = g c c

    $ M E M P H I S p r o g . m

    $ C P L U S P L U S - c p r o g . c p p

    $ C P L U S P L U S p r o g . o $ M R T S

    a . o u t

    T h e r s t t h r e e e l i n e s d e n e t h e l o c a t i o n o f t h e M e m p h i s p r e c o m p i l e r , t h e p a t h o f t h e

    M e m p h i s r u n t i m e s y s t e m , a n d t h e C + + c o m p i l e r .

    T h e n e x t l i n e s i n v o k e t h e M e m p h i s p r e c o m p i l e r , t h e C + + c o m p i l e r , a n d t h e n t h e r e -

    s u l t i n g p r o g r a m .

    T h e c o m m a n d

    $ M E M P H I S p r o g . m

    i n v o k e s t h e M e m p h i s p r e c o m p i l e r w i t h t h e s o u r c e l e p r o g . m . M e m p h i s p r o g r a m l e s

    m u s t h a v e t h e e x t e n s i o n \ . m " . T h e c o m m a n d c r e a t e s t a r g e t l e p r o g . c p p .

    T h e p r e c o m p i l e r a n a l y s e s d o m a i n d e c l a r a t i o n s a n d m a t c h s t a t e m e n t s a n d t r a n s l a t e s

    t h e m i n t o C + + c o d e . O t h e r m a t e r i a l ( i . e . o r d i n a r y C / C + + c o d e ) i s p a s s e d t o t h e t a r g e t

    l e j u s t a s i t i s .

    T h e c o m m a n d

    $ C P L U S P L U S - c p r o g . c p p

    i n v o k e s t h e C + + c o m p i l e r t o t r a n s l a t e t h e g e n e r a t e d l e p r o g . c p p . T h i s r e s u l t s i n a n

    o b j e c t l e p r o g . o .

    T h e c o m m a n d

    $ C P L U S P L U S p r o g . o $ M R T S

    l i n k s t h e o b j e c t l e p r o g . o a n d t h e M e m p h i s r u n t i m e s y s t e m m r t s . o . T h e r e s u l t i s a n

    e x e c u t a b l e p r o g r a m a . o u t .

    T h e M e m p h i s r u n t i m e s y s t e m m e r e l y p r o v i d e s a n e r r o r f u n c t i o n t h a t i s c a l l e d w h e n a

    m a t c h s t a t e m e n t f a i l s .

    T h e c o m m a n d

    a . o u t

    n a l l y i n v o k e s t h e e x e c u t a b l e p r o g r a m .

  • 8/13/2019 Memphis Usage

    5/9

    3 M U L T I P L E F I L E P R O G R A M S 5

    / / D e f i n e a d a t a t y p e T r e e .

    d o m a i n T r e e {

    n o d e ( i n t v a l , T r e e l e f t , T r e e r i g h t )

    e m p t y ( )

    }

    F i g . 2 . T r e e D e n i t i o n ( t r e e d e f . m )

    / / U s e t h e T r e e d e f i n i t i o n

    w i t h t r e e d e f ;

    / / D e f i n e a f u n c t i o n S u m t h a t c o m p u t e s t h e s u m

    / / o f t h e v a l u e s o f a a l l n o d e s o f a g i v e n T r e e t

    i n t S u m ( T r e e t )

    {

    m a t c h t {

    r u l e n o d e ( v , l , r ) :

    r e t u r n v + S u m ( l ) + S u m ( r ) ;

    r u l e e m p t y ( ) :

    r e t u r n 0 ;

    }

    }

    / / T h e m a i n f u n c t i o n

    e x t e r n " C " v o i d p r i n t f ( . . . ) ;

    m a i n ( )

    {

    T r e e E x a m p l e T r e e = n o d e ( 1 1 , e m p t y ( ) , n o d e ( 2 2 , e m p t y ( ) , e m p t y ( ) ) ) ;

    p r i n t f ( " S u m o f E x a m p l e T r e e i s % d \ n " , S u m ( E x a m p l e T r e e ) ) ;

    }

    F i g . 3 . T r e e A p p l i c a t i o n ( t r e e u s e . m )

  • 8/13/2019 Memphis Usage

    6/9

    3 M U L T I P L E F I L E P R O G R A M S 6

    3 M u l t i p l e F i l e P r o g r a m s

    A M e m p h i s p r o g r a m m a y a l s o b e c o m p o s e d f r o m s e v e r a l l e s . S o m e l e s m a y p r o v i d e

    d o m a i n d e c l a r a t i o n s t h a t a r e t h e n u s e d i n s e v e r a l o t h e r l e s .

    F o r e x a m p l e , w e c a n s p l i t t h e p r o g r a m d i s c u s s e d i n t h e p r e v i o u s s e c t i o n ( F i g . 1 ) i n t o

    t w o l e s :

    T h e l e t r e e d e f . m ( F i g . 2 ) i n t r o d u c e s a d o m a i n t y p e T r e e . S e p a r a t e d i n t h i s w a y , t h e

    T r e e d e i n i t i o n c o u l d b e u s e d a t s e v e r a l p l a c e s .

    T h e l e t r e e u s e . m ( F i g . 3 ) a p p l i e s t h e d e n i t i o n . I t r e f e r s t o i t u s i n g a w i t h c l a u s e

    w i t h t r e e d e f ;

    t h a t m a k e s t h e d a t a t y p e v i s i b l e f o r t h i s l e .

    T h e s e l e s a r e c o n t a i n e d i n d i r e c t o r y e x a m p l e s / m u l t i . H e r e i s a s c r i p t ( l e b u i l d ) t o

    p r o c e s s t h e m :

    M E M P H I S = . . / . . / m e m p h i s / m e m p h i s

    M R T S = . . / . . / m r t s / m r t s . o

    C P L U S P L U S = g c c

    $ M E M P H I S - h t r e e d e f . m

    $ M E M P H I S t r e e d e f . m

    $ M E M P H I S t r e e u s e . m

    $ C P L U S P L U S - c t r e e d e f . c p p

    $ C P L U S P L U S - c t r e e u s e . c p p

    $ C P L U S P L U S t r e e d e f . o t r e e u s e . o $ M R T S

    a . o u t

    I f a l e c o n t a i n s d o m a i n d e c l a r a t i o n s t h a t s h o u l d b e a v a i l a b l e t o o t h e r l e s t h e n t h i s

    l e m u s t b e p r o c e s s e d t w i c e b y t h e M e m p h i s p r e c o m p i l e r . I f t h e p r e c o m p i l e r i s i n v o k e d

    w i t h t h e \ - h " o p t i o n i t o n l y p r o c e s s e s d o m a i n d e c l a r a t i o n s a n d g e n e r a t e s i n t e r f a c e i n f o r -

    m a t i o n ( t h i s i s u s e d l a t e r w h e n l e s a r e p r o c e s s e d t h a t r e f e r t h e d o m a i n d e c l a r a t i o n s ) .

    T h e n t h e p r e c o m p i l e r i s i n v o k e d t o p r o d u c e a C + + l e a s d e s c r i b e d a b o v e i n t h e p r e v i o u s

    s e c t i o n .

    T h e c o m m a n d

    $ M E M P H I S - h t r e e d e f . m

  • 8/13/2019 Memphis Usage

    7/9

  • 8/13/2019 Memphis Usage

    8/9

    4 I N T E R O P E R A B I L I T Y W I T H C L A S S I C A L C 8

    i n v o k e s t h e e x e c u t a b l e p r o g r a m .

    I n M e m p h i s , d o m a i n d e c l a r a t i o n s m a y b e m u t u a l l y r e c u r s i v e . S i m i l a r l y , M e m p h i s l e s

    m a y r e f e r e a c h o t h e r i n a c y c l i c w a y .

    T o p r o c e s s s u c h a p r o g r a m r s t p r e c o m p i l e t h e l e s t h a t a p p e a r i n w i t h c l a u s e s , w h e r e

    y o u u s e t h e \ - h " o p t i o n t o g e n e r a t e i n t e r f a c e i n f o r m a t i o n .

    T h e n p r e c o m p i l e a l l M e m p h i s l e s t o g e n e r a t e C + + c o d e .

    N o t e t h a t t h e i n t e r f a c e i n f o r m a t i o n m u s t b e r e g e n e r a t e d w h e n a d o m a i n d e c l a r a t i o n i s

    c h a n g e d .

    4 I n t e r o p e r a b i l i t y w i t h C l a s s i c a l C

    M e m p h i s h a s b e e n d e s i g n e d s u c h t h a t i t c a n b e u s e d b y C p r o g r a m m e r s w h o a r e n o t

    f a m i l i a r w i t h C + + . I t c a n b e u n d e r s t o o d a s a l a n g u a g e e x t e n d i n g C b y d o m a i n d e c l a -

    r a t i o n s a n d m a t c h s t a t e m e n t s .

    H o w e v e r , d o m a i n t y p e s a r e m a p p e d o n C + + c l a s s e s , a n d h e n c e a C + + c o m p i l e r i s

    r e q u i r e d t o c o m p i l e t h e l e s g e n e r a t e d b y M e m p h i s . B e c a u s e C i s a s u b s e t o f C + + , a

    p r o g r a m m e r c a n w r i t e M e m p h i s c o d e w i t h o u t u s i n g C + + s p e c i c f e a t u r e s .

    A n o t a b l e e x c e p t i o n t o t h i s i s t h a t C + + u s e s s o - c a l l e d n a m e m a n g l i n g t o e n c o d e t y p e

    i n f o r m a t i o n i n t o t h e n a m e s o f f u n c t i o n s . T h i s h a s t o b e s u p p r e s s e d i f o n e w a n t s t o c a l l

    a C f u n c t i o n f r o m M e m p h i s c o d e . A w a y t o d o t h i s i s t o d e c l a r e a C f u n c t i o n a s e x t e r n

    " C " . F o r e x a m p l e , i n o u r i n t r o d u c t o r y e x a m p l e ( F i g . 1 ) w e u s e d t h e c l a s s i c a l C s t y l e

    f o r o u t p u t . T h i s r e q i r e d a d e c l a r a t i o n

    e x t e r n " C " v o i d p r i n t f ( . . . ) ;

    J u s t a s c l a s s i c a l C f u n c t i o n s c a n b e c a l l e d f r o m M e m p h i s , M e m p h i s t e r m s c a n a l s o b e

    c o n s t r u c t e d i n c l a s s i c a l C c o d e , i . e . c o d e t h a t n e e d s t o b e p r o c e s s e d b y a c l a s s i c a l C

    c o m p i l e r . T h i s i s m a d e p o s s i b l e b e c a u s e t h e M e m p h i s p r e c o m p i l e r d e c l a r e s t h e g e n e r a t e d

    f u n c t i o n s a s e x t e r n " C " .

    H e n c e o n e c a n c o n s t r u c t M e m p h i s t r e e s i n s i d e t h e s e m a n t i c a c t i o n s o f Y a c c c o d e , a l -

    t h o u g h t h i s c o d e w i l l b e c o m p i l e d b y a C c o m p i l e r w i t h o u t p r e c o m p i l a t i o n w i t h M e m p h i s .

    S e e t h e e x a m p l e i n d i r e c t o r y e x a m p l e / i n t e r a n d t h e d i s c u s s i o n i n t h e M e m p h i s C / C + + ,

    A L a n g u a g e f o r C o m p i l e r W r i t e r s

    h o w t o w r i t e a n i n t e r p r e t e r u s i n g L e x , Y a c c , a n d M e m p h i s .

    5 I n t e r o p e r a b i l i t y w i t h G e n t l e

    M e m p h i s c o d e c a n a l s o p r o c e s s t e r m s t h a t a r e g e n e r a t e d b y c o d e w h i c h i s w r i t t e n i n t h e

    G e n t l e c o m p i l e r d e s c r i p t i o n l a n g u a g e .

  • 8/13/2019 Memphis Usage

    9/9

    5 I N T E R O P E R A B I L I T Y W I T H G E N T L E 9

    L i k e M e m p h i s , G e n t l e s u p p o r t s d o m a i n s t y p e s a n d p a t t e r n m a t c h i n g . U n l i k e M e m p h i s ,

    G e n t l e p r o v i d e s a h i g h l e v e l o f a b s t r a c t i o n t o e x p r e s s l a n g u a g e r e c o g n i t i o n , t r a n s f o r m a -

    t i o n , a n d c o d e g e n e r a t i o n i n a u n i f o r m w a y .

    C o m b i n i n g G e n t l e a n d M e m p h i s a l l o w s o n e t o u s e a s p e c i a l i z e d a n d p r o d u c t i v e c o m -

    p i l e r d e s c r i p t i o n l a n g u a g e f o r t h e t r a n s l a t i o n t a s k s o f a n a p p l i c a t i o n , a n d a l s o t o u s e

    C / C + + p r o g r a m m i n g , e . g . t o i m p l e m e n t t h e u s e r i n t e r f a c e . M e m p h i s e n a b l e s s e a m l e s s

    i n t e g r a t i o n o f G e n t l e a n d C / C + + .

    B e c a u s e G e n t l e i s a b l e t o c a p t u r e m o s t e r r o r s b y a n a l y z i n g t h e s p e c i c a t i o n i t d r a s t i c a l l y

    r e d u c e s d e b b u g g i n g e o r t s . I t s u n i f o r m f r a m e w o r k p r o v i d e s a s t r o n g g u i d a n c e w h e n

    d e s i g n i n g a l a n g u a g e t r a n s l a t o r . G e n t l e o e r s c a p a b i l i t i e s n o t p r e s e n t i n M e m p h i s ,

    s u c h a s s t r o n g l y t y p e d g r a m m a r a n n o t a t i o n f o r m a p p i n g c o n c r e t e t o a b s t r a c t s y n t a x ,

    s m a r t t r a v e r s a l o f t r e e s ( e l i m i n a t i n g t h e n e e d t o w r i t e \ t r i v i a l " r u l e s ) , a n d d y n a m i c

    p r o g r a m m i n g f o r o p t i m a l c o d e s e l e c t i o n .

    J u s t a s a c o m m a n d

    m e m p h i s - h t r e e d e f . m

    m a k e s t h e t y p e s d e n e d i n t h e M e m p h i s l e t r e e d e f . m a v a i l a b l e t o o t h e r M e m p h i s l e s ,

    a c o m m a n d

    g e n t l e - h t r e e d e f . g

    m a k e s t h e t y p e s d e n e d i n t h e G e n t l e l e t r e e d e f . g a v a i l a b l e t o M e m p h i s p r o g r a m s .

    S e e t h e e x a m p l e i n d i r e c t o r y e x a m p l e s / p o l i s h h o w t o w r i t e a t r a n s l a t o r i n G e n t l e a n d

    a d d a f u n c t i o n i n M e m p h i s .

    S e e A l s o

    M e m p h i s C / C + + , A L a n g u a g e f o r C o m p i l e r W r i t e r s

    M e m p h i s L a n g u a g e R e f e r e n c e M a n u a l

    w w w . c o m b o . o r g