root/trunk/dxmp.sxmp

Revision 7, 3.9 kB (checked in by rubikitch, 1 year ago)

Added simplest example.

Line 
1 $ build dxmp
2 Files are up to date, no build required.
3 $ cat simple.rb
4 # Example of Ruby's xmpfilter
5 1+1                             # =>
6 "aa".length                     # =>
7 $ xmpfilter simple.rb
8 # Example of Ruby's xmpfilter
9 1+1                             # => 2
10 "aa".length                     # => 2
11 $ cat simple.d
12 // Example of D's dxmp
13 int main(char[][] argv) {
14     1+1;                        // =>
15     "aa".length;                // =>
16     return 0;
17 }
18 $ ./dxmp simple.d
19 // Example of D's dxmp
20 int main(char[][] argv) {
21     cast(void)(1+1);                        // => 2
22     cast(void)("aa".length);                // => 2
23     return 0;
24 }
25 $ cat dxmp_testcases.d
26 private import std.stdio;
27 private import std.cstream;
28 int main(char[][] argv) {
29   version(assert_error) assert(0);
30   version(switch_error) switch_error();
31   version(array_warning) array_warning();
32   version(not_reachable) not_reachable();
33   version(undefined) undefined();
34   version(print) print();
35   version(annotate) annotate();
36   return 0;
37 }
38
39 version(switch_error)
40 void switch_error() {
41   int x = 1;
42   switch(x) {
43   case 0:
44     writefln(0);
45     break;
46     /*  no default */
47   }
48 }
49
50 version(array_warning)
51 char array_warning() {
52   static char[10] a;
53   int length = 4;
54   return a[length - 1];
55 }
56
57 version(not_reachable)
58 int not_reachable() {
59   return 1;
60   return 2;
61 }
62
63 version(undefined)
64 void undefined() {
65   x();
66 }
67
68 version(print)
69 void print() {
70   writefln("print");
71 }
72
73 version(annotate)
74 void annotate() {
75   cast(void)(1+1);              // =>
76   10+10;                        // =>
77 }
78 $ rdmd -version=assert_error dxmp_testcases.d
79 Error: AssertError Failure dxmp_testcases(4)
80 $ rdmd -version=switch_error dxmp_testcases.d
81 Error: Switch Default dxmp_testcases(17)
82 $ rdmd -w -version=array_warning dxmp_testcases.d
83 warning - Error: array 'length' hides other 'length' name in outer scope
84 rdmd: Couldn't compile or execute dxmp_testcases.d.
85 $ rdmd -w -version=not_reachable dxmp_testcases.d
86 warning - dxmp_testcases.d(35): Error: statement is not reachable
87 rdmd: Couldn't compile or execute dxmp_testcases.d.
88 $ rdmd  -version=undefined dxmp_testcases.d
89 dxmp_testcases.d(40): Error: undefined identifier x
90 dxmp_testcases.d(40): Error: function expected before (), not x of type int
91 rdmd: Couldn't compile or execute dxmp_testcases.d.
92 $ ./dxmp dxmp_testcases.d -version=annotate | grep -5 '// =>'
93   writefln("print");
94 }
95
96 version(annotate)
97 void annotate() {
98   cast(void)(1+1);              // => 2
99   cast(void)(10+10);                        // => 20
100 }
101 $ ./dxmp dxmp_testcases.d -version=assert_error | grep -5 '// !>'
102 private import std.stdio;
103 private import std.cstream;
104 int main(char[][] argv) {
105   version(assert_error) assert(0); // !> AssertError Failure
106   version(switch_error) switch_error();
107   version(array_warning) array_warning();
108   version(not_reachable) not_reachable();
109   version(undefined) undefined();
110   version(print) print();
111 $ ./dxmp dxmp_testcases.d -version=switch_error | grep -5 '// !>'
112 }
113
114 version(switch_error)
115 void switch_error() {
116   int x = 1;
117   switch(x) { // !> Switch Default
118   case 0:
119     writefln(0);
120     break;
121     /*  no default */
122   }
123 $ ./dxmp dxmp_testcases.d -w -version=array_warning | grep -5 '// ~>'
124 version(annotate)
125 void annotate() {
126
127
128 }
129 // ~> warning - Error: array 'length' hides other 'length' name in outer scope
130 // ~> rdmd: Couldn't compile or execute dxmp_testcases.d.
131 $ ./dxmp dxmp_testcases.d -version=print | grep -5 '// >>'
132 version(annotate)
133 void annotate() {
134
135
136 }
137 // >> print
138 $ ./dxmp dxmp_testcases.d -w -version=not_reachable | grep -5 '// ~>'
139 version(annotate)
140 void annotate() {
141
142
143 }
144 // ~> warning - dxmp_testcases.d(35): Error: statement is not reachable
145 // ~> rdmd: Couldn't compile or execute dxmp_testcases.d.
146 $ ./dxmp dxmp_testcases.d -version=undefined | grep -5 '// ~>'
147 version(annotate)
148 void annotate() {
149
150
151 }
152 // ~> dxmp_testcases.d(40): Error: undefined identifier x
153 // ~> dxmp_testcases.d(40): Error: function expected before (), not x of type int
154 // ~> rdmd: Couldn't compile or execute dxmp_testcases.d.
Note: See TracBrowser for help on using the browser.