DataMuseum.dk

Presents historical artifacts from the history of:

DANOSI

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DANOSI

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6776b988a⟧ TextFile

    Length: 18830 (0x498e)
    Types: TextFile
    Names: »RTP86GRA.M«

Derivation

└─⟦7d3116ab8⟧ Bits:30010531 BOBS Sourcer RTP25,RTP11,RTP86,RTP ASN1 grammatikken DVBS1.SW2114.src.2.6-9 BB920506
    └─⟦this⟧ »RTP86\RTP86GRA.M« 

TextFile

options(1, 3, 28, 32, 34)\r
metasymbols m1 = ~  m2 = !  m3 = %  m4 = @\r
\r
and array as begin boolean byte\r
case chain char const continueloop\r
div do downto else empty end\r
endloop error exit\r
exitloop external openroutine for forward function\r
goto if in inspect integer konst label\r
lock lockbuf lockmes loop mailbox mod name not of or\r
otherwise packed pool port prefix procedure\r
process program real record reference region\r
repeat set shared shift string then\r
to type typesize until\r
var varsize while with word xor\r
\r
+ - * / ' " < > <>\r
(: :)\r
<= >= ( ) (. .) ^\r
= := :=: . , ; : .. # ***\r
<* -- ::= (* ::= *> *) ::=\r
? & !\r
\r
;;\r
stringch = '\r
;;\r
goalsymbol = prog\r
;;\r
comment = (* ;; *) \r
;;\r
\r
<prog> ::= 000 code, symbol table ::= <external part> <pbody>\r
     ! 0 ::= <empty context><body> .\r
     ! 100 ------------------ ::= error\r
;;\r
<external part> ::= 1311 endinclude ::= <firstbegin><externals>\r
;;\r
<firstbegin> ::= 1010 first begin ::= empty\r
;;\r
<externals> ::= 0 ::= <externals> <external>\r
     ! 0 ::= <external>\r
;;\r
<external> ::= 1310 endcontext ::= <context name> ;  <external decl part> .\r
;;\r
<external decl part> ::= 0 ::= <external decl part> <external declaration>\r
     ! 0 ::= <external declaration>\r
;;\r
<external declaration> ::= 0 ::= <constant declaration>\r
     ! 0 ::= <type declaration>\r
     ! 0 ::= <routine declaration> ;\r
     ! 0 ::= prefix name ; <routine declaration> ;\r
;;\r
<context name> ::= 1301 context ::= name\r
;;\r
<empty context> ::= 1311 endinclude ::= empty\r
;;\r
\r
<pbody> ::= 0 ::= <body> .\r
     ! 1302 eom, lastend ( if save ) ::= empty\r
;;\r
<body> ::= 1303 eom, lastend ::= <body list>\r
;;\r
<body list> ::= 0  ::= <body list> ; <body elem>\r
     ! 0  ::= <body elem>\r
;;\r
<body elem> ::= 1312 endlevel ::= <begin level> <program declaration>\r
     ! 1312 endlevel ::= <begin level> <routine declaration>\r
;;\r
<program declaration> ::= 0 ::= program <program>\r
;;\r
<program> ::= 0 ::= <program name> <formal parameters> <prog sems> <program block>\r
     ! 101 errorprogram ::= error\r
;;\r
<prog sems> ::= 1304 endprogdecl ::= ;\r
;;\r
<program name> ::= 1305 progdecl, declaration ::= name\r
;;\r
<program block> ::= 1011 endblock endlevel endlevel::= <prog declarations>  <start labelscope> <compound statement> <end labelscope>\r
     ! 1020 external endlevel ::= external\r
;;\r
<start labelscope> ::= 1202 startlabelscope ::= empty\r
;;\r
<end labelscope> ::= 1203 endlabelscope ::= empty\r
;;\r
<begin level> ::= 1022 beginlevel, beginlevel ::= empty\r
;;\r
<prog declarations> ::= 1009 enddeclarations ::= <begin level> <decls>\r
;;\r
<decls> ::= 0 ::= empty\r
     ! 0 ::= <prog declaration list>\r
;;\r
<prog declaration list> ::= 0 ::= <prog declaration list>  <prog decl part>\r
     ! 0 ::= <prog decl part>\r
