Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX E. ANTLR GRAMMAR : v l = v a l u e _ l i t e r a l {p = new V a l u e L i t e r a l P a t t e r n ( v l ) ; } | vovn = name {p = new NamePattern ( vovn . value_or_variable_name ( ) . id ( ) , new NoOptionalId ( ) ) ; } | vovn = name LPAREN ip = pattern { i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; } ( COMMA ip = pattern { i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; } ) ∗ RPAREN {p = new RecordPattern ( vovn . value_or_variable_name ( ) , i n n e r P a t t e r n L i s t ) ; } | UNDERSCORE { p = new WildcardPattern ( ) ; } | LPAREN ip = pattern { i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; } ( COMMA ip = pattern { i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; } ) ∗ RPAREN {p = new ProductPattern ( i n n e r P a t t e r n L i s t ) ; } | LLIST ( ip = pattern { i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; } ( COMMA ip = pattern { i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; } ) ∗ RLIST { lp = new Make_EnumeratedListPattern ( new EnumeratedListPattern ( new I n n e r P a t t e r n L i s t ( i n n e r P a t t e r n L i s t ) ) ) ; } | RLIST { lp = new Make_EnumeratedListPattern ( new EnumeratedListPattern ( new NoInnerPattern ( ) ) ) ; } ) 502
; ( HAT ip = pattern { lp = new ConcatenatedListPattern ( new EnumeratedListPattern ( new I n n e r P a t t e r n L i s t ( i n n e r P a t t e r n L i s t ) ) , ip ) ; } ) ? {p = new MakeListPattern ( lp ) ; } i n t _ l i t returns [ V a l u e L i t e r a l I n t e g e r i ] { i = null ; } : a :INTEGER_LITERAL { i = new V a l u e L i t e r a l I n t e g e r ( a . getText ( ) ) ; } ; r e a l _ l i t returns [ V a l u e L i t e r a l R e a l r ] { r = null ; } : a :REAL_LITERAL { r = new V a l u e L i t e r a l R e a l ( a . getText ( ) ) ; } ; b o o l _ l i t returns [ V a l u e L i t e r a l B o o l b ] { b = null ; } : FALSE { b = new V a l u e L i t e r a l B o o l ( " f a l s e " ) ; } | TRUE {b = new V a l u e L i t e r a l B o o l ( " true " ) ; } ; t e x t _ l i t returns [ ValueLiteralText t ] { t = null ; } : a :TEXT_LITERAL { t = new ValueLiteralText ( a . getText ( ) ) ; } ; c h a r _ l i t returns [ ValueLiteralChar c ] { c = null ; } : a :CHAR_LITERAL { c = new ValueLiteralChar ( a . getText ( ) ) ; } ; class RSLLexer extends Lexer ; options { charVocabulary= ’ \u0000 ’ . . ’ \u007F ’ ; // Allow only a s c i i k=2; 503
- Page 468 and 469: APPENDIX D. SPECIFICATION OF TRANSF
- Page 470 and 471: APPENDIX D. SPECIFICATION OF TRANSF
- Page 472 and 473: APPENDIX D. SPECIFICATION OF TRANSF
- Page 474 and 475: APPENDIX D. SPECIFICATION OF TRANSF
- Page 476 and 477: APPENDIX D. SPECIFICATION OF TRANSF
- Page 478 and 479: APPENDIX D. SPECIFICATION OF TRANSF
- Page 480 and 481: APPENDIX D. SPECIFICATION OF TRANSF
- Page 482 and 483: APPENDIX D. SPECIFICATION OF TRANSF
- Page 484 and 485: APPENDIX D. SPECIFICATION OF TRANSF
- Page 486 and 487: APPENDIX D. SPECIFICATION OF TRANSF
- Page 488 and 489: APPENDIX D. SPECIFICATION OF TRANSF
- Page 490 and 491: APPENDIX D. SPECIFICATION OF TRANSF
- Page 492 and 493: APPENDIX E. ANTLR GRAMMAR END = "en
- Page 494 and 495: APPENDIX E. ANTLR GRAMMAR ; d = d e
- Page 496 and 497: APPENDIX E. ANTLR GRAMMAR ; } ( com
- Page 498 and 499: APPENDIX E. ANTLR GRAMMAR ; ) ∗ }
- Page 500 and 501: APPENDIX E. ANTLR GRAMMAR ; } else
- Page 502 and 503: APPENDIX E. ANTLR GRAMMAR prod_bind
- Page 504 and 505: APPENDIX E. ANTLR GRAMMAR ; | | | |
- Page 506 and 507: APPENDIX E. ANTLR GRAMMAR ; | NAT {
- Page 508 and 509: APPENDIX E. ANTLR GRAMMAR ; { ve3 =
- Page 510 and 511: APPENDIX E. ANTLR GRAMMAR ( | RPARE
- Page 512 and 513: APPENDIX E. ANTLR GRAMMAR | { optio
- Page 514 and 515: APPENDIX E. ANTLR GRAMMAR new RSLLi
- Page 516 and 517: APPENDIX E. ANTLR GRAMMAR infix_op_
- Page 520 and 521: APPENDIX E. ANTLR GRAMMAR } t e s t
- Page 522 and 523: APPENDIX E. ANTLR GRAMMAR } : ’ .
- Page 524 and 525: APPENDIX E. ANTLR GRAMMAR 508
- Page 526 and 527: APPENDIX F. SOURCE CODE System . e
- Page 528 and 529: APPENDIX F. SOURCE CODE } } catch (
- Page 530 and 531: APPENDIX F. SOURCE CODE F.2 Visitor
- Page 532 and 533: APPENDIX F. SOURCE CODE public void
- Page 534 and 535: APPENDIX F. SOURCE CODE public void
- Page 536 and 537: APPENDIX F. SOURCE CODE public void
- Page 538 and 539: APPENDIX F. SOURCE CODE public void
- Page 540 and 541: APPENDIX F. SOURCE CODE public void
- Page 542 and 543: APPENDIX F. SOURCE CODE public void
- Page 544 and 545: APPENDIX F. SOURCE CODE public void
- Page 546 and 547: APPENDIX F. SOURCE CODE StringRSLAs
- Page 548 and 549: APPENDIX F. SOURCE CODE } nameOrWil
- Page 550 and 551: APPENDIX F. SOURCE CODE } public vo
- Page 552 and 553: APPENDIX F. SOURCE CODE } r e s u l
- Page 554 and 555: APPENDIX F. SOURCE CODE public void
- Page 556 and 557: APPENDIX F. SOURCE CODE } } public
- Page 558 and 559: APPENDIX F. SOURCE CODE } v a l u e
- Page 560 and 561: APPENDIX F. SOURCE CODE } public vo
- Page 562 and 563: APPENDIX F. SOURCE CODE } public vo
- Page 564 and 565: APPENDIX F. SOURCE CODE public void
- Page 566 and 567: APPENDIX F. SOURCE CODE } r e s u l
APPENDIX E. ANTLR GRAMMAR<br />
: v l = v a l u e _ l i t e r a l<br />
{p = new V a l u e L i t e r a l P a t t e r n ( v l ) ; }<br />
|<br />
vovn = name<br />
{p = new NamePattern (<br />
vovn . value_or_variable_name ( ) . id ( ) ,<br />
new NoOptionalId ( ) ) ; }<br />
|<br />
vovn = name LPAREN ip = pattern<br />
{ i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; }<br />
(<br />
COMMA ip = pattern<br />
{ i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; }<br />
) ∗<br />
RPAREN<br />
{p = new RecordPattern (<br />
vovn . value_or_variable_name ( ) ,<br />
i n n e r P a t t e r n L i s t ) ; }<br />
|<br />
UNDERSCORE { p = new WildcardPattern ( ) ; }<br />
|<br />
LPAREN ip = pattern<br />
{ i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; }<br />
(<br />
COMMA ip = pattern<br />
{ i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; }<br />
) ∗<br />
RPAREN<br />
{p = new ProductPattern ( i n n e r P a t t e r n L i s t ) ; }<br />
|<br />
LLIST<br />
(<br />
ip = pattern<br />
{ i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; }<br />
(<br />
COMMA ip = pattern<br />
{ i n n e r P a t t e r n L i s t . g e t L i s t ( ) . add ( ip ) ; }<br />
) ∗<br />
RLIST<br />
{ lp = new Make_EnumeratedListPattern (<br />
new EnumeratedListPattern (<br />
new I n n e r P a t t e r n L i s t (<br />
i n n e r P a t t e r n L i s t ) ) ) ; }<br />
|<br />
RLIST<br />
{ lp = new Make_EnumeratedListPattern (<br />
new EnumeratedListPattern (<br />
new NoInnerPattern ( ) ) ) ; }<br />
)<br />
502