Changeset 2068
- Timestamp:
- Aug 24, 2006, 9:27:57 PM (14 years ago)
- Location:
- to-imperative/trunk/compiler
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
to-imperative/trunk/compiler/rfp_as2as.rf
r2052 r2068 19 19 20 20 // remove blocks from Re 21 $func Flatten-Result (e.Re) e.items = e.assigns (e.Re);21 $func Flatten-Result s.tail? (e.Re) e.items = e.assigns (e.Re); 22 22 23 23 $func Generate-In-Vars (e.in) e.branch = (e.in) e.branch; … … 90 90 e.branches : (BRANCH t.p e.branch) e.rest, 91 91 <Unstick-Blocks e.branch> :: e.new-branch (e.Fe), 92 { e.Fe : FAIL; (e.Fe); } :: e.Fe, 93 e.rest (e.br (BRANCH t.p e.new-branch)) (e.Fes e.Fe); 92 e.rest (e.br (BRANCH t.p e.new-branch)) (e.Fes (e.Fe)); 94 93 } :: e.branches (e.br) (e.Fes), 95 94 e.branches : /*empty*/ = … … 103 102 (RIGHT e) e; 104 103 } = 105 <Gener-Var-Indices 1 (<MSG e.Fes>) "aux" "block"> :: e.aux s, 104 <? &Free-Idx> : s.N, 105 <Gener-Var-Indices s.N (<MSG e.Fes>) "aux" "alt"> :: e.aux s.N, 106 <Store &Free-Idx s.N>, 106 107 eL (s.block t.Pragma e.br) (FORMAT (PRAGMA) e.aux) 107 108 (RESULT (PRAGMA) e.aux) <Unstick-Blocks eR>; … … 110 111 eL (s.block t.Pragma e.br) <Unstick-Blocks eR>; 111 112 }; 113 (RESULT t.Pragma (s.block e.branches)) eR, s.block : \{ BLOCK; BLOCK?; } = // FIXME: Comment this and search for BUGs! 114 eL <Unstick-Blocks (s.block e.branches) eR>; 112 115 (RESULT t.Pragma e.Re) eR = 113 <Flatten-Result () e.Re> :: e.assigns (e.Re), 116 <Flatten-Result Tail () e.Re> :: e.assigns (e.Re), 117 { 118 e.Re : e1 (FAIL e2) = (RESULT t.Pragma e1) e2; 119 (RESULT t.Pragma e.Re); 120 } :: e.Result, 114 121 { 115 122 eR : v = 116 eL e.assigns (RESULT t.Pragma e.Re) <Unstick-Blocks eR>; 117 eL e.assigns (RESULT t.Pragma e.Re) (<Format-Exp e.Re>); 123 eL e.assigns e.Result <Unstick-Blocks eR>; 124 <Format-Exp e.Re> :: e.Fe, 125 <MSG (e.Fe) (e.Fe)> :: e.Fe, // hack for avoiding non-hard formats 126 eL e.assigns e.Result (e.Fe); 118 127 }; 119 128 (NOT (BRANCH t.p1 e.body)) eR = … … 128 137 <Unstick-Blocks t.CatchBlock> :: e.CatchBlock t.Catch-Fe, 129 138 eL (TRY (BRANCH t.p1 e.TrySnt) e.NOFAIL e.CatchBlock) (<MSG t.Try-Fe t.Catch-Fe>); 130 (FAIL e) = e.Sentence ( FAIL);139 (FAIL e) = e.Sentence ((FAIL)); 131 140 (ERROR t.Pragma) eR = 132 141 <Unstick-Blocks eR> :: eR t, 133 eL (ERROR t.Pragma) eR ( FAIL);142 eL (ERROR t.Pragma) eR ((FAIL)); 134 143 }; 135 144 136 Flatten-Result (e.Re) e.items, e.items : {145 Flatten-Result s.tail? (e.Re) e.items, e.items : { 137 146 t1 e.rest, t1 : \{ (BLOCK e); (BLOCK? e); } = 138 <Format-Exp e.Re> :: e.Fe,139 <MSG (e.Fe) (e.Fe)> :: e.Fe, // hack for avoiding non-hard formats140 <? &Free-Idx> : s.N,141 <Gener-Var-Indices s.N (e.Fe) "aux" "result"> :: e.aux1 s.N,142 <Store &Free-Idx s.N>,143 147 <Unstick-Blocks t1> :: e1 (e.Format), 144 <? &Free-Idx> : s.N2, 145 <Gener-Var-Indices s.N2 (e.Format) "aux" "block"> :: e.aux2 s.N2, 146 <Store &Free-Idx s.N2>, 147 (RESULT (PRAGMA) e.Re) (FORMAT (PRAGMA) e.aux1) 148 e1 (FORMAT (PRAGMA) e.aux2) 149 <Flatten-Result (e.aux1 e.aux2) e.rest>; 148 { 149 e.Format : (FAIL) = 150 (e.Re (FAIL e1)); 151 <? &Free-Idx> : s.N, 152 <Gener-Var-Indices s.N (e.Format) "aux" "block"> :: e.aux s.N, 153 <Store &Free-Idx s.N>, 154 e1 (FORMAT (PRAGMA) e.aux) 155 <Flatten-Result s.tail? (e.Re e.aux) e.rest>; 156 }; 150 157 (CALL t.p t.name e.r) e.rest = 151 <Flatten-Result () e.r> :: e.assigns (e.r), 158 <Flatten-Result Not-Tail () e.r> :: e.assigns (e.r), 159 (CALL t.p t.name e.r) :: t1, 152 160 { 153 e.assigns : v = 154 <Format-Exp e.Re> :: e.Fe, 155 <MSG (e.Fe) (e.Fe)> :: e.Fe, // hack for avoiding non-hard formats 156 <? &Free-Idx> : s.N, 157 <Gener-Var-Indices s.N (e.Fe) "aux" "result"> :: e.aux1 s.N, 161 e.rest : /*empty*/, s.tail? : Tail = 162 e.assigns (e.Re t1); 163 <? &Free-Idx> : s.N, 164 <Gener-Var-Indices s.N (<Format-Exp t1>) "aux" "call"> :: e.aux1 s.N, 158 165 <Store &Free-Idx s.N>, 159 (RESULT (PRAGMA) e.Re) (FORMAT (PRAGMA) e.aux1) 160 e.assigns <Flatten-Result (e.aux1 (CALL t.p t.name e.r)) e.rest>; 161 <Flatten-Result (e.Re (CALL t.p t.name e.r)) e.rest>; 166 e.assigns (RESULT (PRAGMA) t1) (FORMAT (PRAGMA) e.aux1) 167 <Flatten-Result s.tail? (e.Re e.aux1) e.rest>; 162 168 }; 163 169 (PAREN e.r) e.rest = 164 <Flatten-Result () e.r> :: e.assigns (e.r),165 e.assigns <Flatten-Result (e.Re (PAREN e.r)) e.rest>;166 t1 e.rest = <Flatten-Result (e.Re t1) e.rest>;170 <Flatten-Result Not-Tail () e.r> :: e.assigns (e.r), 171 e.assigns <Flatten-Result s.tail? (e.Re (PAREN e.r)) e.rest>; 172 t1 e.rest = <Flatten-Result s.tail? (e.Re t1) e.rest>; 167 173 /*empty*/ = (e.Re); 168 174 }; -
to-imperative/trunk/compiler/rfp_asail2asail.rf
r2043 r2068 13 13 $func Remove-Dupl-Decl (e.decls) (e.subst) e.asail = e.asail; 14 14 15 $func Process-Var (e.decls) (e.subst) s.type t.var = e.maybe-decl (e.decls) (e.subst); 16 15 17 $func Free-Idx = s.idx; 16 18 19 $box Idx; 20 17 21 18 22 Simplify-ASAIL e.asail = 23 <Store &Idx>, 19 24 <Remove-Dupl-Decl () () <Remove-Unreachable <Simplify e.asail>>>; 20 25 … … 125 130 Remove-Dupl-Decl (e.decls) (e.subst) e.items, e.items : { 126 131 t1 e.rest = { 127 t1 : (DECL s.type t.var) = { 128 e.decls : $r e (DECL s.type-old t.var) e = { 129 s.type : s.type-old = <Remove-Dupl-Decl (e.decls) (e.subst) e.rest>; 130 t.var : (s.tag e (e.name)), 131 (s.tag 'dd' (e.name <Free-Idx>)) :: t.new-var, 132 (DECL s.type t.new-var) :: t.new-decl, 133 t.new-decl <Remove-Dupl-Decl (e.decls t.new-decl) (e.subst (t.var t.new-var)) e.rest>; 134 }; 135 t1 <Remove-Dupl-Decl (e.decls t1) (e.subst) e.rest>; 136 }; 137 t1 : (EXPR t.var e.expr) = { 138 e.decls : $r e (DECL s.type-old t.var) e = { 139 s.type-old : Expr = 140 (ASSIGN t.var <Remove-Dupl-Decl (e.decls) (e.subst) e.expr>) 141 <Remove-Dupl-Decl (e.decls) (e.subst) e.rest>; 142 t.var : (s.tag e (e.name)), 143 (s.tag 'dd' (e.name <Free-Idx>)) :: t.new-var, 132 t1 : (DECL s.type t.var) = 133 <Process-Var (e.decls) (e.subst) s.type t.var> :: e.d (e.decls) (e.subst), 134 e.d <Remove-Dupl-Decl (e.decls) (e.subst) e.rest>; 135 t1 : (EXPR t.var e.expr) = 136 <Process-Var (e.decls) (e.subst) Expr t.var> :: e.d (e.decls2) (e.subst2), 137 { 138 e.d : (DECL s t.new-var) = 144 139 (EXPR t.new-var <Remove-Dupl-Decl (e.decls) (e.subst) e.expr>) 145 <Remove-Dupl-Decl (e.decls (DECL Expr t.new-var)) (e.subst (t.var t.new-var)) e.rest>; 146 }; 147 (EXPR t.var <Remove-Dupl-Decl (e.decls) (e.subst) e.expr>) 148 <Remove-Dupl-Decl (e.decls (DECL Expr t.var)) (e.subst) e.rest>; 149 }; 140 <Remove-Dupl-Decl (e.decls2) (e.subst2) e.rest>; 141 (ASSIGN t.var <Remove-Dupl-Decl (e.decls) (e.subst) e.expr>) 142 <Remove-Dupl-Decl (e.decls2) (e.subst2) e.rest>; 143 }; 144 t1 : (s.split expr (e.len) t.var1 t.var2), s.split : \{ LSPLIT; RSPLIT; } = 145 <Remove-Dupl-Decl (e.decls) (e.subst) expr (e.len)> :: expr, 146 <Process-Var (e.decls) (e.subst) Split t.var1> :: e.decl1 (e.decls) (e.subst), 147 { 148 e.decl1 : (DECL s.type t.new-var) = t.new-var; 149 t.var1; 150 } :: t.var1, 151 <Process-Var (e.decls) (e.subst) Split t.var2> :: e.decl2 (e.decls) (e.subst), 152 { 153 e.decl2 : (DECL s.type t.new-var) = t.new-var; 154 t.var2; 155 } :: t.var2, 156 (s.split expr t.var1 t.var2) <Remove-Dupl-Decl (e.decls) (e.subst) e.rest>; 150 157 e.subst : e (t1 t.new-var) e = 151 158 <Remove-Dupl-Decl (e.decls) (e.subst) t.new-var e.rest>; … … 155 162 }; 156 163 /*empty*/ = /*empty*/; 164 }; 165 166 Process-Var (e.decls) (e.subst) s.type t.var, { 167 e.decls : $r e (DECL s.type-old t.var) e = { 168 s.type : s.type-old = /*empty*/ (e.decls) (e.subst); 169 t.var : (s.tag e (e.name)), 170 (s.tag 'dd' (e.name <Free-Idx>)) :: t.new-var, 171 (DECL s.type t.new-var) :: t.decl, 172 t.decl (e.decls t.decl) (e.subst (t.var t.new-var)); 173 }; 174 (DECL s.type t.var) (e.decls (DECL s.type t.var)) (e.subst); 157 175 }; 158 176 … … 220 238 221 239 222 $box Idx;223 224 240 Free-Idx = 225 241 { -
to-imperative/trunk/compiler/rfp_asail_java.rf
r2043 r2068 84 84 <? &Entry-Name> : v.name = 85 85 () 86 ('public static void main (java.lang.String[] args) {' 87 (('RefalRuntime.setArgs ("'e.java-module-name'", args);') 88 ('try {' (v.name' (new Result ());') '}') 89 ('catch (RefalException e) {' ('System.out.println ("$error: " + e);') '}') 90 ) 91 '}');; 86 ('public static void main (java.lang.String[] args) {' ( 87 ('RefalRuntime.setArgs ("'e.java-module-name'", args);') 88 ('try {' (v.name' (new Result ());') '}') 89 ('catch (RefalException e) {' ( 90 ('java.lang.System.out.println ("$error: " + e);') 91 ('java.lang.System.exit (100);') 92 )'}') 93 )'}');; 92 94 } :: e.entry, 93 95 (e.java-module-name) -
to-imperative/trunk/compiler/rfp_check.rf
r2034 r2068 60 60 * 4) All function calls are performed with expressions of right formats. 61 61 */ 62 Satisfies-Format? (e.InFormat) (e.OutFormat) e.Sentence = 62 Satisfies-Format? (e.InFormat) (e.OutFormat) e.Sentence, { 63 e.Sentence : $r e.Snt (ERROR t) e.queue = 64 <Satisfies-Format? () ((EVAR)) e.queue>, 65 <Satisfies-Format? (e.InFormat) () e.Snt>; 63 66 e.Sentence (e.OutFormat) $iter { 64 e.Sentence : $r e.Snt (ERROR t) e.queue =65 <Satisfies-Format? () ((EVAR)) e.queue>,66 e.Snt ();67 67 e.Sentence : e.Snt t.Statement, 68 68 t.Statement : { 69 69 (RESULT t.Pragma e.ResultExpression) = 70 70 { 71 e.ResultExpression : (s.block e), s.block : \{ BLOCK; BLOCK?; } = 72 <Satisfies-Format? () (e.OutFormat) e.ResultExpression>, 73 e.Snt (); 71 74 <Subformat? (e.OutFormat) (<Format-Exp e.ResultExpression>)> = 72 75 <Check-Inputs e.ResultExpression>, … … 131 134 (CUT t) = e.Snt (); 132 135 (STAKE t) = e.Snt (); 133 (BRANCH t e.Snt1) = e.Snt1 (e.OutFormat); 136 (BRANCH t e.Snt1) = 137 <Satisfies-Format? (e.InFormat) (e.OutFormat) e.Snt1> (); 134 138 (Comp Branch) = /*empty*/ (); 135 139 }; 136 140 } :: e.Sentence (e.OutFormat), 137 141 e.Sentence : /*empty*/; 142 }; 138 143 139 144 /* -
to-imperative/trunk/compiler/rfp_clashes.rf
r1950 r2068 213 213 (0) (0) e.Pe; 214 214 } : (e.left) (e.right) expr, 215 <UHP-Clash LEFT &L -1 0 () () (e.left ) (t.Re) expr>215 <UHP-Clash LEFT &L 1 0 () () (e.left ) (t.Re) expr> 216 216 :: e.l-clashes (e.l-conds) (e.l-assigns) (e.left ) (expr), 217 <UHP-Clash RIGHT &R -0 1 () () (e.right) (t.Re) expr>217 <UHP-Clash RIGHT &R 0 1 () () (e.right) (t.Re) expr> 218 218 :: e.r-clashes (e.r-conds) (e.r-assigns) (e.right) (expr), 219 219 <Bind &Hard-Parts (s.idx) ((e.left) (e.right) expr)>, -
to-imperative/trunk/compiler/rfp_compile.rf
r2052 r2068 92 92 93 93 $func Prepare-Res e.Reult-exprs = e.Result-exprs; 94 95 $func Prepare-Const e.const-expr = e.const-expr; 94 96 95 97 $func Comp-Assigns e.assignments = e.asail-assignments; … … 164 166 (e.decl) e.comp-func; 165 167 (s.link CONST t.pragma t.name e.expr) = 166 (CONSTEXPR s.link t.name (e.expr) e.expr) :: t.const,168 (CONSTEXPR s.link t.name (e.expr) <Prepare-Const e.expr>) :: t.const, 167 169 <Put &Declarations t.const>, 168 170 { … … 790 792 }; 791 793 794 795 Prepare-Const { 796 (PAREN expr) e.rest = (PAREN <Prepare-Const expr>) <Prepare-Const e.rest>; 797 t1 e.rest = <Ref-Func? t1> <Prepare-Const e.rest>; 798 /*empty*/ = /*empty*/; 799 }; 792 800 793 801 -
to-imperative/trunk/compiler/rfp_format.rf
r2043 r2068 10 10 $func Split-Rt t.Ft t.Rt = e.splited-Rt; 11 11 12 //$func MSG-Exprs (e.Fe1) e.Fe2 = e.Fe; 13 $func MSG-Exprs e = e; 12 $func MSG-Exprs (e.Fe1) e.Fe2 = e.Fe; 14 13 15 14 $func MSG-Terms t.Ft1 t.Ft2 = t.Ft; … … 116 115 */ 117 116 MSG-Exprs { 117 ((FAIL)) e.Fe2 = e.Fe2; 118 (e.Fe1) (FAIL) = e.Fe1; 118 119 (t.Ft1 e.Fe1) t.Ft2 e.Fe2 \? 119 120 /* -
to-imperative/trunk/compiler/rfp_helper.rf
r1950 r2068 4 4 5 5 $use Access Arithm Box Class Compare StdIO Table; 6 7 Abs s.num, {8 <"<" (s.num) (0)> = <"*" s.num -1>;9 s.num;10 };11 12 Max s1 s2, {13 <">" (s1) (s2)> = s1;14 s2;15 };16 6 17 7 $table Empty-Table; … … 83 73 84 74 /* 85 * Repeat e.expr s.num times.86 */87 Repeat {88 0 e = /*empty*/;89 s.num expr = expr <Repeat <"-" s.num 1> expr>;90 };91 92 /*93 75 * Search for e.pattern in expr (in all depths). 94 76 */ … … 98 80 }; 99 81 100 101 L- s1 e2 = <L s1 e2>;102 103 R- s1 e2 = <R s1 e2>;104 105 Char?- e1 = <Char? e1>;106 107 Int?- e1 = <Int? e1>;108 -
to-imperative/trunk/compiler/rfp_helper.rfi
r1950 r2068 5 5 $table RFP-Options ; 6 6 $table RFP-Module-Subst; 7 8 $func Abs s.num = s.abs;9 10 //$func Max s1 s2 = s.max;11 $func Max e = e;12 7 13 8 $func RFP-Clear-Table s.tbl = ; … … 26 21 $func Subst (e.patterns) (e.replaces) expr = expr; 27 22 28 // repeat e.expr s.num times29 $func Repeat s.num expr = expr;30 31 23 // search for e.pattern in expr (in all depths). 32 24 $func? In? (e.pattern) expr = ; 33 25 34 26 35 $func? L- e = e;36 37 $func? R- e = e;38 39 $func? Char?- e = e;40 41 $func? Int?- e = e;42 -
to-imperative/trunk/compiler/rfp_lex.rf
r2043 r2068 100 100 e.ts <Scan-Tokens>; 101 101 102 Find-Includes e.filename = 103 <Store &Source>, 104 <Store &Saved-Sources>, 105 <Store &Position>, 106 <Store &Source-Index>, 107 <Store &Src-Counter 0>, 108 { 109 <RFP-Src-Open-File e.filename>; 110 <PrintLN! &StdErr 'Error: cannot open source file ' e.filename>, 111 <Exit 1>; 112 } :: e.source, 113 <Push-Source e.source S 0 1>, 114 (/*e.includes*/) (/*e.line*/) /*e.stop?*/ $iter <Scan-Token e.line> : { 115 ((e (EOF))) e = (e.includes) () STOP; 116 ((e (USE))) (e.ln) = 117 () (e.ln) /*e.st?*/ $iter <Scan-Token e.ln> : { 118 ((e (SEMICOLON))) (e.l) = (e.incs) (e.l) STOP; 119 (((e.p) (s.WORD-or-QWORD e.s))) (e.l), 120 s.WORD-or-QWORD : \{ 121 WORD; 122 QWORD; 123 } = (e.incs (e.s)) (e.l); 124 (((e.p) (EOF))) = 125 <PrintLN! &StdErr 'Error: unexpected end of file during $use parsing'>, 126 <Exit 2>, () (); 127 (((e.p) (e.tag))) = 128 <PrintLN! &StdErr 'Error: unexpected token 'e.tag' during $use parsing'>, 129 <Exit 2>, () (); 130 } :: (e.incs) (e.ln) e.st?, 131 e.st? : STOP = 132 (e.includes e.incs) (e.ln); 133 e (e.ln) = (e.includes) (e.ln); 134 } :: (e.includes) (e.line) e.stop?, 135 e.stop? : STOP = 136 e.includes; 137 102 138 Push-Source e.source s.type s.row s.col = 103 139 <? &Src-Counter> : s.n, … … 134 170 e.t : { 135 171 ((e) (SEMICOLON)) = (e.nts) (e.line) F; 136 ((e.p) (s.WORD-or-QWORD e.s)) = 172 ((e.p) (s.WORD-or-QWORD e.s)), 173 s.WORD-or-QWORD : \{ 174 WORD = CI; 175 QWORD = NOT-CI; 176 } :: s.ci? = 137 177 { 138 178 <Lookup &RFP-Module-Subst e.s>; 139 179 e.s; 140 180 } :: e.s, 141 {142 s.WORD-or-QWORD : WORD = CI;143 NOT-CI;144 } :: s.ci?,145 181 { 146 182 <RFP-Debug?>, <PrintLN "Processing " e.s>;; … … 153 189 e.nts; 154 190 } :: e.nts, 191 (e.nts) (e.line) T; 192 ((e.p) (EOF)) = 193 <RFP-Error (e.p) ("Unexpected end of file")>, 194 (e.nts) (e.line) F; 195 ((e.p) (e.tag)) = 196 <RFP-Error (e.p) ("Unexpected token "e.tag)>, 155 197 (e.nts) (e.line) T; 156 198 }; -
to-imperative/trunk/compiler/rfp_lex.rfi
r683 r2068 22 22 23 23 $func RFP-Lexer e.filename = e.tokens ; 24 25 $func Find-Includes e.filename = e.includes ; -
to-imperative/trunk/compiler/rfp_parse.rf
r2042 r2068 560 560 (e.pos) /*empty*/ $iter 561 561 { 562 e.items (BRANCH <Pragma e.snt-end-pos> <Parse- Sentencee.colon-pos>)562 e.items (BRANCH <Pragma e.snt-end-pos> <Parse-Alt e.colon-pos>) 563 563 :: e.items, 564 564 <Expect-Token SEMICOLON> :: (e.snt-end-pos) t, … … 645 645 Parse-Source // [] = e.item 646 646 = 647 <Expect-Token LBRACE TLBRACE EMPTY> :: (e.pos) (s.type e),647 // <Expect-Token LBRACE TLBRACE EMPTY> :: (e.pos) (s.type e), 648 648 { 649 s.type : 650 \{ 651 LBRACE; 652 TLBRACE; 653 } = 654 (e.pos) /*empty*/ $iter 655 { 656 e.items (BRANCH <Pragma e.snt-end-pos> <Parse-Path>) :: e.items, 657 <Expect-Token SEMICOLON> :: (e.snt-end-pos) t, 658 (e.snt-end-pos) e.items; 659 } :: (e.snt-end-pos) e.items, 660 <Expect-Token RBRACE EMPTY> : (e) (RBRACE e), 661 { 662 s.type : LBRACE = (BLOCK <Pragma e.pos> e.items); 663 (BLOCK? <Pragma e.pos> e.items); 664 }; 665 (RESULT <Pragma e.pos> <Parse-Result>); 649 // s.type : 650 // \{ 651 // LBRACE; 652 // TLBRACE; 653 // } = 654 // (e.pos) /*empty*/ $iter 655 // { 656 // e.items (BRANCH <Pragma e.snt-end-pos> <Parse-Path>) :: e.items, 657 // <Expect-Token SEMICOLON> :: (e.snt-end-pos) t, 658 // (e.snt-end-pos) e.items; 659 // } :: (e.snt-end-pos) e.items, 660 // <Expect-Token RBRACE EMPTY> : (e) (RBRACE e), 661 // { 662 // s.type : LBRACE = (BLOCK <Pragma e.pos> e.items); 663 // (BLOCK? <Pragma e.pos> e.items); 664 // }; 665 <Expect-Token EMPTY> :: (e.pos) e, 666 (RESULT <Pragma e.pos> <Parse-Result>); 666 667 } :: e.items, 667 668 e.items <Expect-Token COLON EMPTY> $iter { … … 734 735 <Expect-Token RBRACKET> : e, e.items; 735 736 s.type : \{ LBRACE; TLBRACE; } = 736 <Unget-Token (e.pos) (s.type e.value)>, 737 <Parse-Source>; 737 (e.pos) /*empty*/ $iter { 738 e.items (BRANCH <Pragma e.snt-end-pos> <Parse-Path>) :: e.items, 739 <Expect-Token SEMICOLON> :: (e.snt-end-pos) t, 740 (e.snt-end-pos) e.items; 741 } :: (e.snt-end-pos) e.items, 742 <Expect-Token RBRACE EMPTY> : (e) (RBRACE e), 743 { 744 s.type : LBRACE = (BLOCK <Pragma e.pos> e.items); 745 (BLOCK? <Pragma e.pos> e.items); 746 }; 738 747 }; 739 748 -
to-imperative/trunk/compiler/rfpc.rf
r2043 r2068 36 36 $use "rfp_asail2asail"; 37 37 38 $use StdIO; 39 $use Box; 40 $use Dos; 41 $use Arithm; 42 $use Table; 43 $use Convert; 44 $use Class; 45 $use Access; 46 $use Compare; 47 $use CppMangle; 38 $use Access Arithm Box Class Compare Convert CppMangle Dos List Table StdIO; 48 39 49 40 $const RevDate = ('$Revision$') ('$Date$'); … … 110 101 <Store s.len <"+" s.st-len s.n-len>>, 111 102 <PrintLN>, 112 <Print <Rep eats.st-len ' '>>;103 <Print <Replicate s.st-len ' '>>; 113 104 <Store s.len s.new>; 114 105 }, … … 360 351 <Open-Channel e.java-module-name ('.java')> :: s.channel s.need-close?, 361 352 { 362 e.dirname : v = 363 <PrintLN! s.channel 364 'package '<Subst (&RFP-Dir-Separator) (('.')) e.dirname>';\n'>;; 353 <? &RFP-Include-Path> : e (e.dir) e, 354 e.dirname : \{ 355 e.dir = /*empty*/; 356 e.dir &RFP-Dir-Separator e.package = e.package; 357 }; 358 e.dirname; 359 } :: e.package, 360 { 361 e.package : v = 362 <PrintLN! s.channel 'package 'e.package';\n'>;; 365 363 }, 366 364 <PrintLN! s.channel 'import org.refal.plus.*;'>, … … 440 438 ' ' :: e.start1, 441 439 29 :: s.2nd-col, 442 <Rep eats.2nd-col ' '> :: e.start2,440 <Replicate s.2nd-col ' '> :: e.start2, 443 441 <PrintLN "Refal+ compiler " <Version>>, 444 442 <PrintLN "Copyright blah-blah-blah">, … … 467 465 <PrintLN 468 466 <? s.line> 469 <Rep eat<"-" s.2nd-col <Length <? s.line>>> ' '>467 <Replicate <"-" s.2nd-col <Length <? s.line>>> ' '> 470 468 s.phrase 471 469 >,
Note: See TracChangeset
for help on using the changeset viewer.