memphis usage
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