• No results found

Aspect and XML-oriented Semantic Framework Generator:SmartTools

N/A
N/A
Protected

Academic year: 2020

Share "Aspect and XML-oriented Semantic Framework Generator:SmartTools"

Copied!
20
0
0

Loading.... (view fulltext now)

Full text

(1)

! #"$&% '()* ,+-. / 01234

52687968:<;>=?@;6BA/CED<FG?@;68H9:IG!CJ9;K6MLNF=?@LPOQ?@R52:NAS:NH9H:SF&TUR8:WV9?H79;:IX?J

GRY?@J97:Z=?LP[\J6M:N;]F^@C\_NRX68RMR8CSH`FGa9;b6MLbDcCd9a:Zef:NRM7`FghLc?@K:NR8RM:UTiDbDj?R86

kmlnkmoqpsrut<vxwzy{|o}<~zwt]r€wƒ‚„{,…†o`p]k‡pˆtQ‰mr‹ŠŒŽ~

‘W’c’“•” ‰mrP–W~8Œ˜—jŒh‚#™\–•ސwzr€šŒu‚›{œŸžc 

’c¡ ž ’b‘ psrut<vjw|y{zo#}<~zwt•rP€¢w£‚›ŽuŒ—jŒm¤ ”¦¥ ‰myP}QއŒ

¥

w§‰‡‚¨~8©¢™yb‚¨~mª&‚rut<vjw|yj©šw£}N‰hwzyj©«u‰

¬ˆ­/®¯°b±]²P¯

³x´ˆµb¶m·¸S¹x¹ºš»›¼š»›µ½»¾¨´ˆµb¿W·m¼šÀ˜Á§¶‡µb´Â¾¨Ã9¹¶mÄ>Åc¾¨¿N¾¨¶‡µb·¹¶Æ@Ç<µ»¾Èɹ¿2Ê,Ë>ÌIµb¿NÈɹǕ͋¾À¨·„·¾À‡Î•Ï

¿N¹ºš¹ÅP¼š¾»ÐѸÒÎ<µb¿]ĕ»,·¹µ½Ó]¶¹xÀ¾»»›¹bÁÒµbÔ]·¹´ˆµb·¼ÕÀÂÅc¾¨¿N¾¨¶‡µb·m¼š¹¿ÉÁz¶¹´Ö»mÓs¾À¨¼Ø×<Àµb·m¼š¹¿N»Æ/³x´ˆµb¶·‹Ï

¸S¹x¹ºš»S´ˆµbÄc¾»S¼Õ·Ós¹P»»¼ÕÇ]ºš¾¦·¹#ÙxÔ]¼šÀ‡ÄxºÕڛÈ]¾¨Ûc¾¨ºš¹ÓѾ¨¿xÛx¼Õ¶¹¿]´Â¾¨¿x·»†È]¾È•¼šÀµb·¾È·¹#È]¹´ˆµb¼Õ¿•Ï8»mÓs¾À¨¼Ø×<À

µb¿NÈUÓ]¶¹ÅP¶‡µb´*´*¼Õ¿]Å>ºƒµb¿]ÅPÔ<µbÅc¾»Ð³W¹´Â¾ˆ¹bÁ·mÎN¾»¾ˆ»mÓs¾À¨¼Ø×<Àµb·m¼š¹¿N»Ü§Ê,ËfÌ&Æ@Ý,¸ÝÑÆS³WÀ‡ÎN¾¨´ˆµ»ÞÆ

ʄ³W̕¸ß,µb¶¾*¼š»»mÔ<¾¨È2Á§¶¹´à·mÎN¾*áãâcäŸÃÎ]¼šÀ‡ÎU¼š»µb¿É¼Õ´*Ós¹¶m·uµb¿x·»¹Ô]¶À¾*¹bÁÒÛµb¶m¼š¾ÈU¾¨´Â¾¨¶mÅP¼Õ¿]Å

È]¹´ˆµb¼Õ¿•Ï8»mÓs¾À¨¼Ø×<À›ºƒµb¿]ÅPÔ<µbÅc¾»Ð9³x´ˆµb¶m·¸S¹x¹ºš»ÔN»‡¾»¹Ç•Ím¾À¨··¾À‡Î]¿N¹ºš¹ÅP¼š¾»#»mÔNÀ‡Îiµ»ÒÛW¼š»m¼Õ·¹¶Ó<µb·‹Ï

·¾¨¶m¿N»Òµb¿<Ƚµ»Ós¾À¨·‹Ï8¹¶m¼š¾¨¿x·¾È½Ó]¶¹ÅP¶‡µb´*´*¼Õ¿NÅNЦåM·Ó]¶¹ÞÛW¼šÈ]¾»9À¹xÈ]¾#Åc¾¨¿N¾¨¶‡µb·¼Õ¹¿iµÈNµbÓ]·¾È½·¹·mÎN¾

ÔN»‡µbÅc¾¹bÁs·mÎN¹P»‡¾Ò·¾À‡Î]¿N¹ºš¹ÅP¼š¾»·¹„»mÔ]Ó]Ós¹¶m·&·mÎN¾ÈN¾hÛj¾¨ºš¹Ó]´Â¾¨¿x·¹bÁE»¾¨´ˆµb¿x·m¼šÀ#µb¿<µbºÕÚW»¾»ÞÐ/å8¿*·Î]¼š»

ÃÒµÚcÆ]Ã9¾›¹Ç]·‡µb¼Õ¿>µb·´*¼Õ¿]¼Õ´ˆµbºSÀ¹P»··mÎN¾›È]¾»m¼ÕÅP¿>µb¿NÈ!¼Õ´*Ó]ºš¾¨´Â¾¨¿x·‡µb·m¼š¹¿>¹bÁ¦µÑ´Â¹xȕÔ]ºƒµb¶#È]¾¨Ûc¾¨ºØÏ

¹Ó]´Â¾¨¿x·#Ó]ºƒµb·‹Áz¹¶m´-ÃÎ]¼šÀ‡Îi¼š»#¹Ós¾¨¿@Æ<¼Õ¿x·¾¨¶‡µÀ¨·m¼ÕÛc¾PÆQÔ]¿]¼ØÁz¹¶m´Æsµb¿Nȴ¹P»·¼Õ´*Ós¹¶m·‡µb¿x·`Ó]¶¹¿N¾›·‡¹

¾¨Ûc¹ºÕÔ]·m¼š¹¿@Ð

æÑŒhçˆè&rP‰m—b‚é

»¹bÁz·MÃÒµb¶¾„Åc¾¨¿N¾¨¶‡µb·m¼š¹¿@Æ<È]¾¨Ûj¾¨ºš¹Ó]´Â¾¨¿x·#¾¨¿xÛW¼Ø¶‡¹¿]´Â¾¨¿x·Æ

»¾¨´ˆµb¿x·m¼šÀµb¿<µbºÕÚW»‡¾»ÆNµ»mÓs¾À¨·‹Ï8¹¶m¼š¾¨¿x·¾ÈiÓ]¶¹ÅP¶‡µb´*´*¼Õ¿]ÅNÆ<ÛW¼š»m¼Õ·¹¶Ó<µb·m·¾¨¶m¿@Æ

Ó]¶¹ÅP¶‡µb´ê·m¶‡µb¿N»‹Á|¹¶m´ˆµb·m¼š¹¿@ÆNÊ,ËfÌ&ƕʛ³WÌW¸„Ð

ë ì]íîQïsð„ñ˜òó@îsô‡ðí

õ÷öšø¨ùúüûÞýþøhûbÿùüúWö£û uûxø¨ûøxø <ÿ4ûhöƒú mú]ø¨û húüûÞøƒöƒÿxøhöWúWø¨ùüû

ÿ•úüÿ4ûsøWú•û ö! " hû#xú$ % hû&hûø'(uø üÿÞø' uûö£ú) "xøhö•ú+*,„ùüû

hû•ø¨ùsû„õ/ õ÷öüû„õ û0(12•ú uø¨ö 43Bõ657198Òùö£ú]ø' :üÿbûfúüûÞý; "ƒö %

üÿù<=!,>=!93?=xø'@,BA:ûC=˜ûDüúüöƒøhöWú8E GF<ÿùsû "ø¨ùjøH uöI4û#øhùüû#ÿ•úüÿ4ûsø

90uø 'WÿÞø&A<ú]øKJL&ø¨ùüû%0höƒÿiÿ %H•úsûbúNøˆø'M "Wúüöxøhû(xúNAO '

P*"Q9üöR-øhöWúA<øhùüû|øý2 hû@S:£öšøTAUWúiø¨ùüû@üûV•ûW iû4úNøCûbûX hû@Y "KZ[ ÿ•úüÿ4û hú

öƒú ø¨ùüö\ uøhö£ÿ #W£öƒÿjø¨ö•ú] hûW*^,„ùxøZ[‡ø¨ö_DEû½ø¨ùüû>ÿ hûxø¨ö•ú`>a|øý2 hû

Wûbúüû 'xø >uø •úAX0uû^•úPbdcaef3Bûbø¨ûbúWhö0£û#ca gNaeExúWûh89xú^0WZ‡û4ÿ4ø

øhûbÿùüúWö£û@ú ûaF) " uø,:*

This is a preliminary version. The final version will be published in

Electronic Notes in Theoretical Computer Science

(2)

,„ùüûU "Wöƒú/7 #ø¨ùüö&|ømýC hû"Wûbúüû 'xø ˆöÂø'ùüû üûhö•úüû \C

"Wö£ú:-ûbÿ4öDEÿX & ' % öƒú$xúWû*$ % hûføhùWú`•úüû(û4ÿbö_DEÿxøhöWú 38û**$

=,>=8fö>úsûbûsû ø'/SNüö£ÿgNA;W :üÿ4û$/üûüöƒÿxøhûfüû V•û ûbú]øÉûbúNV<ö •úW iû4úNø*

Wø¨ù øhùüûø •û4ø*ûbú7V<ö •ú ûbú]ø\Wú øhùüû"F) " uø,: ' ûÞý2 ga \‡ød_D9ø¨ùüû

cý›öƒú" uûSNüö hû û4úNø'

ûA>ø<hûÑý›öšø¨ùM# öƒúüö "+g<úWcý>ƒûWû&xúX0hûM•ú2ý#û_- g<úWcý›úUø¨û4ÿùsúüöSNüû

9‡øWú Mû4ÿbö_DEÿjø¨ö•ú

%: dxúEû JQö0£ûö %ƒû ûbú]øjø¨öWú/0uû •úO hû - '0£û%Wú •û4úüû uö£ÿÿ

#-H•úsûbú]ø' WúM•ú^<üöuø' uö0Wsø¨ûa|øý2 hû uÿùsöƒø¨û4ÿ4ø hû

uû - höƒûbúWA øhùWúgNø'O 'sùüö£ÿhû <múNøhû xÿbû 3@[8ˆøhùxø#/û #

\šø¨öR-V<öƒû4ý>!WúW^WúöƒúNøhû 'xÿ4ø¨ö_V•ûˆûbú7VQö Wú ûbúNø

û4úiø¨ùWúgNø'&d‡øWúW "xø*û JQÿùWúWû@ "xøuûføˆÿ " &üúüöƒÿxøhûý›öƒøhù

öšø'›ÿ %H•úüûbú]ø'WúMWøhùüû „û J<ø¨û hú ƒöƒÿxøhö•úW*

,E˜ûhûøhùüûBüûV•û ûbúNø Whû "Wú]ø¨öƒÿCxú_A)uûhû V•û '<øhûbÿùüúüöSNüûÒùhV•û 0û4ûbú

öƒúNø :sÿbû öƒúNøOF) " ‡ø',E:*9ö uø&ø¨ùsû(sø¨ö•ú CV<öhöšø' &üûhö•ú`xøuø¨û uú

ý2> •û_APsø' "jø¨ûÉý›öšø¨ùUøhùüûdWûbúüû 'xøhöWúMV< hÿ4ûÂÿ:üû 0‡ø' 'xÿ4ø

[A<úNø J üû DEúüöšø¨ö•ú*;F<ûbÿWúYø¨ùüûMûbÿÞø- höƒûbú]ø¨û W % ö£ú ýC"üû ø

0søWöƒúP % uû hû - '0£ûhû "xúNø¨öƒÿÂÿ %H•úüû4úNø*B,„ùüö›úüû4ý üúsÿ4ø¨ö•ú£öšø A <û›úxø

uûSNüö hû9xúNA ' ø' Wú[ "xøhö•ú+*,„ù:•øhùüûCsöƒøhö•ú\ ûbÿ4ø •ú#@VQöhöšø'

ÿWúX0û*ÿ %ƒû4ø¨ûA WA<ú öƒÿU3|ý›öƒøhùsø9 uûbÿ %üöxøhö•ú8 * FQû4ÿ4øhöWú\ uûhû4úNø„ø¨ùüûhû

uû "Wú]ø¨öƒÿˆø:*

,E! û4û4øý›öšø¨ùˆø¨ùüû hÿùüöƒøhûbÿÞø' uû2 uûSNüö hû iû4úNø'WøhùüûB %: E|øýC hû uÿùüöšø¨û4ÿ

-ø hûýCd0Wüöš-ø& üúW/Éÿ4ûbú]-ø' '|-øýC hûÿ %H•úüû4úN-ø\-øhùüû% û'•ûiÿWúN-ø' £û *

F: U uø',E:ö% "üûP!uûV•û '›öƒúüûûbúsûbúNø(|ømýC hûÉÿ %H•úüû4úNøiøhùxøÿ

\súüö£ÿxø¨ûý„öƒø¨ùZûxÿù Wø¨ùüû d07A û JQÿùWú•öƒúa[AQúsÿùW •ú& û'Wû*",„ùüû%bcae

øhûbÿùüúWö£ûU hûXWhû øIû4úüÿ:sûÉø¨ùüûhûP û'•û*`mú FQûbÿÞø¨ö•ú 5WøhùüûX %:

hÿùüöƒøhûbÿÞø' uû&F) " ‡ø',E:ö>üûuÿ hö0ûY*

12•úüÿ4û húsö£úø¨ùüûö£ú]ø¨û Wÿ4øhöV•û hûSNüö hû ûbúNø:F) " ‡ø',E:ùWú û J<ø¨û4úhö0ƒû9Wú