;;\r
<prog decl part> ::= 0 ::= <common declaration>\r
     ! 0 ::= <shared declaration>\r
     ! 0 ::= <program declaration> ;\r
;;\r
<routine decl part> ::= 0 ::= <routine decl part>  <common declaration>\r
     ! 0 ::= <common declaration>\r
;;\r
<common declaration> ::=   \r
       0 ::= <constant declaration> \r
     ! 0 ::= <type declaration> \r
     ! 0 ::= <variable declaration> \r
     ! 0 ::= <routine declaration> ;  \r
;;\r
<constant declaration> ::= 0 ::= const <constant declaration list>\r
;;\r
<constant declaration list> ::= 103 errorconstant ::= error\r
     ! 0 ::= <constant declaration list>  <constant definition>\r
     ! 0 ::= <constant definition>\r
;;\r
<constant definition> ::= 501 endconstdecl ::= <const name> = <expression> ;\r
     ! 503 id(anonymous) endexpression endconstdecl ::= <constname > error\r
;;\r
<const name> ::= 502 constdecl, declaration ::= name\r
;;\r
<type declaration> ::= 0 ::= type <type declaration list>\r
;;\r
<type declaration list> ::= 104 errortype ::= error\r
     ! 0 ::= <type declaration list>  <single type declaration> ;\r
     ! 0 ::= <single type declaration> ;\r
;;\r
<single type declaration> ::= 601 endlevel endtypedecl, endtypedecl endlevel ::= <type name> <formal type parameters> <eq> <def type spec>\r
     ! 606 , forwardtype ::= <type name>\r
;;\r
<formal type parameters> ::= 1007 endformal, endformal ::= <begin level>\r
     ! 1007 endformal, endformal ::= <begin level> ( <type formal list> )\r
;;\r
<type formal list> ::= 0 ::= <type formal list> ; <type param descr>\r
     ! 0 ::= <type param descr>\r
;;\r
<type param descr> ::= 1006 ::= <startlist> <parameter group> <type colon> <common type spec>\r
;;\r
<startlist>::= 1023 formal param list, startlist ::= empty\r
;;\r
<eq> ::= 602 ::= =\r
     ! 123 error ::= error\r
;;\r
<def type spec> ::= 0 ::= <type definition>\r
     ! 603 endtype ::= <variable>\r
;;\r
<type definition> ::= 604 ::= <structured type>\r
     ! 605 endpointer ::= <uparrow> <common type spec>\r
     ! 607 endscalar ::= <start scalar> <identifier list> )\r
     ! 608 endsubrange ::= <expression> <endsubrange>\r
     ! 0 ::= <set type>\r