%:W ý›öƒøhù^<hûÞø@ uû4øhøTA7-T uö£ú]ø¨û @ CV<ö£ûÞý`û ‡ø' Wú_AX0hû^•úXbcae

øhûbÿùüúWö£û* xøÉö£ú]ø¨û 'xøhö•ú WúIø'P0û"û4úZøúüûÞý W£öƒÿjø¨ö•ú Düû

øhùüû!bdc^e Ujø,öCWhûX CLjø½û JQÿùWúWûd0ûÞøý#ûbû4úÿ %H•úsûbúNø>WúPCWú

sûhÿ hösø¨ö•ú;Wú•ûX úsû4ý ƒöƒÿxøhö•úW* ,„ùüûuû.ö£ú]ø¨û 'WÿÞø¨ö_V•ûMüúsÿ4ø¨ö•ú£öšø¨öƒû

hûd uûuûbúNøhû)öƒúaFQûbÿÞø¨ö•ú*

Q!0HQøUø¨ùüû uû - '0söƒöƒøTAf hûSNüö hû ûbúNø F) " uø,:Phû^Wú V<öüûMhû

V7-û 'WVWúsÿbV7-û |øýC hûø¨ûbÿùüúW•ö£ûM‡ø¨û " öƒú V uöP hûhû hÿù1ý gN

) "!$#)%!!"!'&:()'0søÑù "•ûbúüûAa7xøhùüû uû)ø'Wû4ø¨ùsû *múaWÿ4øý`û0 W£öƒÿ

-øhöWúWú)ø¨ùüûû iû •û4úüÿbû<bdcaeãø¨û4ÿùüúW•öƒûd uû<hûÞø' ( •û\üö*Lhö•ú

(3)

íîüôó ð„ð

mú]ø¨û hú_AF) " uø,: hû&û.J<ø¨ûbúWüû\Wúuø' •ú_A˜øTA)û&0uø 'WÿÞø A<úNø'KJU3QF),@8

sûDEúüöšø¨ö•ú B@öšø'ø:* ,„ùüû˜ö %H uø'WúNø#úWøhö•úW /ø¨ùüûhû!üû DEúüöšø¨ö•úC

uûN)-û 'xø WúZøTA)û* ,„ùüûUSû 'jø' hû%7xøhùüû uûö£ú]ø'.ú iû hûÞø' ¦ø A:û* ,„ùüû

•ú!û 'xø ! hûˆøTA:Sû WúWú ûY* ö hû !\hùPý>˜ø¨ùsû\üûDüúüöƒøhöWúOW

ø AOWú•û†øhö£ú7A

1

* Âû.J "W£ûø¨ùüûû xø' 0û•úÂø'Uø¨ùsû

!,øTA:û#Wúùømý2(•úW„øhùüû&D uø!•úüû öÒø A:û#"$&%<Wú.ø¨ùüû&hû4ÿ•úWO•úüû

øTA)û('*),+*

Formalism of tiny is

Root is %Top;

Top =

program(Decls declarationList, Statements statements);

Decls =

decls(Decl[] declarationList);

Decl =

intDecl(Var variable), booleanDecl(Var variable);

Statements =

statements(Statement[] statementList);

Statement =

affect(Var variable, Exp value),

while(ConditionExp cond, Statements statements),

if(ConditionExp cond, Statements statementsThen,

Statements statementsElse);

ConditionOp =

equal(ArithmeticExp left, ArithmeticExp right),

notEqual(ArithmeticExp left, ArithmeticExp right);

ConditionExp =

%ConditionOp, true(), false(), var;

ArithmeticOp =

plus(ArithmeticExp left, ArithmeticExp right),

minus(ArithmeticExp left, ArithmeticExp right),

mult(ArithmeticExp left, ArithmeticExp right),

div(ArithmeticExp left, ArithmeticExp right);

ArithmeticExp = %ArithmeticOp, int as STRING, var as STRING;

Exp =

%ArithmeticOp, %ConditionOp, var, int, true, false;

Var =

var;

End

- ¼ÕÅNÐ/.PÐ\·mÎN¾10,³W¸ È]¾h×N¿]¼Õ·m¼š¹¿f¹bÁ3254768

Wú7AUQF),6sûDEúüöšø¨ö•úYF) " uø,E:`ÿWúXsø "xø¨öƒÿ_AU•ûbúüû 'xøhû\‡ø' sÿ

-ø hûûüöš-ø' !û4ÿbö_DEÿ-øf-ø¨ùsû\xú•û*@,E( Wÿ4öƒöšøxøhû øhùüû½ûüöƒøhö£úW 3Bø'>ÿNA7- uøhû

úW:üû'8 @öšøö>hû \ø'% "gWûÂøhùüû*ø A:ûÂö£úüÿWhö•ú

2

Hhö0£û*

õûˆýCWú]øH@ \üÿù$@Hhö0£ûø'Uuû û JQöuø¨öƒú |ømýC hûˆÿ "HWúüûbú]ø'!‡ø¨û

öƒú" ø¨ùüûÂõ 51 ‡øWú Hüÿù$›ø¨ùsû&=:9dc 3 =!<ÿ û4úNø:90WZ‡û4ÿ4øc^:sû8

Q<;Uø' ùxúƒû`bcae <ÿ ûbú]ø'* søˆøhùüöOxøuø¨û aQ=;P<ûúWøÿWúhöüû

‡ø' Wú_AIø A:û`‡ø' sÿ4ø'W hû*^,Ea UxúüöWjø¨û(‡ø' Wú_AIø A:û ø' uûbû9ý`ûfùV•û>û

JN-øhûbúsû÷öšø>ý›öšø¨ù øhùüû)úWø¨ö•ú(D)Jsû÷úW:üû>ƒö‡ø¨ûqú:üû$Wú øTA)û÷úW:üû]3Bÿ* *

öW hû 8 *#múIø¨ùsö*ýCA\ø¨ùüûø' hû4ûÿ•úWhöuø¨û4úüÿAZöd 'Wú]ø¨ûbû 0NA)ø¨ùüû VÉøTA:û

-ÿùüû4ÿ.gWû Cxøöƒøÿ•ú‡ø' sÿ4ø¨ö•ú+* ûWÿù(û 'jø' WF: U uø',E: sø'

Ujø¨öƒÿ_A%•ûbú:-û 'xøhUjø¨öƒÿ_A%•ûbú:-û •úüû)ÿPWú ø¨ùüû$<ÿböxø¨û÷ö£ú]ø¨û Wÿ4û]39ö uû$5 hùPý>2ø¨ùüû)ö£ú]ø¨û Wÿ4û

Wûbúüû 'xøhû Âø¨ùüû>&?û 'jø' '8 GWúW •úüûföƒúNøhû [ WÿbûU0NA ø A:û*P,„ùüûhû>ÿuû

ÿ•úNø'Wöƒú>ø¨ùüû!Wû4øhøhû 9xú uû4øhøhû `úüûbûüû2ø'½ùWúW£ûø¨ùsû!•úWd3Bû**A@B"$CEDFHGJIFKh

L

M"$&CEDNG:IFKOK8 *

‹ø`ö#ö %H ‡øWú]ø#øhùxøø¨ùüû@WúW•û@üûhö•úüû ,ÿWú(üû DEúüûøhùüûbö xúWû3

0)-‡ø' 'xÿ4ø!A<ú]øKJ8@0NAMhöƒú(uøxú a Ujø'#3=!,>= FQÿùüû U8@ Hhû$07AUø¨ùüû

õ 51 xúZúxøˆúsûbÿbû' hö_AIý›öšø¨ùIøhùüûöƒúNø¨û húQF:, üû DEúüöšø¨ö•ú "xødCF) "

‡ø-,E:*/,„ùsû hû hûý`ûÉùV•ûÉö %ƒû ûbú]ø¨ûþÿ•ú7V•û uöWúþø:ý›öšø¨ù] ûP uû‡ø' höƒÿ

-øhöWú* !û.JW %ƒû#ø¨ùüûÉúWø¨ö•ú]ø A:ûP<ûúWøû.JWW£öƒÿböšø'_Aþû.Jsöuøiý„öƒø¨ùsö£ú ø¨ùüû

1

PQSRUT=VWXWNVWXYMZ[]\S^_`QVaS\S_`bWXR

(4)

+getVariableNode(): tiny.ast.VarType

+setVariableNode(tree:tiny.ast.VarType):void

+getValueNode():tiny.ast.ExpType

+setValueNode(tree:tiny.ast.ExpType):void

tiny.ast.AffectNodeImpl

Tiny

DOM

SmartTools

org.w3c.dom.Element

org.apache.xerces.dom.ElementImpl

fr.smarttools.tree.UntypedNodeImpl

fr.smarttools.tree.UntypedNode

fr.smarttools.tree.FixedNode

tiny.ast.AffectNode

fr.smarttools.tree.FixedNodeImpl

tiny.ast.StatementType

- ¼ÕÅNЕÐ亃µ»»Î]¼š¾¨¶‡µb¶À‡ÎxÚ½Á|¹¶·mÎN¾ M2¹Ós¾¨¶‡µb·¹¶

package tiny.ast;

public interface AffectNode extends StatementType {

public tiny.ast.VarType getVariableNode();

public void setVariableNode(tiny.ast.VarType tree);

public tiny.ast.ExpType getValueNode();

public void setValueNode(tiny.ast.ExpType tree);

}

- ¼ÕÅNÐNâ•Ð,¾¨¿N¾¨¶‡µb·¾ÈM29¹Ós¾¨¶‡µb·¹¶¼Õ¿W·¾¨¶‹Á|µÀ¾ M2

=,>=4 "xø!ö *û*Zø¨ùsûÉûƒû ûbú]ø'^3hû4ûbú #û 'xø '8\ úWø<0ûWú ø' ú iû

uû4ø* Q! ø¨ùüöúWø¨ö•ú ýCûuûbúNøhö?ý`û2ù ø$üûDüúüûP.ø A:û2öƒúWBû uûbúüÿ4ûP

û4ÿù:-xúüö (ø' ÿ•úNV•û uø"=!,>=!*`Q9üöšø¨ö•ú_Aø¨ùsûX hö•ù]ø% uø<û£û ûbú]øUsûDEúüöšø¨ö•ú

uù •ú_AZÿ•ú]øWöƒú ' ûÞø¨û ˆûbú]ø¨öšø A uûBû hûbúsÿbû½ø'ö£úsö£ÿxø¨ûiø¨ùsûiøTA:û\`ø¨ùüû

•úa38û** ø¨ùüûP£öƒúüû 9ö hû hùWcý>( =!,>=>-mûSNüö_V£û4úNø sûDEúüöšø¨ö•ú ø¨ùüû

&û xø' 8 * úW uøüúxøhû_A BûÞý =!,>=!( hûÉý> uöƒøuø¨ûbúŸöƒúþøhùüö!ýChA* ,E/0û

0£û›ø'\xÿbÿbûsøCB UxúNAU=,>=!C Hhö0ƒû % uûÿ %£û.JføTA:û!Wú_A:hö3BøTA:û

öƒúWBû hûbúsÿbûh8,ýC›ÿ höƒûMsø*

<!ENTITY % Top ’program’>

<!ENTITY % Statements ’statements’>

<!ENTITY % Statement ’if|while|affect’>

<!ELEMENT program

((%Decls;), (%Statements;))>

<!ELEMENT statements

(%Statement;)*>

!

<!ELEMENT affect

((%Var;), (%Exp;))>

-¼ÕÅNÐ#"NÐ%$†µb¶·¹bÁ/·mÎ<¾,Åc¾¨¿N¾¨¶‡µb·¾ÈiÝ,¸Ýq¹bÁA254768

c^ uû V•û sý`û*ùV•û*ö "W£û iû4úNøhû^•û4úüû xø' ,øhùxø9W :üÿ4ûd# hû 9Wú2ø¨ùüû

<ÿ4öjø¨û W hû4øuø A7- höƒúNøhû ø'a "Wúüöxøhû W % ý›öšø¨ù ^ % hûU hû0ƒûU

"xø˜ø¨ùWúøhùüû#bcae •úsû* ˜øhùüö Hhû†ø¨ùüû#üûhö•úüû *ù˜ø' hV<öüû!û.J<ø' '

jøhø' uö0Qø¨ûöƒúW "xø¨ö•ú"•úiûxÿùfûƒû û4úNø3 û 'xø' 8 sûDEúüöšø¨ö•ú$3 hû4û!jøhø' uö0Wsø¨û

öƒúöW hû &8.* ,„ùüö2Hhö0üö£öšøTAföBhû üûuöWúüû `øhùxø W½úWWø#ùV•ûû J)û ‡ø¨öhû

WúãùPýÖø')ý> höšø¨ûXa hû <Wú` "gWû<uûbúuûPWú_A/ & "CWú`üú \0söW

Wú•û*

9ö hû& uùcý>dø¨ùsû<û4ÿbö_DEÿjø¨öWúÂøhùxø*ÿWú 0û#•ûbúsû 'jø¨ûO xú QF),

(5)

affect(Var variable, Exp value)

with attributes {fixed String S1 = "=",

fixed String styleS1 = "kw",

fixed String AO = ";",

fixed String styleAO = "kw"}

-¼ÕÅNЕÐW·m¶‡µÈNµb·‡µU¹bÁ„·mÎN¾ M2˜¹Ós¾¨¶‡µb·¹¶½ÔN»¾hÁ§Ô]ºÁz¹¶ˆÅc¾¨¿N¾¨¶‡µb·m¼Õ¿]ŵÉÓ<µb¶»¾¨¶½µb¿NÈI·mÎN¾

µ»»¹xÀ¨¼ƒµb·¾È!Ó]¶¾¨·m·MÚxÏBÓ]¶m¼Õ¿x·¾¨¶

øhùüûOQ=;"ˆøhùüûOWú•û]38ö *¢û* •úsû ÿMWúqøhùüû <ÿböxøhû1öƒúNø¨û xÿbûO0NA

û 'xø xúM•úüûÂöƒúNøhû xÿbûd0NA2øTA)û8

øhùüûd0uö£ÿVQöhöšø' @hû „ÿ hûxø¨öƒú"hû "WúNøhö£ÿ&WúA:hû

hû ø¨ùüûWú•û\38ö_\û.J<ø' '&[AQú]øWÿÞø¨öƒÿ!7 2 hû@ V<ösûX û 'jø'

xøuø' uö0Qø¨û›öƒúøhùüûdxú•ûdüû DEúüöšø¨ö•ú 8.

\ hûÞøhøTAN- höƒúNøhû ,ø<üúW uûQF),E>Wÿ4ÿ üö£úW!ø'½ø¨ùüûhû*û J<ø '<[A<úNøxÿ4ø¨öƒÿ7

( iöƒúüö " uû hÿ4û<D£û½ø¨ùxøÑÿWúNøxö£úhû ÒöƒúW Ujø¨ö•ú$ øhùüû<‡ø' üÿ4ø hû

ûüöƒø @WúWUø¨ùüûd hû

øhùüû =!,>= „øhùüû&FQÿùüû "W*

tiny.g

TinyParser.java

TinyLexer.java

TinyParserTokenTypes.java

TinyParserTokenTypes.txt

TypeChecker.xpro

tiny.xml

AffectNode.java

AffectNodeImpl.java

StatementType.java

...

API of Tiny

tiny.dtd

AbstractTypeCheckerTinyVisitor.java

TraversalTypeCheckerTinyVisitor.java

AbstractTinyVisitor.java

TraversalTinyVisitor.java

tiny.ast

tiny.dtd

or

tiny.xsd

tiny.xsd

Antlr

tiny.xpp

Visitor

Generator

API

Generator

Import

Parser

Generator

Pretty

Printer

Generator

Resource

Generator

DTD

or Schema

Generator

- ¼ÕÅNЕÐ0#ºÕºE·mÎN¾›»mÓs¾À¨¼Ø×<Àµb·m¼š¹¿N»Åc¾¨¿N¾¨¶‡µb·¾È!Áz¶¹´êµb¿ 0,³W¸

û JW %ƒûøhùWúgN½ø'.ø¨ùüûhû2ø:B•ûbúsû 'jø' Òøhùüû û4úNV<ö •ú û4úNø!ýC

sø' "xøhö£ÿAa•ûbúüû 'xøhû •ú_Aa •úüû#QF), ûbÿ4öDüÿxø¨ö•ú;3 hû4û 9ö uû !<•û

58 :•úüû ) +%IOCdûbÿbö_DEÿxø¨ö•ú 3 hû4û öW hû8>)Wúfø¨ùüûø A:û -‹ÿùsûbÿgWû CV<öhöšø' 3 !$#)#

V%ƒö£úsû8.*

,„ùsö^W0)-Tuûbÿ4øhöWú hûhû4úNø.ýChA:ø' ý> höšø¨û/Wú_A:hû 38û*W* øTA)û.-mÿùüûbÿgWû Wú

û Vxø 2ÿ "söƒû '8•úO ' %07A$uö£úÉø¨ùsû#VQöhöšø' düûhö•ú jøhø¨û húY*&

øhùüû hûüû ½ýCxúNøø'ùV•ûX % uû üû4ø'Wö%xúãû J)WúxøhöWú<•ú øhùüö½ý`ûR-TgNúPý›ú

ûÞø¨ù:A›ùüûÿWúf uûBû >ø )( #W ! * fö£úWuøxúüÿbûý#û$ hûhûbú]øÉøhù hû4ûû

JN-øhûbúuöWú>\ø¨ùüû!V<öuöƒø 9jøhø¨û hú2ø¨û4ÿùüúsöSNüûV !höƒú% uû Eû.JQöV<öšø AX ûbÿùWúsö ý›öƒøhù

(6)

W % ö£úWYV)5XW£öšøhøhö£úÉø¨ùsûø' hû4ûø' hV•û '>3V<öuöƒød û4ø¨ùW)Iÿ8Wúø¨ùüû<uû

"Wú]ø¨öƒÿ&xÿ4ø¨ö•ú>07AXhöƒúU % uûÂÿ "W£û.JaûbÿÞø'*

,E "gxûIøhùüû üû V•û ûbúNø^ V<öhöƒø P0uû Wú÷øhùüû QF), üû DEúüöšø¨ö•úûhöƒû

F: U uø',E:\sø' "xøhö£ÿA •û4úüû 'xøhûˆøý MVQöhöšø' ÿhû

L S% NM" L SI%XWú %HH% L &C " L

SIB%*%,„ùüû"0Wuø' Wÿ4øV<öuöƒø düû4ÿ hû&ø¨ùüû#VQöhöšø û4ø¨ùW:(3•úüû<0NA

û 'jø' '8 *,,ùüûO% %

L

CU"

L

EI%½öƒúüùüû höšø'C Öø¨ùsû

L

S% NM"

L

SI%&WúÉö %ƒû

û4úNø'#øhùüûUV<öuöƒø< ûÞø¨ù:½ö£ú` üû ˆø'aû [ ^üûsøhù)- D uø½ø' uûbûfø 'hV•û ?*

,„ùsö(VQöhöšø' 2ÿWúf0û)û J<ø¨û4úüû Wú öƒø(V<öuöƒøX û4ø¨ùW:X uûDEúüû 3 hV•û höüû4ú 8fø

ûbÿ4öAMWú^Wú_A)uö*

,„ùWúgN›ø'!ø¨ùsû=) +%MIC\Sû4ÿbö_DEÿjø¨ö•úaWú•û F) " uø,:Eöƒø›ö>Hhö0ƒû

ø ûbÿ4öA øhùüûaV<öuöƒøXhöWúxø hûÉö?*û* ø'`•û4úüû xø¨ûaV<öhöƒø2ý›öƒøhù6üö*Sû hû4úNøÉú û

uû4ø húãøTA)û2xú] ' û4øhû * ,„ùüûX 'xú: höšøTA øhùüö%û •úƒöIxø¨ö•ú ö%xø

øhùüûa3QF),@8ÑøTA:ûUƒûV•û?*öW hû X hûhûbú]ø'ˆø¨ùüû ),+!%MIOC ûbÿbö_DEÿxø¨ö•ú CUøTA:û

-ÿùüû4ÿ.gWû +* øhùüö!û4ÿbö_DEÿjø¨ö•úY/ø¨ùüû\[A)‡ø¨û sø' "xøhö£ÿA^Wûbúüû 'xøhû

øhùüûøý ÿ hû4ÿ4ø'_A7-‹øTA:ûXV<öuöƒø d3

L S%H M" L SI% Wú%HH% L &C " L SIB%8.* 9Ñú_A

WhûW V<öuöƒø iûÞø¨ù:ùhV•û›ø' 0û@ V•û höüû4ú>ø ö %ƒû ûbú]ø`ø¨ùsû›ø A:û -‹ÿùüûbÿgWû 3 uûbû

öW hû " ›ø¨ùüû &Cû 'xø 8.*@,„ùüû#)VWúNø'•û&uö£úW D£û$V<öhöšø'Ñöø

V•ö.ÿuøWúWM0søxö£úM % uûd hû0W£ûV<öuöƒø' @ %*

XProfile TypeChecker;

Formalism tiny;

import tiny.visitors.TinyEnv;

Profiles

Object check(%Top, TinyEnv env);

Object check(%Decls, TinyEnv env);

Object check(%Decl, TinyEnv env);

Object check(%Statements, TinyEnv env);

Object check(%Statement, TinyEnv env);

String check(%Exp, TinyEnv env);

String check(%ArithmeticOp, TinyEnv env);

String check(%ConditionOp, TinyEnv env);

String check(%ArithmeticExp, TinyEnv env);

String check(%ConditionExp, TinyEnv env);

String check(%Var, TinyEnv env);

Strategy TOPDOWN;

- ¼ÕÅNÐWÐ! `¼š»m¼Õ·»m¼ÕÅP¿<µb·mÔ]¶¾»#¹bÁ\µÑ·MÚxÓs¾hÏ8À‡ÎN¾À‡Äj¾¨¶Á|¹¶1254768

public Object check(AffectNode node, TinyEnv env) throws VisitorException {

String varName = node.getVariableNode().getValue();

String typeLeft = env.getType(varName);

String typeRight = check(node.getValueNode(), env); //visit the value node

!

if (typeLeft == null)

"

errors.setError(node, "This variable " + varName + " was not declared");

#

else {

$

if (!typeRight.equals(TinyEnv.ERROR) && (!typeLeft.equals(typeRight)))

&%

errors.setError(node, "Incompatible types: " + varName + " is a" +

typeLeft.equals(TinyEnv.INT)?"int":"bool") +" variable");

}

return null;

}

(7)

õ÷öƒøhùø¨ùsû:) +%MI OC#Wú•ûEöšøö"Huö0W£ûˆø"û4ÿbö_ AUø¨ùsûÂø' uûbû*ø' 'V•û '

3 ø¨ùüûC‡ø ‡ø¨öƒú*ú:üû`ø˜ø¨ùüûCüûuøhö£újø¨ö•úú:üû3'88LV<öuöƒø *G,„ù:NWúAˆø¨ùüû

úW:üû•ú)ø¨ùüû\xø¨ùO hû&V<öhöšø¨ûZöƒúuøhûOB&ø¨ùsûú:üûø¨ùüû½ø hû4û*‹ø hûüÿbû

øhùüû"V<öhöšø' & üúNøhö ûU•ú/höIbû0ƒûfø' uûbû\WúW`0HhV•û(øhùüûUuöI4û(`øhùüûU•û4úüû 'xø¨û

V<öhöšø' * Q sûû4úüûbúüÿbû$ üù xú_A:hö(WúŸø¨ùüû^QF), üû DEúüöšø¨ö•ú öUû iû

ø •ûbúsû 'jø¨û½øhùüûÿ uûHWúüöƒúM0Wuø' Wÿ4øWú)ø' hV•û 'V<öuöƒø ˜ý›öšø¨ùø¨ùüû hö•ùNø

V<öhöšø'#Wÿ4ÿ üöƒú.ø'øhùüûU•ö_V•ûbú xøhùY* ˆû.JW %£ûfý„öƒø¨ùøhùüûiø 'hVWû Bû4ÿbö_DEû

Wú 9ö hûW•ú_AIø¨ùüû"V<öuöƒø#,øhùüû CMxúi&û 'xø \xúø¨ùüû"V<öhöšø'

ø¨ùüû<û xø' *ÿ•ú]øWöƒúüû/0ûÞøý#ûbûbúZø¨ùsû% :xøU3 !8Wú ø¨ùüûhû%û xø' "38ö *¢û

+!%MIB@ %

L

H$

L

xú %Wÿbÿ sö£ú!ø'ø¨ùüûQF), üû DEúüöšø¨ö•úM 9ö uû !d•û

58`ý›ö 0ûÂÿƒûY*

Traversal Test:

%Top -> while, affect;

- ¼ÕÅNЕЦ¸¶‡µÛj¾¨¶»‡µbº»mÓs¾À¨¼Ø×<Àµb·m¼š¹¿Áz¶¹´ ·mÎN¾„¶¹x¹·Ü`ß9·¹ 4˜µb¿NÈ M2

mú F: U uø',E:9ý`û Whû>øhùüû hVa uû Eû.JQöV<öšø A` û4ÿùxúüö (øö %£û ûbúNøø¨ùüû

V<öhöšø' *ø¨ûbÿùüúüöSNüû(WúZúxøÂø¨ùüûÿhöƒÿsøhöWú/2Pû4ÿbö_DEÿU û4ø¨ùW:YE_A

sûbúWøhû +A@üû DEúüû6•úqûWÿù6Sû 'jø'

3

* múWüûbûYø¨ùüûöƒúNø :sÿ4ø¨ö•úf

V<öhöšø' @ Dƒû&W •ùüö0üöšø'> WhöƒúføhùüöÿhöƒÿEsø¨ö•ú`3EN +AC ûÞø¨ù: 8.*2Q

Wûbúüû höƒÿ û4øhù: 38ú iû IFM"

L

S 8ÉöÉû JQû4ÿsøhû1ý›ùüû4ú Wú7A;V<öhöšøM û4øhù:÷ö

ÿ£ûY*<,„ùüû%7Gø¨ùüöd•û4úüû uö£ÿ% û4øhù:ZöÑø'UöƒúNVgWûø¨ùsû hö•ùNø+V<öuöƒø û4øhù:

3|ý›öƒøhùa<uø' •ú_A7-‹øTA:û.ú:üû8C0NAXuö£ú" hû üû JQö_VQöšøTA*

,„ùüû#uû# hû Eû JQö_VQöšøTAö! súNø¨ö û -‹û J)ûbúhö_V]û*,EXWÿ4ÿbû£û 'xøhû½ø¨ùüû½öƒúNVgWû#

-ÿ4ûHxúUö£úWüö uûbÿÞø¨ö•úUø0W£û*ö9uøjø¨öƒÿA :üÿ4û^xø„ÿ %üöxø¨ö•ú)-Yø¨ö iûÑý›ùüû4úUø¨ùüû

0uø 'WÿÞø V<öhöšø' 9öG•ûbúsû 'jø¨û+* ,„ùüö9ø0ƒû`ÿ•ú]øxö£ú ûWÿù<xö 93û xø' xøTA)û8

øhùüûhVK^ uûBû uûbúüÿ4ûfø'ø¨ùüû%VQöhöšøM C&@!%M#"! B$&% '!IFK]0WZ‡û4ÿ4ø ø.ÿ?*2õ÷öšø¨ù

øhùüö!ø'0ƒûöƒø!ö% Huö0W£ûÉø' ÿùWúWûÉøhùüû V<öuöƒø% iûÞø¨ù: ú ûPWúWãø' ùV•û

sö"Sû uûbúNø@ ûbú]ø'*,„ùüö>Qø¨ö•úUö>#hö %£ö_DEÿxø¨ö•úM&øhùüû \šø¨öR-T