;;\r
<uparrow> ::= 620 pointertype, newtype ::= ^\r
;;\r
<start scalar> ::= 621 , newtype startlist declarelist::= ( name ,\r
;;\r
<endsubrange> ::= 0 ::= .. <expression>\r
;;\r
<common type spec> ::= 0 ::= <def type spec>\r
     ! 609 typeid endtype ::= <defined type>\r
;;\r
<defined type> ::= 650 ::= boolean\r
     ! 651 ::= char\r
     ! 652 ::= integer\r
     ! 653 ::= real\r
     ! 654 ::= byte\r
     ! 655 ::= word\r
     ! 656 ::= mailbox\r
     ! 657 ::= reference\r
     ! 658 ::= pool\r
     ! 659 ::= process\r
     ! 660 ::= port\r
     ! 661 ::= chain\r
     ! 0   ::= external <program name> <formal parameters> ;\r
;;\r
<structured type> ::= 0 ::= <packinfo> <unpacked structured type>\r
;;\r
<packinfo> ::= 614 , packed ::= packed\r
      ! 0 , unpacked ::= empty\r
;;\r
<unpacked structured type> ::= 0 ::= <array type>\r
     ! 0 ::= <record type>\r
;;\r
<type name> ::= 600 typedecl, declaration ::= name\r
;;\r
<array type> ::= 615 endarray(s) ::= <array start> <common type spec>  <component type>\r
;;\r
<array start> ::= 623 arraytype, newtype ::= array (\r
;;\r
<component type> ::= 0 ::= <new dimension> <common type spec> <component type>\r
     ! 0 ::= ) <of type> <common type spec>\r
     ! 123 error ::= error\r
;;\r
<new dimension> ::= 623 arraytype, newtype ::= ,\r
;;\r
<of type> ::= 640 ::= of\r
     ! 109 error ::= error\r
;;\r
<record type> ::= 610 endrecord, endrecord ::= <record> <field list> end\r
;;\r
<record> ::= 624 recordtype, newtype::= record\r
;;\r
<field list> ::= 0 ::= <field list> ; <record section>\r
     ! 0 ::= <record section>\r
;;\r
<record section> ::= 0 ::= empty\r
     ! 611 endfieldlist, endfield ::= <start section> <recfield list> <type colon> <common type spec>\r
;;\r
<start section> ::= 632 recfields, startlist ::= empty\r
;;\r
<type colon> ::= 640 ::= :\r
     ! 110 error ::= error\r
;;\r
<set type> ::= 612 endset endtype, endset ::= <set of> <common type spec>\r
;;\r
<set of> ::= 625 settype, newtype ::= set <of type>\r
;;\r
<variable declaration> ::= 0 ::= <var> <variable declaration list>\r
;;\r
<var> ::= 706 kind:=var ::= var\r
;;\r
<shared declaration> ::= 0 ::= <shared> <variable declaration list>\r
;;\r
<shared> ::= 707 kind:=shared ::= shared\r
;;\r
<variable declaration list> ::= \r
       0 ::= <variable declaration list>  <var decl>\r
     ! 0 ::= <var decl>\r
;;\r
<var decl> ::= 0 ::= <start var> <identifier list> <type colon> <common type spec> <initialization> ;\r
;;\r
<start var> ::= 700 vardecl/shareddecl, startlist ::= empty\r
;;\r
<identifier list> ::= 0 ::= <identifier list> , <ident>\r
     ! 0 ::= <ident>\r
     ! 111 errorvar ::= <identifier list> , error\r
     ! 112 errorvar ::= error\r
;;\r
<recfieldlist> ::= 0 ::= <recfieldlist>, <recident>\r
     ! 0 ::= <recident>\r
     ! 111 errorvar ::= <recfieldlist>, error\r
     ! 112 errorvar ::= error\r
;;\r
<ident> ::= 701 , declarelist ::= name\r
;;\r
<recident> ::= 701 , declarelist ::= name\r
     ! 704 , declarelist ::= ?\r
;;\r
<initialization> ::= 702 endinit ::= <init assign> <expression>\r
     ! 705 endvar/endshared ::= empty\r
;;\r
<init assign> ::= 708 init ::= :=\r
;;\r
<routine declaration> ::= 0 ::= <routine heading> ; <routine block> \r
;;\r
<routine heading> ::= 1002 endprocdecl ::= <procedure heading>\r
     ! 1101 endfuncdecl ::= <function heading>\r
;;\r
<routine block> ::= 1011 endblock endlevel endlevel ::= <routine declarations>  <start label scope> <compound statement> <end label scope>\r
     ! 1020 external endlevel ::= external\r
! 1027 openroutine endlevel ::= openroutine\r
     ! 1021 forward endlevel ::= forward\r
;;\r
<routine declarations>::= 1009 enddeclarations ::= <beginlevel> <rdecls>\r
;;\r
<rdecls>::= 0 ::= empty\r
! 0 ::= <routinedeclpart>\r
;;\r
<procedure heading> ::= 0 ::= procedure <procedure name> <formal parameters>\r
     ! 113 errorproc ::= procedure error\r
;;\r
<procedure name> ::= 1003 procdecl, declaration ::= name\r
     ! 1004 procdecl, declaration ::= <spix name> = name\r
;;\r
<spix name> ::= 1001 pick up name ::= name\r
;;\r
<function heading> ::= 0 ::= function <function name> <formal parameters> <colon> <common type spec>\r
     ! 114 errorfunct ::= function error\r
;;\r
<function name> ::= 1102 funcdecl, declaration ::= name\r
     ! 1103 funcdecl, declaration ::= <spix name> = name\r
;;\r
<colon> ::= 640 ::= :\r
     ! 116 error ::= error\r
;;\r
<formal parameters> ::= 1007 endformal ::= <init formal>\r
     ! 1007 endformal ::= <init formal> ( <formal list> )\r
;;\r
<init formal> ::= 1022 beginlevel, beginlevel ::= empty\r
;;\r
<formal list> ::= 0 ::= <formal list> ; <parameter description>\r
     ! 0 ::= <parameter description>\r
;;\r
<parameter description> ::= 1006 endformallist ::= <param kind> <parameter group> <type colon> <formal type spec>\r
     ! 117 errorparam ::= error\r
;;\r
<param kind> ::= 1023 formalparamlist, startlist ::= empty\r
     ! 1024 formalparamlist, startlist ::= var\r
     ! 1025 formalparamlist, startlist ::= inspect\r
     ! 1026 formalparamlist, startlist ::= shared\r
;;\r
<parameter group> ::= 1008 , declarelist ::= <parameter group> , name\r
     ! 1008 , declarelist ::= name\r
;;\r
<formal type spec> ::= 0 ::= <deftypespec>\r
     ! 609 typeid endtype ::= <defined type>\r
;;\r
<compound statement> ::= 901  ::= <begin> <statement list> end\r
;;\r
<begin> ::= 902 ::= begin\r
;;\r
<statement list> ::= 0 ::= <statement list> ; <statement>\r
     ! 900 statement ::= <statement>\r
;;\r
<statement> ::= 900 ::= empty\r
     ! 0 ::= <compound statement>\r
     ! 0 ::= <procedure call>\r
     ! 0 ::= <assignment statement>\r
     ! 0 ::= <exchange statement>\r
     ! 0 ::= <case statement>\r
     ! 917 endlevel endfor, endlevel ::= <for do> <start labelscope> <statement> <end labelscope>\r
     ! 0 ::= <goto statement>\r
     ! 925 endif ::= <if then> <statement>\r
     ! 958 endelse ::= <if then else> <statement>\r
     ! 0 ::= <label name> : <statement>\r
     ! 0 ::= <repeat statement>\r
     ! 933 endwhile ::= <while do>  <statement> \r
     ! 936 endwith endlevel, endlevel ::= <with do> <start labelscope> <statement> <end labelscope>\r
      ! 949 endlock endlevel, endlevel ::= <lockdo> <startlabelscope> <statement> <endlabelscope>\r
     ! 0 ::= <loop statement>\r
     ! 950 exitloop ::= exitloop\r
     ! 951 contloop ::= continueloop\r
     ! 952 exitstat ::= exit\r
     ! 953 endregion ::= <region do> <startlabelscope> <statement> <endlabelscope>\r
     ! 121 errorstatement ::= error\r
;;\r
<balanced statement> ::= 900 ::= empty\r
     ! 0 ::= <compound statement>\r
     ! 0 ::= <procedure call>\r
     ! 0 ::= <assignment statement>\r
     ! 0 ::= <exchange statement>\r
     ! 0 ::= <case statement>\r
     ! 917 endlevel endfor, endlevel ::= <for do> <start labelscope> <balanced statement> <end labelscope>\r
     ! 0 ::= <goto statement>\r
     ! 958 endelse ::= <if then else> <balanced statement>\r
     ! 0 ::= <label name> : <balanced statement>\r
     ! 0 ::= <repeat statement>\r
     ! 933 endwhile ::= <while do>  <balanced statement> \r
     ! 936 endwith endlevel, endlevel ::= <with do> <start labelscope> <balanced statement> <end labelscope>\r
     ! 949 endlock endlevel, endlevel ::= <lockdo> <startlabelscope> <balanced statement> <endlabelscope>\r
     ! 0 ::= <loop statement>\r
     ! 950 exitloop ::= exitloop\r
     ! 951 contloop ::= continueloop\r
     ! 952 exitstat ::= exit\r
     ! 953 endregion ::= <region do> <startlabelscope> <balanced statement> <endlabelscope>\r
     ! 121 errorstatement ::= error\r
;;\r
<procedure call> ::= 903 callprocedure ::= <variable>\r
;;\r
<label name> ::= 1201 labeldef, declaration labeldeclare ::= name\r
;;\r
<actual parameter list> ::= 904 actualparam ::= <unit>\r
     ! 904 actualparam ::= <actual parameter list> , <unit>\r
;;\r
<unit> ::= 0 ::= <expression>\r
     ! 905 skipparam ::= ?\r
;;\r
<assignment statement> ::= 906 endassign ::= <variable> <assign> <expression>\r
;;\r
<assign> ::= 960 assign ::= :=\r
;;\r
<exchange statement> ::= 907 endexchange ::= <variable> <exchange> <variable>\r
;;\r
<exchange> ::= 961 exchange ::= :=:\r
;;\r
<case statement> ::= 909 endcase ::= <selector part> <case list><skipsemikolon><end case part>\r
;;\r
<selector part> ::= 910 caseexpr ::= <case> <expression> of\r
;;\r
<case> ::= 911 casestat ::= case\r
;;\r
<caselist> ::= 0 ::= <caselist> ; <caselist element>\r
     ! 0 ::= <caselist element>\r
;;\r
<caselistelement> ::= 912 caseelement ::= <case label list> <end label list> <statement>\r
;;\r
<case label list> ::= 0 ::= <label range>\r
     ! 0 ::= <case label list> , <label range>\r
;;\r
<label range> ::= 913 caselabelrange ::= <expression> .. <expression>\r
     ! 914 caselabel ::= <expression>\r
;;\r
<end label list> ::= 915 caselist ::= :\r
;;\r
<end case part> ::= 912 caseelement ::= <otherwise> <statement><skipsemikolon> end\r
     ! 0 ::= end\r
;;\r
<otherwise> ::= 916 otherwise caselist ::= otherwise\r
;;\r
<skipsemikolon> ::= 0 ::= ;\r
    ! 0 ::= empty\r
;;\r
<for do> ::= 918 endsubrange up beginlevel ::= <for to> <expression> do\r
     ! 919 endsubrange down beginlevel ::= <for downto> <expression> do\r
;;\r
<for to> ::= 0 ::= <for assign> <expression> to\r
;;\r
<for downto> ::= 0 ::= <for assign> <expression> downto\r
;;\r
<for assign> ::= 920 forstat, beginlevel declaration ::= for name :=\r
;;\r
<goto statement> ::= 922 endgoto ::= <goto> <lab name>\r
;;\r
<goto> ::= 923 gotostat ::= goto\r
;;\r
<lab name> ::= 924 id ::= name\r
;;\r
<if then> ::= 926 ifexpr ::= <if part> <expression> then\r
;;\r
<if part> ::= 927 ifstat ::= if\r
;;\r
<if then else> ::= 928 else ::= <if then> <balanced statement> else\r
;;\r
<loop statement> ::= 957 endloop ::= <loop> <statement list> endloop\r
;;\r
<loop> ::= 956 loopstat ::= loop\r
;;\r
<repeat statement> ::= 930 endrepeat ::= <repeat> \r
<statement list> <until> <expression>\r
;;\r
<repeat> ::= 932 repeatstat ::= repeat\r
;;\r
<until> ::= 929 until ::= until\r
;;\r
<while do> ::= 934 whileexpr ::= <while> <expression> do\r
;;\r
<while> ::= 935 whilestat ::= while\r
;;\r
<with do> ::=  944 do ::= <with> <with variable list> do\r
;;\r
<lock do> ::= 947 do ::= <lock> <variable> <to> <lock ident> do\r
;;\r
<lock ident> ::= 0 ::= <ident>\r
     ! 0 ::= <ident> <typecolon> <common type spec>\r
;;\r
<with> ::= 937 withstat beginlevel ::= with\r
;;\r
<lock> ::= 945 lockstat beginlevel ::= lock\r
! 946 lockbufstat ::= lockbuf\r
! 945 lockstat beginlevel ::= lockmes\r
;;\r
<with variable list> ::= 0 ::= <with variable>\r
     ! 0 ::= <with variable list> <with comma> <with variable>\r
;;\r
<with comma> ::= 938 withcomma beginlevel ::= ,\r
;;\r
<with variable> ::= 939 withvar nolocaldecl, declaration ::= <variable>\r
     ! 942 endlocaldecl ::= <variable> <as> <local name> <type colon> <common type spec>\r
     ! 943 nolocaltype ::= <variable> <as> <local name>\r
;;\r
<as> ::= 940 withvar, declaration ::= as\r
;;\r
<local name> ::= 941 , rename ::= name\r
;;\r
<to> ::= 948 lockvar endlockdecl, startlist ::= to\r
! 948 lockvar endlockdecl, startlist ::= as\r
;;\r
<region do> ::= 955 var ::= <region> <variable> do\r
;;\r
<region> ::= 954 regionstat ::= region\r
;;\r
<expression> ::= 801 endexpression ::= <simple expression>\r
     ! 802 eq endexpression ::= <simple expression> = <simple expression>\r
     ! 803 ne endexpression ::= <simple expression> <> <simple expression>\r
     ! 804 lt endexpression ::= <simple expression> < <simple expression>\r
     ! 805 le endexpression ::= <simple expression> <= <simple expression>\r
     ! 806 gt endexpression ::= <simple expression> > <simple expression>\r
     ! 807 ge endexpression ::= <simple expression> >= <simple expression>\r
     ! 808 in endexpression ::= <simple expression> in <simple expression>\r
     ! 122 errorexpression endexpression ::= error\r
;;\r
<simple expression> ::= 810 add ::= <simple expression> + <term>\r
     ! 811 sub ::= <simple expression> - <term>\r
     ! 812 or ::= <simple expression> or <term>\r
     ! 815 xor ::= <simple expression> xor <term>\r
     ! 813 nocode ::= + <term>\r
     ! 814 usub ::= - <term>\r
     ! 0 ::= <term>\r
;;\r
<term> ::= 816 star ::= <term> * <factor>\r
     ! 817 slash ::= <term> / <factor>\r
     ! 821 shift ::= <term> shift <factor>\r
     ! 818 div ::= <term> div <factor>\r
     ! 819 mod ::= <term> mod <factor>\r
     ! 820 and ::= <term> and <factor>\r
     ! 0 ::= <factor>\r
;;\r
<factor> ::= 0 ::= <value denotation>\r
     ! 830 endvariable ::= <variable>\r
     ! 0 ::= ( <expression> )\r
     ! 833 varsizecall( spix ) ::= varsize ( name )\r
     ! 834 typesizecall( spix ) ::= typesize ( name )\r
     ! 831 not ::= not <factor>\r
;;\r
<value denotation> ::= 0 ::= <unsigned integer>\r
     ! 0 ::= <struc value denotation>\r
     ! 825 endsetlist ::= <set denotation>\r
     ! 401 literal text ::= <str>\r
;;\r
\r
<str> ::= 405 string ::= string\r
     ! 406 concatenate string ::= <str>&string\r
     ! 408 concatename name ::= <str>&name\r
;;\r
\r
<struc value denotation> ::= 842 endstruc ::= <start struc val> <struc value list> :)\r
     ! 842 endstruc ::= <start struc val> :)\r