ûÞø¨ù:M)-W 7ûÞø¨ù:M)-Wÿùø¨ùxøûÞø¨ù:M)-WA<ú öƒÿ_A"û [ %øhùüû>hû hÿù(Sø¨ùüû>0û‡ø iûÞø¨ù:ø'&_A*9õ û

ùhV•û,ÿ % hûø¨ùüûhû`øý2 7Wÿùüû0NA&höƒúd hV! \ƒøhö_- û4ø¨ùW:ö %£û

ûbú)-ø'xø¨ö•ú ?* ,„ùüû&û "Wúüÿ4û! uûˆûSNüö_V£û4úNøH0sø @ 7Wÿù.ö@ \üÿù)ûhö£û

ø" uûƒöI4û*

( *) ,+- /. 10

,„ùsûM uû Eû.Jsö_V<öƒøTA] iû4ÿùWúüö hûþø' ö %ƒû ûbú]øiø¨ùüûXV<öhöšø' %xøhøhû húãø¨û4ÿùüúsöSNüû

"gWû„ø¨ùüû*û JQûbÿsø¨ö•ú^GWüöƒøhöWú†ÿ:üûd0û hû 9|øhû `ø¨ùüûV<öhöšøÿ9Huö0W£û*

mú1ø¨ùüöýCAdþÿWúüÿbûsøa<Sû4ÿ4ø[-T uö£û4úNøhû % iöƒú *!':%! ûbÿbö_DEÿ/

>V<öuöƒø ÿxúa0û&üû.ý›öƒøhùsø %:üö_AQöƒúføhùüû& uÿbû ÿ:sûHüúƒögWû ø¨ùsû D uø

V•û uö•úW2+Q!ûbÿÞø *!"!h5* Qú(û4ÿ4ø`ÿWúU0û@üûDüúüû Z[uø 07Aö "W£û iû4úNøhö£ú ø¨ùüû

L

+A9ö£ú]ø¨û Wÿ4ûWúøhùüûbúU uûbÿ üû$3 hû4û@ û4ø¨ùW:B•ú 9ö hû !$#78G•úUxúNA#V<öuöƒø *

3

2 cVMa \43FYBYMW`Q*bUVZ VW`QY=^R W65 TBR Q_X[MZR aEQ*\SY:TBR87MR WXY95 \S^_`Q3d _jZ&T Y;:R=<1b_XR Z\>7 _`Q _j\SYaEQ8?A@PB\8BF\S^RU_ja

bYBTBR Q VMaSR*WXRUQEQ aERUVMTV9CWXR DcmYMaERAbUVMQ\EQ8B ZYVMQE5&R b\$BBZY \SaER R*\EaEV#7MR aQSVW bE^Y_Xb R9BBR \Eb8F!\E^VZf\E^R7,l*YMa

(8)

Ñû JW %ƒû&ö_ø¨ùsû%û4ÿ4ø 9ö hû!)!!ö hû4ÿ üû •ú V<öhöšø' ¦öƒøÑý›ö9ø' 'xÿbû

sø/ø¨ùüûÂÿƒûPVQöhöšø'*

VisitorImpl

+visit(node:Node,params:Object): Object

#invokeVisit(params:Object[]): Object

+addAspect(aspect:Aspect): void

+removeAspect(aspect:Aspect): void

+addAspectOnOperator(op:Operator,aspect:Aspect): void

+removeAspectOnOperator(op:Operator,aspect:Aspect): void

+addAspectOnType(type:Type,aspect:Aspect): void

+removeAspectOnType(type:Type,aspect:Aspect): void

- ¼ÕÅNÐ .•Ð #¼š»m¼Õ·¹¶Ã¼Õ·mÎfµ»mÓs¾À¨·Ü§Û#cß*0 $¦å

package fr.smarttools.debug;

import fr.smarttools.tree.visitorpattern.Aspect;

import fr.smarttools.tree.Type;

public class TraceAspect implements Aspect {

public void before(Type t, Object[] param) {

System.out.println ("Start visit on " + param[0].getClass());

}

public void after(Type t, Object[] param) {

System.out.println ("End visit on " + param[0].getClass());

}

}

- ¼ÕÅNÐ .B.PÐ0`»mÓs¾À¨··mÎ<µb··m¶‡µÀ¾»¹Ô]··mÎN¾„ÛW¼Õ»¼Õ·´Â¾¨·mÎN¹xÈ]»

FQûV•û '2ûbÿÞø'ÿWú`0ûfÿWúüúüûbÿÞø¨û]Wú`MV<öhöšø' *M,„ùüûA uûfû JQûbÿsø¨û öƒú`uû

-SNüû4úüÿbûP3?Wÿ4ÿ üöƒú>ø'føhùüû\ hû•öuø' xø¨ö•ú$ üû 8 *@,„ùüöÑÿ•úsúüûbÿÞø¨ö•ú 3?ý`ûGø¨ùüû

söuÿ•úüúsûbÿ4øhöWú 8„ÿxúM0ûWúüûdxø9 üú]ø¨ö û*,„ùüûd0û4ùhV<ö >G\V<öuöƒø ›ÿWúÉø¨ùN>0û

%:üö_DEûOWA<ú ö£ÿAa0NA^üöšø¨ö•ú$ ý›öšø¨ùW 'ýCÒø¨ùüûhû<ûbÿÞø'* û JW

#-W£ûWd 'üùüöƒÿüû0W\ %:üû> øhùüû>V<öuöƒø ý›öšø¨ù( ‡ø¨û:-T07AN- uø¨û2û.JQûbÿQø¨ö•ú>ýC

ûbÿ4öDEû dWú û4ÿ4ød hû W£ûd Wú7AaV<öhöšø' *\,EMø¨ùüûhû"ûbÿÞø'd•úø¨ùüû

V !dV<öuöƒø Eø¨ùüûd•û4úüû höƒÿ û4ø¨ùW:`3 I1FM"

L

S[8,ýC›û J<ø¨û4úüû+*

(

*) ,+ . - /.

õ÷öšø¨ùIø¨ùüûÿWúüÿbûsø&CûbÿÞø-T hö£û4úNøhû W % ö£úW¦öƒøˆö Hhö0ƒûiø'PƒöƒøÂø¨ùüû

ø hû4ûø 'V•û 93V<öhöšød û4ø¨ùW:Iÿ8!Wúøhùüû#hû UxúNø¨öƒÿ< <ÿ4ûhöƒú 3hû "Wú]ø¨öƒÿ%Wÿ

-øhöWú8 *e\û4ø W WHhûø¨ùjøø¨ùsû@V<öhöšø`ÿ:üû@/øhùüû<& "$&%O'*) +>û 'jø' ù

øhùüö@hùû

visit(AffectNode node ...) {

codeBefore

visit of the first son

codeBetween1_2

visit of the second son

codeAfter

}

9Ñúüûˆÿxú^0hû V•ûˆø¨ùxø›ø¨ùüû uû "Wú]ø¨öƒÿ& ‡ø#3Bö?*û&\û JQÿbûsøø¨ùüû uûbÿ uöV•û½ÿ'8

ö üö_VQöüûiöƒúNø;•ú !Cüö£û4ÿbû@ÿ:sû* ,„ùüûhû !Cüö£û4ÿbûÿWú<0û`ø' hûxø¨û<£ögWû

ûbÿÞø'*ý›öƒøhùZúsû4ý H•öƒúNø' Wúsÿù höƒú\ö*¢û<0û hû 0ûÞøý#ûbû4ú Wú |øhû ˜ø¨ùsû#VQöhöšø

ûÞø¨ù:ÿ #ø¨ùüû"•ú*fõûiùV•û"üûDEúsû`Uúüû4ý V<öhöšø' (3Bú û V)5PV<öhöƒø 8

øhùxøø'gWû(U W iû4úNøU ø' hû4ûUø 'V•û >Wú •úüûP < " hûPhû "Wú]ø¨öƒÿaxÿ4ø¨ö•ú

3Bö?*û*Òö£úfø¨ùüû@ ûbÿÞø'8 uùcý›ú •ú9ö hû !$)* ,„ùüö V<öuöƒø `ÿWú>ÿ@ø¨ùüûhû

ûbÿÞø'9•ú>ø¨ùüûhû*úüûÞý H•öƒúNø'CxúüÿùW höƒú*,„ùüû hû hûüøhùüûuûdûbÿ4ø9 \uø„ùV•û

(9)

B/3 H

û4øhù:d38ÿ:üûø'\0ûÑû.Jsû4ÿsøhûP0û4ømý`ûbû4úÉø¨ùüû˜ö

th

WúW2ö !

th

Wú8 *

,„ùsö,úüûÞý6V<öuöƒø `ÿWú2ÿ•úüúüû4ÿ4ø9Wúüû! % uûû4ÿ4ø9sûhÿ hö0ûUöƒú>ø¨ùüûV V<öhöšø' *

öW hû !h5@hùPý>9øhùüûø A:û -‹ÿùsûbÿgWû uû "Wú]ø¨öƒÿ<ÿböxøhûý›öšø¨ù ø¨ùüûm&? B û 'jø'

WhöƒúUøhùüö*úüû4ý û4ÿ4ø*\,„ùüû hûö*úX % hû# hû4ÿ höVWûiÿGüúƒögWûø¨ùüû#V !

3hû4û 9ö hû &•û &£öƒúüû N8 BV V<öhöšø' 20sø,öšø`ö`úüû4ÿbû' [A>ø#Whû‡øWÿgNd3 uûbû

öW hû !5%ƒö£úsû &<Wú78#ø'!ø' Wú öšø›ø¨ùüûV<öuöƒø@ hûšø'@øhùüûd•úW*

VisitorAspect

+current(): void

+visit(): Object

+invokeVisit(): Object

+backward(): void

+forward(): void

+ignore(): void

+jumpTo(): void

+between(): Object

+before(): void

+after(): void

+addAspect(): void

+removeAspect(): void

+addAspectOnOperator(): void

+addAspectOnType(): void

TreeTraversal

+traverse(node:Node): void

+backward(): void

+forward(): void

+ignore(): void

+jumpTo(): void

Semantic1

+before(): Object

+after(): Object

+betweenN_M(): Object

SemanticN

+after(): Object

+before(): Object

+betweenN_M(): Object

current, visit, before, after

ignore, backward, forward, jumpTo

ignore, backward, forward, jumpTo

before, after, between

- ¼ÕÅNÐ/. •Ð\Û]â˜Ûx¼š»¼Õ·¹¶

public void before(AffectNode node, Object param) {}

public void between1_2(AffectNode node, Object param) {}

public void after(AffectNode node, Object param) {

String varName = node.getVariableNode().getValue();

String typeRight = (String)typeStack.pop();

!

String typeLeft = (String)typeStack.pop();

"

#

same if code than Figure 8 (lines 6 to 12)

$

}

-¼ÕÅNÐ .â•Ц¸&ÚxÓs¾hÏ8À‡ÎN¾À‡Äj¾¨¶¹bÁ†·mÎN¾ M29¹Ós¾¨¶‡µb·¹¶

,„ùüû„ø A:û -‹ÿùsûbÿgWû B* ýCû.J<ø¨ûbúWüûfý›öšø¨ùUxúiöƒúüöšø¨ö£öIjø¨ö•úiÿùüûbÿg<•ú<V

uö_-0£ûd3hû4ûö hû ! 78B•ú_AU0NAfÿ %Huö£úW!øhùüû˜ømý2<û4ÿ4ø'd3hû4ûöW hû !'&8.* ,„ùüû

"Wöƒúö£ú]ø¨û hû‡øøhùüö % iöƒú ‡ø A:ƒûöø'( "gWû½øhùüû½û J<ø¨û4úhö•ú Wú_A:hû

Hhö0ƒû ý›öšø¨ùsø %:üöDüÿxøhö•ú^•ú_AP07AMüöƒúfúsû4ý

û4ÿ4ø*Cmúø¨ùsö›ýCAHWúR-A:uû< uûU ":W #xú` uû - '0W£û*@cý`û V•û Òø¨ùüûhû Wú_A:hû< hûU % uûfÿ %ƒû J

ø ' 0ûbÿhûMø¨ùüûXW£öšøhø¨öƒú ø¨ùüûXhû "WúNøhö£ÿUWúãø¨ùüû2ø' uûbû2ø' 'V•û '

3Bÿ % hû 9ö uû !h5Mxú P•û 78.* 12W hû4úNøAý`û"uøWAIùPý øMhù uû"xø

0ûÞøý#ûbûbúOhû UxúNø¨öƒÿY 0ƒû %ƒö£úgWûø'føhùüû½ÿ % "Wúø hûbûˆø' 'V•û '238û**›ý›ùxø

ø öWúüûXhû UxúNø¨öƒÿ!ýCWúNø!ø :]Wú ú:sûMxú úWøø¨ùüûXWøhùüû 8 `ý#û

O‡ø'WA ûbÿùxúüö "ø'ûhû>ø¨ùüû( ' " öƒú$„ø¨ùsûhûXû4ÿ4ø<0NAùüöüö£úW

øhùüûduøxÿ.g "Wú•û ûbú]ø*

fø¨ùsû$V)5 V<öuöƒø 3hûbû 9öW hû !'8 „ø¨ùsû hûöX]`Wûbúüû höƒÿO iûÞø¨ù: ø¨ùxø

"Wú•ûiøhùüû.úüû.JQø>ú:üûø/V<öhöšøXWÿ4ÿ üöƒúø'Zø¨ùüû.ÿ uûbú]ø HhöƒøhöWúY`ø¨ùüûø hûbû

(10)

public void before(AffectNode node, Object param) {unplugVariableCheck = true;}

public void visit1(AffectNode node, Object param) {unplugVariableCheck = false;}

public void after(AffectNode node, Object param) {

env.setInitialized(node.getVariableNode().getValue());

}

-¼ÕÅNÐ ."NЦå8¿]¼Õ·m¼ƒµbºÕ¼Þµb·m¼š¹¿>À‡ÎN¾À‡Ä Áz¹¶·mÎN¾ M2¹Ós¾¨¶‡µb·¹¶˜Ü§Û]â˜ÛW¼š»m¼Õ·¹¶uß

TypeCheckerVisitor typeCheck = new TypeCheckerVisitor();

TinyEnv env = typeCheck.getEnv();

InitVarCheckerVisitor initVarCheck = new InitVarCheckerVisitor(env);

new Visitor(new LeftToRightTreeTraversal(),

new Semantics[]{typeCheck, initVarCheck}).start(tree, null);

- ¼ÕÅNÐ/. •Ðä9¹´*Ós¹P»m¼Õ·m¼š¹¿>¹bÁ/·MÃ9¹ˆµ»mÓs¾À¨·»

øhùüûhû hÿù^&ø¨ùsûÂúsû J<ø@ û4øhù:Uø'!ÿ WúWUøhùüû*ö£ú7V<ÿxøhöWúM¦ø¨ùüûV %ûbÿÞø'>•ú

øhùüûuûdVQöhöšø'*

ïsó˜ô‹î \óîsòï

F: U uø',E:Ñö˜ÿ %HuûOöƒúüûûbúüû4úNød|øýC hû\ %:ƒû˜ø¨ùjøÑÿ " &üúüöƒÿxøhû

ý›öšø¨ù ûxÿù Wø¨ùüû &07AZû JQÿùWú•öƒúO[AQúsÿù •ú# û'Wû*M,„ùüûhû û'Wû< uû

øTA:ûMWúÉÿWúX0û*ÿWúhöüû uû^,ûV•û4úNø'*WÿùP %:W£û uû•öuøhû

„öƒøhû•úPÿ4ûbú)-ø 'E|„öƒøhû•úPÿ4ûbú)-ømýC hûÿ %H•úüû4úN„öƒøhû•úPÿ4ûbú)-ø/„öƒøhû•úPÿ4ûbú)-øhùüû# û'•û!ÿWúN„öƒøhû•úPÿ4ûbú)-ø' £û %3Bÿ* * 9ö hû!8 ø' ƒöuø¨û4ú ø

û!ûbÿ4öDüÿÑøTA)ûC û'Wû*‹ø`ÿWú uûxÿ4ø`ø ø¨ùüû 07AUHhö0AUHuøhö£ú½úüû4ý

û'•û*,„ùüûÿ•úNø ƒû öB uûHWúhö0ƒû "Wú•öƒúÂø¨ùüû cý + û'•û2Wú

sûƒöV•û höƒúZø¨ùüû ø ø¨ùüû4ö <ûbÿ4öDüÿ^üûuøhö£újø¨ö•ú 3'8 * ,„ùüûUÿ %H•úsûbúNø"F) "

‡ø-,E:" hû2øhù:ûV•û4úNø[-T uöV•û4úY* ,„ùüö"hû4ÿ4øhö•ú hûhûbú]ø'ø¨ùüûPsö"Sû uûbú]øU %:ƒû"

F: U uø',E:xúMüûhÿ uö0ûøhùüûd0ûbùV<ö >øhùüûd û'•ûˆÿWúNø £û *

Document 1

Document 2

Document GI

View1 / Doc1

View2 / Doc1

View1 / Doc2

Graphic

Interface

(View/DocIG)

Message controller

Document manager

Parser manager

Base

- ¼ÕÅNÐ . •Ð0¶À‡ÎN¼Ø·‡¾¨À¨·mÔN¶¾¹bÁ¦³x´ˆµb¶m·¸S¹x¹ºš»

,„ùüû "WöƒúM|ømýC uûd ":W£û@F) " ‡ø',E: hû*øhùüûPý›ö£úW

Wÿù ÿ•ú]øWöƒúExú QF),*hmú9ö hû ! W(IFBD

H!

WúW (IFBD

H$

ÿWúNøxö£úiø¨ùsûQF),E2Wúiý›ùüö£ÿùfø¨ùüû@hû #öý2 gNö£úW*(IFBD

H$ö û4ÿbö

•úsû* ‹ø#ÿ•úNø'Wö£úWøhùüû@QF),;üûuÿ hö0üöƒú½øhùüû@uø üÿÞø' uû/øhùüû 93Bû**9ø¨ùüû@QF),

&ø¨ùsû ö hû 5%•û ! 78 *

,„ùüû !"$#&%'($#*),+-# ":W£û Uxú•û#øhùüû@VQöƒû4ý>søhùüû! û4ú:CWúfø¨ùsûø:0

(11)

Wÿù%' öEWúˆöƒúüûûbúsûbúNøG %:ƒûBuùcý›öƒúøhùüûÿ•ú]ø¨û4úNøE9<ÿW iû4úNøöƒú&

"xøBsûûbúWüö£úW#Wúiøhùüû›øTA)û@Søhùüû>V<öƒû4ýd* û.JW %£û) û>V<ö£ûÞý>2söA

øhùüûø hû4û˜öƒú2ÿ hû)-T[AQú]øKJføhû J<ø2 "xø:xø¨ùüû CC 'sùüö£ÿH uû uûhû4úNø'xø¨ö•úY*

,„ùüû+ # ! # + + $#,ÿù:hû&øhùüûB hö•ùNøE hû &ø@hûB E>D£û*G,„ùüû4úYWöƒøE üúW

øhùüû( hû #WúW`0sö ø¨ùüûfÿ hûH•úüöƒú$QF),*,„ùsû + + $#

uûÑø¨ùsö˜ø' uûbû½ø' 0sö (<ÿ ûbúNød %:W£û<Wú ÿ•úüúüû4ÿ4øÂöšøÑø2øhùüû# û'•û

ÿ•úNø ƒû *

,„ùüû +!"2ö@< %:ƒûÂøhùxø›ÿ•úNø'Wö£úW@üû DEúüöšø¨ö•ú@ uû hÿ4ûWhû.öƒúaF) "

‡ø-,E:Eÿ ‡ø A:ƒû•ú]ø' iû4ú:WEø':0 Wÿ4øhö•úWEû4øhÿ*

9!ÿ hû@úüû4ý øTA:û@G %:W£ûÿWúM hû•ö‡ø¨û ›øhùüû %hûV•û•úUøhùüûd

iû•ûˆÿ•ú:-ø ƒû *a,„ùxiû•ûˆÿ•ú:-øö\•úüû(„iû•ûˆÿ•ú:-ø¨ùüûfý2hA:½iû•ûˆÿ•ú:-ø')û J<ø¨û4úãø¨ùsû(Bûxø'W hû\F: U uø',E:& \

ûbÿ4öDEÿ&W Huû ,ø'û \0ûOF) " ‡ø',E:öƒú^WúWøhùüû „ûbú7VQö Wú ûbúNø*

õ÷ùüûbú ( %:W£ûúsûbûWÑø'>ÿ % \üúsö£ÿxø¨ûý›öšø¨ùOWúWøhùüû ! %:W£û†öƒø˜ÿ hûxø¨û

û'•û&xúPHuø›öšø>•úÉøhùüû û•ûÂÿWúNø' £û *,„ùsûbúYüø¨ùsûd û'•ûˆÿ•ú]ø' ƒû

0W 7sÿ‡ø'`ø¨ùüöC û•ûÑø'½øhùüûW uöjø¨û!£öuøhûbúüû 3 %:ƒû8ø¨ùjø,ý›ö+ hûxÿ4ø

øföƒø*9,„ù:L ":W£ûø¨ùjøýCWúNøø'U hû4ÿbû4öV•û\ûbÿ4ö&ø A:û! iû•û ø¨ùüû

û'•û ÿ•úNø £û ›ùhV•û*ø'"0û4ÿ û £öuøhûbúüû &ø¨ùüûhûÂø A:û iû•û*2,„ùsûA

ùhV•û½ø'2ö %ƒû ûbú]øÂøhùüû%

L

@

L

H! %fö£ú]ø¨û [ Wÿbû<WúOW V<öüû%%M )F)N)J%

L

@

ûÞø¨ù:a ûV•û A.øTA:û\WH uøhûO û'•û*,„ùüûbúYSøhùüûAùhV•û ø( hû•öuø¨û !•ú

øhùüû\ û•ûÿ•úNø £û <3hû4ûÿ:üûZ[Wuø0ûPý8!WúW$0søxö£ú.ø¨ùüû4ö !üúsöSNüû# %:ƒû

öüû4úNø¨ö_DEû @ öšø*

idDoc= msgController.register(this);

)N)J%

L

@ãöƒú)ø¨ùüû %M " û4ø¨ùW:O‡øWúW! ›ø¨ùüû½ÿÒøhùüû½û J)û4ÿ4ø¨û iû•û*

cû•ûM uû)øTA:ûf0)Z‡ûbÿ4ø2ö?*û)ø¨ùsû hû)ö Wúüû$ûbÿbö_DEÿ ÿ( fûV•û [A øTA:ûO

û'•û* ,„ùüû4ö fÿ % %•ú 0ûbùhV<ö >ö>ùüû öƒú;•úüûa0‡ø' 'xÿ4ø>ÿ>øhùxøföiø¨ùüû

û fÿ(d„ø¨ùsû^ iû•û* ûÞý4g<öƒú( û'Wû2ÿWú;0û.ÿ uûjø¨û;0NA

û.J<ø¨ûbúWüö£úWfø¨ùxøÿ % %•ú.ÿ@ >WúNA Wø¨ùsû ›û.Jsöuøhö£úW( û'Wû ÿ*

múÉøhùüûcý›öƒú!û JW %ƒûüøhùüû %:W£û*û.J)ûbÿ4ø›ø< hû4ÿbû4öV•û C4%

L

@*C I

L

H

JIF9%

L

@ WúmDO%

L

@; iû•û#uûbúNø½ø.øhùüû( %:W£û>öüû4úNø¨ö_DEû 0NA K$(IFMWú

ÿ ö£úW" Wú^xú•úNA: %@uûbúsû *

msgController.addMsgListener("SelectMsg", idDoc, Msg.ANONYMOUS);

msgController.addMsgListener("CloseDocMsg", idDoc,

Msg.ANONYMOUS);

msgController.addMsgListener("CutMsg", idDoc,

Msg.ANONYMOUS);

=!<ÿW iû4úNø&3Bö?*û!QF),E'8Cxú(V<ö£ûÞý>> hûö£úsûûbúWüûbúNøA hû•öuø¨û hûP•ú>øhùüû!

û[-•ûÿ•ú]ø' ƒû * Q <ÿ ûbú]øM<ûÉúWø2úüûbû÷ø gNúPý ùWcý "Wú7A;V<öƒû4ý>M uû

uûxø¨û ø'2öƒø*Âõ÷ùüû4ú/ %:üö_DEÿxø¨ö•úIö "üû†øhùüû<<ÿ ûbú]ø H‡ø'd(

":söDEÿK-øhöWú% û•û*,„ùüû„øTA:û>@ø¨ùxø û'•û›ö£úsö£ÿxø¨ûý›ùüö£ÿù" %:üöDüÿxøhöWúiù0û4ûbú

W•úüûWú2ø¨ùüû û'•û0H:WA>ÿ•ú]øWöƒú,øhùüûxø¨ùX\ø¨ùüû %:üö_DEûUú:üû%3 Öø¨ùüû

:Wø#›øhùüû>ø' hû4ûh8.* \ ûXgNöƒú<@ û'Wûø¨ùsûÉÿùWúW•ûÉö%Oûbÿ4öDüûY*

F:üÿù iû•ûý›ö90ûPhûbú]øUWúA ø' ø¨ùüûXV<öƒû4ý>ø¨ùxø" uûP uû•öuøhû hûþø' hû4ÿbûbö_V•û

øhùüûuû& %:üö_DEÿjø¨ö•ú^ û•û˜ÿ ö£úW" ø¨ùsö@W<ÿ û4úNø*m9˜ø¨ùsû > ":W£ûý›ö

úWWø@ uûbÿbû4ö_V•ûˆø¨ùüû M*

,„ùüûa û'Wûÿ•úNø ƒû fù 0üöšø-möƒú; û'•û^Dšø¨û höƒú ÿ0üöƒöšø A* ‹øfö

(12)

û'•û •ú øhùüû`ÿ•úNø ƒû *,„ùxøDšø¨û höƒúÑÿ0üöƒöƒøTA ùG0û4ûbú#üÿ4ÿbûW_A#Whû

GuûV•û Wûbÿ4öDüÿ›úüû4ûW0û4úüÿù " gNöƒúNüû0Wö£úW7sú•öƒúhû xÿ4øhö•úW7Wú

sø' "xøhö£ÿA2ø 'WúWjø¨öƒú" û'•ûöƒúNø'"WúWøhùüû C "xø&3?FO9@Q=;; û'•û'8 *

,„ùüû# uÿùüöšø¨û4ÿ4ø hû\BF: U uø',E:˜ö!sûhö•úüûø'fûuû½ÿWúüúüûbÿÞø¨ö•úý›öšø¨ùaWø¨ùüû

sûV•û û4úNø˜û4úNV<ö •ú û4úNø'@ ,ø:* F: ûÂû J)û uö û4úNø' 5 hû*öƒúM hû„ø

W V<öüû uûV•û Bûjø' hû@ F) " ‡ø',E:@„õû0^hû V<ö£ÿ4û!WúUø'%hû*ø¨ùüû

!ÿƒö£û4úNøø:Y súüúüöƒúUWú^P* , xø P*

ï ˜ôó F\ïþì•íî\ïHó

F: U uø',E:˜ù!d38ÿ* 9ö uû !890hû$•ú.ø¨ùsû\W<ÿ û4úNø VQöƒû4ý>*ÿ•úüÿ4ûsø

ö *û*ø¨ùüûdhû öƒúNøhû xÿbûˆö›ø¨ùüûd û4ý gÉöƒúý›ùüöƒÿù^VQöƒûÞý>!•ú^%<ÿW iû4úNø<3QF),@8

ÿWú]0ûPüöWA•û;WúW "WúsöW xøhûY* ûWÿù û4ú <ÿ ûbú]ø#öšøö%Hhö0ƒû

øP0sö/Wú üöWAO•úüû< % hû#V<öƒû4ý> hùWcý›öƒúMüö*/û hûbú]ø&ûbÿÞø' ø¨ùüûø hûbû

xÿbÿ üöƒú˜ø'!üö"Sû uûbú]ø "xø*Ebdcae2ø¨ûbÿùüú•ö£û hû`û.J<ø¨ûbúWhö_V]û_A#hû!ø0sö

øhùüö 2xúUø¨ùüûdüö*Sû hû4úNø>VQöƒû4ý>*

- ¼ÕÅNÐ/. WÐ0#¿¾ ]µb´*Ó]ºš¾¹bÁ ,¶‡µbÓ]Î]¼šÀµbº`»¾¨¶åM¿x·¾¨¶‹Á|µÀ¾

Q V<ö£ûÞý •ú X<ÿ ûbú]ø ö0üöƒød07AO_A<ö£úM2ø 'Wú[ "xøhöWú ø'Éöšø'QF:,*