;;\r
<start struc val> ::= 841 beginstruc ::= (:\r
;;\r
<struc value list> ::= 0 ::= <struc value list> , <struc value>\r
     ! 0 ::= <struc value>\r
;;\r
<struc value> ::= 843 strucelem ::= <unit>\r
     ! 844 repstruc ::= <expression> *** <unit>\r
;;\r
\r
<set denotation> ::= 824 ::= <startset> <element list> .)\r
     ! 0 ::= <startset> .)\r
;;\r
<startset> ::= 826 setlist ::= (.\r
;;\r
<element list> ::= 0 ::= <element list> , <element>\r
     ! 0 ::= <element>\r
;;\r
<element> ::= 827 s_element ::= <expression>\r
     ! 828 m_element ::= <expression> .. <expression>\r
;;\r
<variable> ::= 835 id ::= name\r
     ! 836 field ::= <variable> . name\r
     ! 0 ::= <variable> <struc value denotation>\r
     ! 837 endactual ::= <variable> <begin actual> <actual parameter list> )\r
     ! 0 ::= <variable> <exclamation> <paramname>\r
     ! 838 uparrow ::= <variable> ^\r
;;\r
metasymbols m1 = ~ m2 =$ m3 = % m4 = @\r
<exclamation> ::= 0 ::= !\r
;;\r
metasymbols m1 = ~ m2 = ! m3 = % m4 = @\r
<paramname> ::= 840 typeselect ::= name\r
;;\r
<begin actual> ::= 839 beginactual ::= (\r
;;\r
<unsigned integer> ::= 402 literal integer/real ::= konst\r
     ! 404 literal integer ::= # name\r
;;\r
;;\r