õû›ùV•ûû.JWû hö ûbúNøhû>ý›öšø¨ùøý üö*/û hû4úNø2 Wÿùüûødû -ø' hû4û„ø' 'xú

"xøhöWúWúW$0üöO 'sùüö£ÿ V<ö£ûÞý>*!,„ùüû&D uø Wÿù.ýCø'fý> uöƒøhû#"VQöhöšø'

øhùxøÂø' Wú[ %Âø¨ùsûø' hû4ûUWú/sö uûbÿ4øA 0üöWˆø¨ùüûiùsö£û ' uÿù7A 2 üùüöƒÿÿ

#-HWúüûbú]ø'*",„ùxøÂýC uø WúZûfÿ4öƒûbúNø&0sø uûSNüö hûZø'P hû4ÿ %üö£ûiû V•û A øhö û"

ÿùWúW•û,ýC •úüû,ö£úø¨ùüû`ø' 'xú "xø¨ö•úY*,„ùüû9hûbÿ•úøhûbÿùüúüöSNüû›ý2Òø'ûbÿ4öA<

ø hû4ûø 'Wú[ "xøhöWú(uö£úW\bdFWe:, ø\ :üÿbû! 9c^e 3#ûWúXca g:WXe Wú•ûh8

sûhÿ hösø¨ö•ú^G 'üùsö£ÿ\ÿ %H•úüû4úNø'›ø'ÿ uûxøhû*,„ùüû Ccae uûWƒøö„ø¨ùsûbú.öƒúNøhû

(13)

ûiÿböƒûbúüÿ Aiý›ùüûbúUhöƒú bdFWe:,fxú9c^eû4ú•öƒúüû<ø¨ùüû„ø¨ûbÿùüúsöSNüû˜ùB V•ûfø' 0û

ûhöƒû ›ø'"ƒû uúY % uû ûbúøfúsû4ý V<öƒû4ý üûuö•úWLWúUý`û_-Tsø¨û^ >uûbúsö£ú

V<öƒû4ý>øhù •ùúüûÞøý gN*

XSLT

Transformation

BML description

of embedded

graphic components

BML

Interpreter

Graphic components of

the view with style

properties

Base

Style

definitions

Syntax tree

- ¼ÕÅNÐ . '•гWÀ‡ÎN¾¨´ˆµ*¹bÁ†ÅP¶‡µbÓ]Î]¼šÀµbºÛW¼š¾¨Ã À¹¿N»m·m¶mÔNÀ¨·m¼š¹¿

. .

Q ùüö•ùüû [- £û V•û9ø 'WúW Ujø¨ö•ú$Wú•û/ÿ£û m+O+G/ù!0Sû4ûbúOüûDüúüû •ú)ø

CbdF)e), øaûbÿ4öAZø¨ùsû(W hû4øuø A7- höƒúNøhö£úa2bdcae <ÿW iû4úNø*M‹ø' Bûxø hû# uû

uö ö Âø'Éø¨ùuû"BbdFWe:, 0søˆöšøˆöd \üÿù % uûÿ•úüÿ4öhû % hû% uû0ƒûUWúZöšø

ÿWú^û [ ø 'Wú[ "xøhöWú@•úWAX•ú^0sø hûbû ›ö£úsÿ hû ûbú]øEW Hhû* ++

ÿ•úuö‡ø'><uû4ø>E W£ûsûDEúüöšø¨ö•ú&3hû4û9ö uû ! 78ý›ùüöƒÿùM Ujø¨ÿùPxøhøhû uú,ý›öƒøhù

û.J)£öƒÿböšødV uö0W£û 0sø hûbû*#,„ùsûhû<V uö0W£û uû<uûZöƒú ø¨ùsû< hö•ùNø uø

uûbÿ uöV•û ÿ*

Rules

formalism tiny

...

affect(x, y) -> h(x, label("="), y, label(";"));

plus(x, y) -> h(x, label("+"), y);

...

- ¼ÕÅNÐ .;•Ð0þÓ<µb¶m·¹bÁ†·mÎN¾„Ê#Ó]Ói»mÓs¾À¨¼Ø×<Àµb·m¼š¹¿

õûùhV•ûaüûDüúüû Ujøhø¨öƒú/üúsÿ4ø¨ö•úO38ùW höI•ú]ø@ "V•û uøhö£ÿ!£ö•ú û4úNø

öƒúüû4úNø'xø¨ö•úYEûÞø¨ÿ*8ø¨ùjø>üûuö•úsû @ "hA hû*ø'!ý> uöƒøhû*ø¨ùüû4ö 9 hûÞøhøTAN- höƒúNøhû ö£úÉø¨ùüû

uöWùNø% uø%›ø¨ùüûX ƒû* õ÷ùüû4ú m+O+ û4ÿbö_DEÿjø¨ö•ú( hû2ø' WúxøhûþöƒúNøObdFWe:,

‡ø A:ƒûuùüûbû4ø'(3hû4û 9ö hû #78 /ø¨ùsû%üûhö•úüû •úWAúüû4ûIø'Éö£úWüö£ÿxø¨û!øhùüû!û J)ûbÿÞø¨û

sø'Qø( "xø$38ûböšø¨ùsû 9c^e @,@cae ø¨û.JQø xøføhùüûa % û4úNø.8%hû @ ø¨ùüû

[A:uø¨û ø' ÿù:hû2ø¨ùsûX hö•ù]ø!ö %ƒû ûbú]øxøhöWú ›ø¨ùüû "xøhøhö£úW$üúüÿÞø¨ö•úM3 uûbû

(14)

<alias:template match="plus[*[1]][*[2]][count(*)=2]">

<alias:variable name="left" select="./*[1]"/>

<alias:variable name="right" select="./*[2]"/>

<bean class="fr.smarttools.view.GNodeContainer">

<property name="layout">

<bean class="fr.smarttools.view.HFlowLayout"/>

</property>

<add>

<alias:apply-templates select="$left"/>

</add>

<add>

<bean class="fr.smarttools.view.FJLabel">

<args>

<string>+</string>

</args>

</bean>

</add>

<add>

<alias:apply-templates select="$right"/>

</add>

</bean>

</alias:template>

- ¼ÕÅNÐ •Іʛ³WÌW¸ãÓ]¶¹ÅP¶‡µb´ Á|¹¶·mÎN¾ „¹Ós¾¨¶‡µb·¹¶

Parsing

transformation

XSLT

XSLT

transformation

XSLT

transformation

text.xsl

html.xsl

bml.xsl

XSL stylesheet

for text output

XSL stylesheet

for HTML output

XSL stylesheet

for BML output

Xpp file

Typed XML tree

-¼ÕÅNÐ,.PÐ

-¶¹´ Ê`Ó]Ó!·¹*ʄ³W̕¸

,„ùüû "!#$%"&'%()* m+O+] ƒû\ûbÿbö_DEûÑø¨ùxøøhùüû&£û |ø

xú hö•ù]øM0sø' uûbûM ÉûWÿù +CSD

L

û 'jø' 2ý›ö0ûIù höI•ú]øAfƒö•úsû Wú

uû 'xøhû`07AIøhùüû+&$uö•ú+*X,„ùüû, Wú- "!#^ "xøhøhö£úWMüúüÿÞø¨ö•ú\ hû"üû DEúüû

öƒú ø¨ùüûOhVxö0ƒûOQø'sø "xø'* m+O+-ÿWúf0û û.JQøhûbúsû 07A üöƒúãúüû4ý

"xøhøhö£úW%súüÿ4øhö•úW@üûDüúüûM „ûV•û AMVWö0£ûdsøsø> "xø*

. 9. . 0/') 9.J+ 9)

9cae Qø'søsû V•û [A>ø 'Wú[ "xøhöWú W£û!û4ÿbö_DEû„ùcýqø'#0WüöP ùüö£û ' uÿù7A

üùüöƒÿ<ÿ %H•úsûbúNø*F) û2Eøhùüûuû,ÿ %H•úüû4úNø uûC<ÿböxøhûý›öƒøhù!ú:üû

ø¨ùüû ø' uûbû/xú hû " gWû * 9Ñøhùüû ^ uû •ú_A6[A<úNøxÿ4ø¨öƒÿ/7 ^Wú uû

Z[Wuø" sö£ú A üùüöƒÿ90)Z‡ûbÿÞø'a3BúWø% U gWû8 * ,„ùüö" " gNöƒúZøhûbÿùüúüöS:sû)ö"

ÿ•úNV•û4úüöƒûbúNø&ýChAÑø'>0ûB0ƒûø@ "xøhÿù&WúNA 'üùsö£ÿ70)Z‡û4ÿ4ø¦ý›öƒøhù öšø'¦ÿ hûH•úsö£ú

úW:üû˜öƒú>øhùüû!<ÿ ûbú]ø,ø hûbû*Òõ÷ùüûbúX& uø2/ø¨ùüû<ÿ û4úNø`ø' hû4û˜ö2 %:üö_DEû+Wú

WHxø¨û# iû•ûöhû4úNø*ø'>ø¨ùüû\VQöƒû4ý>døhùxøW<ÿ ûbú]ø*&,„ùüû<Hxøhû< û'•û

ÿ•úNø'Wöƒú¦øhùüûxøhù Qøhùüû %:üö_DEû&W0sø' uûbû WúÂøhùüûúüû4ý`0sø' uûbû*G, Wú "xø¨ö•ú

ƒû uû#W£öƒûø>øhùxø˜úüû4ý W0sø' uûbû½ø'>ÿ hûxø¨û#(<ÿùüöƒû hÿùNA^ üùüöƒÿ

ÿ %H•úüû4úNø' +U 'üùsö£ÿE0sø' uûbû*@,„ùüû&xø¨ù.ÿ•ú]øWöƒúüûöƒú.ø¨ùüû&Hxø¨û& û'•û

ööƒúNøhû W hû4øhû ø¨ùWúWg:½ø'.ø¨ùüû( " gWû ÿ %H•úüû4úNø'<Wú ø¨ùüû(0£ûÞø¨û üùüöƒÿ

(15)

ø hû4û %:üö_DEÿjø¨ö•úY*

+

=ûDEúüöšø¨ö•úd uøTA:ƒûa3•úNø\ÿ \ûÞø¨ÿ*8` uû<uø hûZöƒú uû 'xøhû<bcae hûW hÿbû

D£û„øhùxø> uû Uxú•ûP0NAfø¨ùsûCuû %:ƒû*õ÷ùüû4ú^\V<öƒû4ý 3 9Wú7A xø¨ùüû 9

%:)-W£û8úsûbûW ‡ø A:ƒûö£úW "xø¨ö•úY•ø¨ùsûChû> %:ƒû@WhûV<öhöšø' ø'DEúU uöxøhû

öƒúW "xø¨ö•úö£ú½ø¨ùüûC uû hÿ4û@3 uû uûhû4úNøhûUGQF),E8.* ,„ùüû hû> uû`øhù hû4ûCüÿ4ÿbû¨ö_V]û

uû uÿù £û V•ûED ‡ø\•ú M•ûbúüû ' hû uÿbûfø hû4ûøhùüûbú •úZø¨ùsûfÿ hû4úNø\xúWû

-ûbÿ4öDEÿ uû hÿ4û*ø' hû4ûWúXDEúA •úÉøhùüûdWÿÞø¨ö_V•ûV<ö£ûÞýC-TûbÿböDEÿ hû hÿ4ûÂø hû4û*Q,ø

û V•û [AM‡ø¨ûYEøhùüûd hûšøö@hV•û 7üû^07A2ø¨ùüûÂúüûÞý>_APüúöƒúW "xøhöWúY*

6.

Q ûbÿ4öBbdcaefWú•û">F) " uø',E:9ÿƒû C

CSS%Mh9ý2\sûhö•úsû

øaüû.-uÿ uö0û,ø¨ùüûC‡ø' üÿ4ø hû9Eø¨ùsû9Whû Òö£ú]ø¨û Wÿ4û* üÿù"!üûuÿ uösøhöWúY)F) " ‡ø',E:

0Wüöˆöƒødhû ˆö£ú]ø¨û [ Wÿbû%0NAø' Wú[ öƒúUø¨ùüö sûhÿ hösø¨ö•úý›öšø¨ùIø¨ùüû<bdF)e),

û4ú)-Wö£úüû*,„ùüû @„öø¨ù:W•ú_AaUV<ö£ûÞý ø¨ùsö!üûuÿ hösø¨ö•ú+*9ö uû )"hùPý>sÿù

#üûhÿ uöQø¨ö•úY 9ö hû5½øhùüûhÿùüû Ujø¨öƒÿ üùX&öƒø9QF:, xú9ö uû ! X3 Wû

!$8#ø¨ùüûd uûWƒøhö£ú*

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE layout SYSTEM "lml.dtd" >

<layout>

<frame title="Smarttools V3">

<set title="InfiniteMultiplication.exp">

<split position="55" orientation="0">

<split position="50" orientation="1">

<view title="Beans view" Type="BmlView" style="default.xsl" />

<split position="70" orientation="1">

<view title="Beans view3" Type="BmlView" style="xml.xsl" />

<view title="EditionStruct" Type="StructEditionView"

style="edstruct.xsl"/>

</split>

</split>

<split position="25" orientation="1">

<view title="Beans view2" Type="BmlView" style="generic.xsl" />

<split position="60" orientation="1">

<view title="GTree" Type="GtreeView" style="" />

<view title="Debug Type="DebugView" style="" />

</split>

</split>

</set>

</frame>

</layout>

-¼ÕÅNЕЦÌE´*ºÕ·m¶¾¾»mÓs¾À¨¼Ø×<Àµb·m¼š¹¿f¹bÁ†·mÎN¾ `å&¹bÁ

-¼ÕÅPÔ]¶¾J. ˜Ó<µbÅc¾J.

<uôóÒîsôð#í

F: U uø',E:!ù<0û4ûbú]hû ø'$üûV•û #SNüöƒÿg:_A xø'WøTA:û V hö!û4úNV<ö

û4úNø'\9hû V•û '2 "Wöƒú)- ûbÿ4öDüÿXWú•û*^‹ø'&D uø#ƒö£ÿxø¨ö•úW½ý`û

hû(üûüöR-ÿxø¨ûIø2ø¨ùüû<Wú•ûhû 0NA.ø¨ùüû<[A)‡ø¨û öšø'uû_ &öšøÂö0H:Wøuø' û+*

˜ö£ú)-‡øWúsÿbû7Sû4ÿbö_DEÿ›û4úNV<ö •úW iû4úNøý`û uû„ÿ hûjø¨ûø'ÑûsöƒøÒøhùüûC hûW hÿbû]ø' "Wúüöxøhû

QF), üûDüúüöƒøhöWú\ V<öhöšø\ û4øhù: D£û*Pc^üÿù` % uûfÿ %ƒû J Wú/Hcý`û

(16)

frame

set

horizontal

split

vertical

split

vertical

split

vertical

split

vertical

split

DebugView

"Debug"

GtreeView

"GTree"

StructEditionView

"EditionStruct"

BmlView

"Beans view"

BmlView

"Beans view3"

BmlView

"Beans view2"

layout

- ¼ÕÅNÐPâ•Ð&³WÀ‡ÎN¾¨´ˆµb·m¼šÀÅP¶‡µbÓ]Îi¹bÁ†·mÎN¾0„³W¸ ¼Õ¿ - ¼ÕÅPÔ]¶¾

Q˜ú½ö£ú]ø¨û 'xøhûû4úNV<ö •ú û4úNø hV &<ýCGüûVWûû

4

*öW hû !söA:

a uÿbû(D£ûO3[*ZhV8&Wú öšø'<<ÿ4öjø¨ûãÿ\Dƒû 3[*ÿ8&•ú`üö*/û hûbú]ø# "xø

3Bö?*û*9uö£ú(üö*/û hû4úNø! hûÞøhøTAN- höƒúNøhû 8@hùPý›ú$•ú 9ö hû )&)*C,„ùsûhû øý

û4úNø' hûdƒöƒúgWûYEø¨ù:W›ø¨ùüûdhûƒû4ÿ4ø¨ö•ú)ö£úM•úüûd<ÿW iû4úNøö›ÿ % \üúsö£ÿxø¨û)øø¨ùüû

xø¨ùüû *,„ùüûd Uxö£úUø':>ø¨ùsö›ûbú7VQö Wú ûbú]ø hûd%07A<øhûbÿ:üûˆøTA:û -mÿùüû4ÿ.gWû !WúW^

07ANø¨ûbÿ:üû&hö \xø' *BQ!†ø¨ùüûhûÂø':>hûÂø¨ùsûdV<öuöƒø @jøhø¨û húUø¨ûbÿùüúüöSNüû\WúÿWú

0û WA<ú iöƒÿ_Aû J<ø¨û4úüû]3Bû**ý›öƒøhù.ø 'Wÿ4ö£úWU >üû0•öƒú"Bûjø' hû89hö %_AM0NA

ÿ•úüúüû4ÿ4øhö£ú(ûbÿÞø'*

-¼ÕÅNÐ "NÐ #å¹bÁ†·mÎN¾xµÛµ*¾¨¿xÛW¼Õ¶¹¿]´Â¾¨¿x·

Q! øhùüû F) " uø,:# hÿùüöšø¨ûbÿÞø' uû>ý2\üûhö•úüû ø)ûhöA/)úüû4ýÖÿ

"HK-úsûbúNø hû V:£ûÞø'iÿWú]S:sö£ÿgNA]0ûP hû•öuø¨û hû •ú øhùüûP û'Wûÿ•ú]ø' ƒû * mú øhùüö

ý2hA¦ý#ûùhV•ûû.JWû hö ûbúNøhûý›öšø¨ù/Xüöuø' uö0Qø¨û V•û uöWú/CF) " ‡ø',E:*ø'Uûüöƒø

W %(•úfWú7A;W£ûÞø-mÿ %xøhö0W£û)õû0 0 Pý>hû >øhùWúgN>ø 7V`W£ûÞø*

,„ùsö&W£ûÞøÂýCdüûuö•úsûøPV<ö£öIbûfÿ %H•úüû4úNø'ˆû J) uûhû öƒú 9cae;WúIø

ùWúƒûMhû iöƒúNø¨û 'WÿÞø¨ö•ú* ‹ø"uûiøhùüû ,9,1; xø'<ÿ,øZÿ " \súüö£ÿxø¨ûUý›öƒøhù

F: U uø',E:ø¨ùW WùUuû V:ƒû4ø*Qf•û4úüû £öIxø¨ö•ú"ø¨ùsöû.JWû hö ûbúNø39ö uû 78

ý2C#û û höƒú½õû0PFQû [V<ö£ÿ4û 38ö*û*üúsöƒøCW V<öüöƒú#xø\xú uû V<öƒÿbû

(17)

Debug

view

Source

view

Bytecode Document

(.class)

Source Document

(.java)

Evaluator

visitor

Debug

aspect

Packages

view

Classes

view

Methods

view

Instructions

view

links

-¼ÕÅNÐ •Ц¸ÒÎN¾›È•¼E¾¨¶¾¨¿x·ÛW¼š¾¨Ã»¹bÁ/·ÎN¾

-¼ÕÅPÔ]¶¾ "

ø Wøhùüû W£öƒÿjø¨ö•ú8.*mú)ø¨ùüö "Wúsúüû W£öƒÿjø¨ö•úÑÿxú Wÿ4ÿbûÑø'fø¨ùüûhû½õ û0

uû [VQöƒÿbû V<ö ‡øWúW Ÿõû0; Wø<ÿ(Wú;xø Ujø'$3Bû**fbcae2FO9@Q=;B8

ý›öšø¨ùWsø›ý2 A<ö£úU0HQøùPý øhùüûdhû V<ö£ÿ4û ö›ö %£û ûbúNøhûY*

Document

BUS

XSLT transformation

BML document

BML player

graphical view

VIEW

XSLT

XSLT transformation

BML document

SERVLET

XSLT

APPLET

BML player

graphical view

WEB SERVICE

WSDL

CLIENT C#

.net

HTTP

SOAP

SmartTools

- ¼ÕÅNÐ •Ð#¹Þà ·¹ÂµÀÀ¾»»·¹ˆ³x´ˆµb¶m·¸/¹j¹ºš»

î \ñ ðï

,„ùsû hû2 hûB "Wú7AˆûSNüö_V£û4úNø &ÿ " '0W£û [A)‡ø¨û " ) "!)!%!$&?*,„ùüû Uxö£ú\sö"Sû

-û4úüÿbûˆö„ø¨ùxøF) " ‡ø',E:@‡ø' Wú_AXhû@bcae`xúM0)Z‡ûbÿÞø-T höƒûbú]ø¨ûUø¨ûbÿùüúW•ö£û*

múø¨ùüöý2hAH @A:‡ø¨û ö@ûbú$xú.ÿWúøgWû&WVKWúNø'•û Wú7AX uøhùüû @üû

ûbúNø2 "üû! üúW V\WúWUbdcae)øhûbÿùüú•öƒû*‹ø`ù %•úüöAiöƒúNøhû xø¨û

sö"Sû uûbúNøÂø:dxúIøhûbÿùüúüöSNüû 3Bû**\V<öuöƒø düûhö•ú/xøhøhû hú+Eûbÿ4ø8˜ø¨ùWúWg:*ø

öšø'> %: @ uÿùüöƒøhûbÿÞø' hû&xúù>•û4úüû uö£ÿdV<ö£öIjø¨öWú.ø:*

9 VQöhöšø' 9 Wÿù2öC‡ø' •ú_A(0hûP•ú>ø¨ùüöC hûhû hÿùÉý2 g # YWúW V•û [A

ÿhû½ø'(Wøhùüû !sûV•û û4úNø' &)%! W"!$ *õû½ûhû4úNø¨öA$Whû<Uhö "W£ö_DEûOV•û uö•ú

\øhùüû! \šø¨öR-T ûÞø¨ù: :%!1Söƒúuø¨ûX Whöƒú N +A û4øhù:*mú>ø¨ùüö#ýCAsöšø`ö

Hhö0ƒû

øP0QøWöƒú \üÿù % hû< uû0£û#V<öuöƒø dW %"38ö *û* ý›öƒøhùsøÂÿuø.8ø¨ùWúgN

øøhùüû=),+!%MIOC \û4ÿbö_DEÿjø¨öWú

ø •ûÞø"$hö "W£ûPg<öƒú !søxøhöV•ûXW % ö£ú "!':"!Cüûüö£ÿxø¨ûþø W

(18)

øÉöƒúNø :sÿbû%xú û4ÿ4ø[-T uö£û4úNøhû ' % ö£úWX•ú)ø¨ùüû½øOø¨ùsû\VQöhöšø'

üû.-uö•úfxøuø¨û húY* 9 7Wÿùqö2ÿ " '0W£û)ý›öƒøhù " hû$•û4úüû !•úüû *!?*

mú F) " uø',E:9ûbÿÞø'>ÿWú;0û^WA<ú iöƒÿ_AŸÿ•úüúüû4ÿ4ø¨û ø V<öuöƒø (WúŸú

ø 'Wú[ "xøhöWúöúsûbûüûasú£ögWû & *

„øhùüû %: hÿùüöšø¨ûbÿÞø' uû@ý`û üûhö•úüûO% û•û ÿ•úNø ƒû @hö ö ›ø

øhùüûX,E:0

5

5 C0sø!öƒø!ö< uû‡ø' höƒÿ4øhû ø'OW !úsûbûW*`,„ùxø!ýC%SNüöšø¨ûPWúãû[A

xúUuø 'Wö•ù]ø ‡ýC "Qø¨öWúY*9õ û@Wúiø uø'WWAiÿ %H•úüû4úNø#øhûbÿùüúWö£û3 sÿù

)G19 2Q&¦õû0 FQû [VQöƒÿbû90)Z‡ûbÿÞøhõû0 û4øhÿ*8 ø'.ö % V•ûføhùüû Eû.Jsö0üö£öšøTA

9ø¨ùüûˆúüû J<ø uÿùüöƒøhûbÿÞø' hû V•û hö•úY* @xøö£ú]ø¨û 'xøhö•ú

6

Eý`û hû bcae WúM

ÿ•úNø öƒúNøhû xø¨ö•ú \šø¨öƒÿuø¨öƒú] WÿùY*1õ÷öƒøhùf öƒúüö UüûV•ûW iû4úNø

û + uø uö£úWû JQö‡ø¨öƒú^|øý2 hû!ÿ %H•úüû4úNø(3c^Q<;[8 ‡øWú Wø<ÿ

3?FO9@Q=; Wø<ÿ 8 sý`ûÂùV•û 0QøWöƒúüû^%[A:uø¨û ý›ùüû hûˆöšøö›û[AÉø'

iöƒúúüû4ý ÿ %H•úüûbú]ø'

0sö Püöuø hö0sø¨û ûbú7V<ö •ú ûbú]ø½öƒúÿ•úüúüû4ÿ4ø¨ö•úZý›öƒøhù Éõû0/0 cý>uû Ñø¨ùüû

* , xø P

ø 'Wú[ öšøöƒúNøU%sö‡ø' hö0søhûMV•û uöWúaWhö£úW; Q„ÿÞø¨ö_V•û ?*

&öƒúNøhû Wÿ4øhöV•û2 uûSNüö hû û4úNø' 7Wÿù½öüö*/û hû4úNø &ý`û uû

bcae2øhûbÿù)-úW•ö£û* c^ uû V•û jý`û WAÑø¨ùüûB ûø 'WúW Ujø¨ö•ú %:üû7 \ø¨ùsûB<ÿW iû4úNø

*ý#û ˜ø¨ùsû Sø¨ùjøÂödSNüöšø¨û"Wú hö•ö£úýChA$B0üösö£ú T*#,„ùsö

Wÿù( "gWû#ø¨ùüû˜û.J)H uøCYV<öƒû4ý>CHuö0W£û˜øhù W•ù>øhùüû˜úsû4ømý2 gNd3|ø¨ùWúWg:#ø

bcae uû höƒöIxø¨ö•ú 8.*

,„ùüû&W'•û 9õ 571 ûbÿbö_DEÿxø¨ö•ú@" hÿ4û "xø›øU•û4úüû 'xøhûˆø:ö

hûjø#hû4ø& \F) " uø,:*^e Wú•û\sûhö•úsû <xú ûbú)- hû ½ÿWú üö hû4ÿ4ø'_A

ø'gWû^WVWú]øWûMø¨ùüûUú•ú höƒû4ø A` "xø% hV<ösû;0Wsø(/WhûMWø¨ùüû

õ 51 ø¨ûbÿùüúW•ö£ûöƒúhöüû>F) " uø,:*Gmú%õû0%ƒö£ÿxø¨ö•ú!ÿ•ú]ø¨û J<ø•ø¨ùüö

)-û uøTAÉö›ö "H uøxúNø> >ƒö£ÿxø¨ö•úWö£ú]ø¨)-û )-û '0üöƒöƒøTA*

ð#íó ‡òfQôð#í

õû>ùV•û( hûhûbú]ø¨û ^|ømýC uû(•û4úüû xø' ý›ùüöƒÿù :sÿbû# ' %

•ú ûbú]ø' uø' •ú_A"0hû(•úUbcaeOWú(0WZ‡û4ÿ4ø[-T uö£û4úNø¨û>øhûbÿùüúWö£û*,„ùüû %uø

ö %H uø'WúNøÂÿ•ú]ø' hö0søhöWú/#øhùüö&W 7WÿùZöÂøM Hhû"xø*ø¨ùüû%' ûøhö û"Wú

ý›öšø¨ùa"súüö ýChAL%hûÞø!)VWúüÿ4ûa ' " öƒú"Bûxø'W hûöƒúNøhû xø¨û)öƒúNø

^ %:W \ uÿùüöšø¨û4ÿ4ø hûÒý›öšø¨ù û J<ø¨û4úhö0ƒûX 'üùüöƒÿV<ö£ûÞý›öƒú ûbúWö£úüû<Wú û4ú

ø\bdcae*<õ û˜ùhVWûÑÿùhûbú2ø'#uû*úW•ú)-TW uö£ûÞø [AUQ=;T`ø'#0û!ûbúPWúW2ø½øgWû

WVWú]øWû sø'W hû! `û.J<ø¨û uú+üû V•û ûbú]ø'@ üúW>õ 571 û4ÿbö_DEÿjø¨ö•ú* 9Ñú

øhùüû"uû "Wú]ø¨öƒÿUƒûV•û?&ý`û"W hûuûbú]ø#Psûüöƒÿxøhû`ûbÿÞø- höƒûbú]ø¨û/ ' %

ö£úW^)-W 7ö£úW^)-Wÿù <ÿ4öjø¨ûãý›öƒøhùãø¨ùüû(VQöhöšø' <üûuö•ú]xøuø¨û hú ÿ %ƒöWú]ø!ý›öšø¨ùãø¨ùüûX=:9dc

ûbÿ4öDEÿxø¨ö•ú*õ û˜û.JWû4ÿ4ø>\ •ûhûÞø9 "Wöƒú)- ûbÿ4öDüÿxú•û#ø#0û!0uû

5

3 ^R 3 Y YMW6CPQ/PQSRUQ cmYMaER?QSY95^_XQ \S_`b V\SRUT ZYM\S_XYMZQJ3FRUaScQ/\SY3^&VZTBWXR?\SaER RUQ$VZTmV bY YaETB_XZV\S_XYMZ

WXVMZ[MPVM[MR \SYb YMZZRUb\ bYMcA5 Y QSVMZ\EQ

(19)

WúIø¨ùüû!õ 571 û4ÿbö_DEÿxøhöWú*U,„ùüû%hû (3?WúW üûuö•úsû '8d üÿù/Wú•û uû

úWWø(WHhûqø 0û)û.J)Sû uø Wú•ûø¨ùsû uö£û* ,„ùüû hû hû„ý`ûa Hhûa

uû "Wú]ø¨öƒÿ û4ý2 g!ûA!ø' hû!xúU hûSNüö uö£úW# öƒúüö " gNúPý>£û•û*=!

"Wöƒú)-ûbÿ4öDEÿ%Wú•û uû uûuûbú]ø& •û#HWøhûbú]ø¨öGBƒöƒÿxøhö•úW*öƒúOVK hö!DEû

xúUý›ö\ÿbû uøxö£ú_AUöƒúNø :üÿ4ûˆúüûÞý ûbúM 0£û %*

H\ï¦íó?

.F0`»mÓs¾À¨· Ï 0`»mÓs¾À¨·‹Ï#¶m¼š¾¨¿x·¾È $¦¶¹ÅP¶‡µb´*´*¼Õ¿]Å Ü50 $ß Á|¹¶ xµÛµ•Ð

Îx·m·mÓ4ÃÃÛе»mÓs¾À¨·|ͨй¶mÅ<Ð

<ÝÑеb·¹¶mÚjÆ`Ð&Ì@¹bÁ|µ»‡¹]Æ&µb¿NÈ*гx´ˆµb¶‡µbÅcÈNµbÄx¼š»ÞÐ c¸³ 0 ¸¹x¹º,³xÔ]¼Õ·¾!Á|¹¶Ô]¼ÕºšÈ•¼Õ¿]Å

„¾¨¿ `¹xÀµ ,¾¨¿N¾¨¶‡µb·¹¶»ÞЦå8¿ ~§vˆku}<~8Œh‰h}QyP~zw|r}Qy€\r}«Œh‰Œh}sއŒw§}ipsr‹«¨~zè&y‰Œ`nŒh–j‚Œ Æ cÔ]¿N¾

.;1 '•Ð

â <Ð9¾¨¶mÅc»·m¶‡µˆµb¿NÈ $/Ð,ºÕ¼Õ¿x·ÐÒ¸ÒÎN¾È•¼š»À¨¶¾¨·¾·m¼Õ´Â¾¸¹x¹º9ÔN»!µÂ»¹bÁ§·MÃÒµb¶¾À¹x¹¶È•¼Õ¿<µb·m¼š¹¿

µb¶À‡Î]¼Õ·¾À¨·mÔ]¶¾cÐ psސw|Œh}sއŒ˜rm«\r#tQ–W~8Œ¨‰#Ò‰mrP‰myÑw£} ÆNâ,.cÜ4ÏMâcß 1•Æ PÔ]ºÕÚ>.;1 '•Ð

"$†ÐÒ¹¶m¶‡µ»Æ#ÝÑÐ,亚¾¨´Â¾h¿W·Æ`¸„Ð#Ý,¾»mÓs¾¨ÚW¶¹Ô üÆ NÐ`å8¿NÀ¾¨¶mÓ]¼BÆ ÑЛµbÎ]¿@Æ,Ð#̵b¿]ÅNÆ,µb¿NÈ

ÑÐ$†µ»À¨Ô<µbºBÐÉä `¸!0 ! ·mÎN¾½»mڕ»m·¾¨´Ðiå8¿ $/Ð `¾¨¿NÈ]¾¨¶»¹¿@Æ/¾È•¼Õ·¹¶Æ 9‰mrގuŒ‡Œm—w§}b‚!rm«

~§v]Œo#" p•k%$9p… ¥'&)( p•k%$&¦™ol psr‹«¨~zè&y‰Œ+*9},w£}üŒŒ¨‰uw§}!pQç%#t]rb‚uw§–,Ör}ɝ9‰mycŽ~zwzއy€

pür‹«h~zè&y‰‡Œ.-˜Œ/Œh€Ørht0ˆŒh}<~1*9})/w§‰mr})ˆŒh}Q~§‚ ƍÛj¹ºØÔN´Â¾ "#¹bÁ p•k%$&¦™Sol ƐÓ<µbÅc¾»*."% "NÐ - ¾¨Ç@Ð

.; ' '•Ð

<ÝÑÐPäÒµb¶¹´Â¾¨ºBÆPÌ&Ð `¾¨¿]¶m¼š¹]ÆPµb¿NÈ,ÐP³W¾¨¶mÓs¾¨·m·¾PЦä9¹¿x·¾ W·¦å8¿•Á|¾¨¶¾¨¿NÀ¾&Á|¹¶¦³x·‡µb·m¼šÀA0#¿<µbºÕڕ»m¼š»/¹bÁ

xµÛµ`äÒµb¶ÈѳxÎ<µb¶m¼Õ¿]ÅNÐ/åM¿åuÐM0·m·‡µbºÕ¼•µb¿Nȸ„Ð c¾¨¿N»¾¨¿@Æb¾È•¼Õ·¹¶»Æ pÂy‰¨~.\y‰m—9‰mr2‰myÑw£}

yP}Q—püŒŽ¨–W‰uwz~zç Æ`Ûj¹ºÕÔ]´Â¾ ,." ¹bÁ ™SŒŽ~8©l›rc~8Œu‚.w§}3\r#tE©˜psސw|©Æ„äÒµb¿]¿N¾»ZÜ - ¶‡µb¿NÀ¾ÞßhÆ

³W¾¨Ó]·¾¨´Çs¾¨¶ ,.PÐQ³xÓ]¶m¼Õ¿]Åc¾¨¶‹Ï &¾¨¶mºƒµbÅNÐ

<ÝÑÐäÒµb¶¹´Â¾¨ºBƛá Ð4,ºƒµbÔN»¾¨¶Æµb¿NÈ NÐ µÚW»»¼š¾¨¶¾Pи/¹ÞÃÒµb¶È]»)³W¾µb´*ºš¾»»ä9¹´*Ó]Ô]·m¼Õ¿]Å

µb¿NÈ.Ëf¾¨·‡µÀ¹´*Ó]Ô]·m¼Õ¿]Å>¼Õ¿ xµÛµ•ÐåM¿ *ÐSä`Ð - ¹ EÆ@¾È•¼Õ·¹¶Æ \r}sލ–W‰u‰Œ¨}Qލç!9‰myjސ~zwzŽuŒyP}Q—

*¦¤ut]Œ¨‰uwBŒh}QŽuŒ

Æ<Ûj¹ºÕÔ]´Â¾J.ѹbÁ65

w£€šŒhç½y}Q—Âpsr}N‚ ” ™¦~B—

ƕÓ<µbÅc¾» . "jâ . ,.PÆs³W¾¨Ó]·Ð .;1 '•Ð

Ð - ¹¶‡µ EÆ ÐÝ`Ô]¶m¼š»Æµb¿NÈ ÑÐ7 ¹ÔN»»¾¨ºBÐ jµÛPµ ËiÔ]ºÕ·m¼ØÏ8Ë>¾¨·mÎN¹xÈ - ¶‡µb´Â¾¨Ã9¹¶mÄüÐ(åM¿

ku}Q~8Œh‰u}syP~zwzrP}Qy€8\r}«Œ¨‰Œh}QŽuŒ r} & ŒŽhvj}QrP€Ør2ç r‹«÷…:9§ŠŒŽ~z{u…Ò‰uwBŒh}<~8Œ—1™y}P–•y;xŒu‚ yP}Q—

pQç4‚¨~8Œ˜‚6<

&

…`…&™†p>= ’j’@?

ÆA`¹ÞÛsÐ •Ð

' Ð ›µb´*´ˆµ•ÆB Ð `¾¨ºÕ´Æ1 Ð c¹Î]¿N»¹¿@Æ@µb¿NÈ NÐ #ºÕ¼š»»¼šÈ]¾»Ð

-˜Œu‚hwC}2yc~|~8Œh‰h}]‚

Ð10È]ȕ¼š»‡¹¿

ᾐ»mºš¾¨ÚjÆD ¾µÈ•¼Õ¿]ÅNÆNË0Æ/.;1 •Ð

*Ð `¾È•¼Õ¿>µb¿NÈÐ<Ë2µbÅP¿xÔN»»¹¿@Ð xµ»m·0È]ÈE µ xµÛµ4ÏBÇ<µ»¾Èf»mڕ»m·¾¨´ Á|¹¶¼Õ´*Ó]ºš¾¨´Â¾¨¿x·m¼Õ¿]Å

Áz¶¹¿x·›¾¨¿NÈ]»ÞÐÑåM¿UË.ÐüÛPµb¿UÈ]¾¨¿F9¶‡µb¿Nȵb¿NÈUݘР$†µb¶m¼ÕÅc¹·Æ¾È•¼Õ·¹¶»Æ *9€šŒmސ~z‰r}Nw|ŽÑl›rc~8Œu‚*w£}

& v]Œmr‰‡Œ¨~zwzއy€G\r#tQ–•~8Œh‰,püލw|Œ¨}QŽuŒ Æ]Ûj¹ºÕÔ]´Â¾ ""NÐ\ºš»¾¨ÛW¼š¾¨¶`³WÀ¨¼š¾¨¿NÀ¾ $¦Ô]Ç]ºÕ¼š»mÎN¾¨¶»Æ ,.PÐ

. <Ë)Ð c¹Ô]¶ÈNµb¿@Æ Ý˜Ð $†µb¶m¼ÕÅc¹·Æ½ä`Ð PÔ]ºÕ¼HPÆI˜ÐÂÝ`Ô]¶m¼Õ¿@ƈµb¿NÈ-ä`ÐÂÌ@¾JÒ¾¨ºÕºš¾ÀÐ Ý,¾»m¼ÕÅP¿@Æ

åM´*Ó]ºš¾¨´Â¾¨¿x·‡µb·m¼š¹¿.µb¿NÈ ¦ÛµbºÕÔ<µb·m¼š¹¿U¹bÁ&·ÎN¾ - „ä&Ï 0·m·m¶m¼ÕÇ]Ô]·¾ `¶‡µb´*´ˆµb¶³xÚW»·¾¨´Ð,åM¿

\rP}«©¦r}f9‰r‰y˜w§}ˆ™y}–]y;jŒh‚K-Œh‚uwL}.y}Q—Âkts€ÕŒˆŒh}Q~ByP~zwzrP}

ÆNÓ<µbÅc¾» 1 •Æ

References

Related documents

BESPOKE PROTECTION: CATLOC 1005... BESPOKE PROTECTION:

Laura Aguilar, Policy Council Secretary, Santo Domingo Head Start, New Mexico.. Carleton Albert, Councilman, Pueblo of Zuni,

While Voldemort’s sole purpose in life appears to be to overcome nonbeing: to achieve immortality, Harry accepts his existence for what it is, he accepts his freedom

The palaeo-valley, investigated using non-in- vasive methods of measurement, is most proba- bly a valley form shaped in an earlier period, and is largely filled with aggradation

Overall, these results suggest that even though the densities of contribution would be higher in periods with “normal” unemployment rates than in the period in which the work

At this stage, the influence of the unbalances and the grounding location in bipolar HVDC grids on fault behavior and protection systems are not fully understood. This paper

2 .2 Potential Application of Effective Microbes as a Biological Control 6 2 .3 Changing Pattern of Controlling Bacterial Leaf Blight Disease 7 2.4 Impacts of bacterial Leaf

 Presence of cancer care infrastructure such as medical laboratory, ultrasound facilities, X-ray facilities, Radio- and chemo- therapy facilities, nuclear