]> git.llucax.com Git - personal/typhon.git/blob - typhon_examples.html
Algunas cosillas sobre la tesis.
[personal/typhon.git] / typhon_examples.html
1 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
2 <BASE HREF="https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples?skin=print"><table border=1 width=100%><tr><td><table border=1 bgcolor=#ffffff cellpadding=10 cellspacing=0 width=100% color=#ffffff><tr><td><font face=arial,sans-serif color=black size=-1>Ésta es la versión <b><font color=#0039b6>G</font> <font color=#c41200>o</font> <font color=#f3c518>o</font> <font color=#0039b6>g</font> <font color=#30a72f>l</font> <font color=#c41200>e</font></b> <a href="http://www.google.com/intl/es/help/features.html#cached"><font color=blue>guardada en el caché</font></a> de la <A HREF="https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples?skin=print"><font color=blue>https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples?skin=print</font></a> obtenida el 1 Dic 2004 15:35:29 GMT.<br>
3 La caché de <b><font color=#0039b6>G</font> <font color=#c41200>o</font> <font color=#f3c518>o</font> <font color=#0039b6>g</font> <font color=#30a72f>l</font> <font color=#c41200>e</font></b> es la instantánea de la página que tomamos cuando exploramos la Web en forma automática.<br>
4 Es posible que la página haya cambiado desde entonces. Haga clic aquí para ver la <A HREF="https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples?skin=print"><font color=blue>página actual</font></a> sin resaltar.<br>
5 Esta página guardada en el caché puede hacer referencia a imágenes que ya no están disponibles. Haga clic aquí para obtener únicamente el <A HREF="http://66.102.7.104/search?q=cache:hVONU0SZ6CIJ:https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples%3Fskin%3Dprint+typhonexamples&hl=es&lr=&strip=1"><font color=blue>texto guardado en el caché</font></a>.<br>Para vincularse a esta página o para marcarla, utilice el siguiente url:  <code>http://www.google.com/search?q=cache:hVONU0SZ6CIJ:https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples%3Fskin%3Dprint+typhonexamples&amp;hl=es</code></font><br><br><center><font size=-2><i>Google no tiene relación con los autores de esta página ni es responsable de su contenido.</i></font></center></td></tr>
6 <tr><td>
7 <table border=0 cellpadding=0 cellspacing=0><tr><td><font face=arial,sans-serif color=black size=-1>Se han resaltado estos términos de búsqueda:&nbsp;</font></td><td bgcolor=#ffff66><B><font face=arial,sans-serif color=black size=-1>typhonexamples&nbsp;</font></B></td></tr></table>
8 </td></tr></table></td></tr></table>
9 <hr>
10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
11 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
12 <head>
13  <title> TWiki . Main . TyphonExamples</title>
14  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />  
15  <base href="https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples" />
16 </head>
17 <body bgcolor="#ffffff">
18 <a name="PageTop"></a>
19 <table width="100%" border="0" cellpadding="3" cellspacing="0">
20   <tr bgcolor="#FFFFC0">
21     <td>
22       <b>TWiki . Main . </b><font size="+2"><b><B style="color:black;background-color:#ffff66">TyphonExamples</B></b></font>
23     </td>
24   </tr>
25 </table>
26 <p />
27 <h1><a name="Ejemplos_de_TyphonLanguage"> </a> Ejemplos de <a href="/twiki/view/Main/TyphonLanguage">TyphonLanguage</a> </h1>
28 <p />
29 <p />
30 <ul>
31 <li> <a href="/twiki/view/Main/TyphonExamples#Ejemplos_de_TyphonLanguage">Ejemplos de TyphonLanguage</a>
32 </li>
33 <li> <a href="/twiki/view/Main/TyphonExamples#Hello_world">Hello world</a>
34 </li>
35 <li> <a href="/twiki/view/Main/TyphonExamples#Lista_argumentos_de_l_nea_de_com">Lista argumentos de línea de comandos</a>
36 </li>
37 <li> <a href="/twiki/view/Main/TyphonExamples#Word_Count_wc_">Word Count (wc)</a>
38 </li>
39 </ul>
40 <p />
41 <h1><a name="Hello_world"> Hello world </a></h1>
42 <h2><a name="Typhon"> Typhon </a></h2>
43 <hr />
44 <pre>
45 include stdio.h
46 int main():
47     printf("Hola mundo!")
48     return 0
49 </pre>
50 <hr />
51 <p />
52 <h2><a name="C_"> C++ </a></h2>
53 <hr />
54 <pre>
55 #include &lt;stdio.h>
56 int main()
57 {
58     printf("Hola mundo!");
59     return 0;
60 }
61 </pre>
62 <hr />
63 <p />
64 <h1><a name="Lista_argumentos_de_l_nea_de_com"> Lista argumentos de línea de comandos </a></h1>
65 Las líneas separan bloques de código para ver como Typhon traduciría a C++.
66 <p />
67 <h2><a name="Typhon"> Typhon </a></h2>
68 <hr />
69 <pre>
70 include vector, string, iostream
71 import vector, string, cout from std
72 int main(vector&lt;string> args):
73     for const string& s in vector&lt;string> args:
74         cout &lt;&lt; s &lt;&lt; "\n"
75     return 0
76 </pre>
77 <hr />
78 <p />
79 <h2><a name="C_"> C++ </a></h2>
80 <hr />
81 <pre>
82 // include vector, string, iostream
83 #include &lt;vector>
84 #include &lt;string>
85 #include &lt;iostream>
86 // import vector, string, cout from std
87 using std::vector;
88 using std::string;
89 using std::cout;
90 // int main(vector&lt;string> args):
91 int main(int ___argc, char* ___argv[]):
92     vector&lt;string> args(___argc);
93     for (int i = 0; i &lt; ___argc; ++i)
94         args.push_back(___argv[i]);
95     // for const string& s in vector&lt;string> args:
96     for (vector&lt;string>::const_iterator ___s = args.begin();
97         ___s != args.end();
98         ++___s)
99     {
100         const std::string& s = *___s;
101         // cout &lt;&lt; s &lt;&lt; "\n"
102         cout &lt;&lt; s &lt;&lt; "\n";
103     // for const string& s in vector&lt;string> args:
104     }
105     // return 0
106     return 0;
107 // int main(vector&lt;string> args):
108 }
109 </pre>
110 <hr />
111 <p />
112 <h1><a name="Word_Count_wc_"> Word Count (wc) </a></h1>
113 <h2><a name="D"> D </a></h2>
114 Extraído de los ejemplos del compilador dmd para linux. Sólo para comparar la
115 complejidad sintáctica y la cantidad de código que se necesita escribir en un
116 lenguaje que podría acercarse de algún modo a donde <a href="/twiki/view/Main/TyphonLanguage">TyphonLanguage</a> apunta.
117 <hr />
118 <pre>
119 import std.file;
120
121 int main (char[][] args)
122 {
123     int w_total, l_total, c_total;
124     printf ("   lines   words   bytes file\n");
125     foreach (char[] arg; args[1 .. args.length])
126     {
127         int w_cnt, l_cnt, c_cnt;
128         bool inword;
129         char[] input = cast(char[])std.file.read(arg);
130         foreach (char c; input)
131         {
132             if (c == '\n')
133                 ++l_cnt;
134             if (c != ' ')
135             {
136                 if (!inword)
137                 {
138                     inword = 1;
139                     ++w_cnt;
140                 }
141             }
142             else
143                 inword = 0;
144             ++c_cnt;
145         }
146         printf ("%8lu%8lu%8lu %.*s\n", l_cnt, w_cnt, c_cnt, arg);
147         l_total += l_cnt;
148         w_total += w_cnt;
149         c_total += c_cnt;
150     }
151     if (args.length > 2)
152     {
153         printf ("--------------------------------------\n%8lu%8lu%8lu total",
154             l_total, w_total, c_total);
155     }
156     return 0;
157 }
158 </pre>
159 <hr />
160 <p />
161 <h2><a name="Typhon"> Typhon </a></h2>
162 Escrito lo más parecido posible (por más ineficiente y feo que sea :) al ejemplo
163 de D (sacado de los ejemplos del compilador de <span style='background : #FFFFCE;'><font color="#0000FF">DigitalMars</font></span><a href="/twiki/edit/Main/DigitalMars?topicparent=Main.TyphonExamples">?</a>).
164 <hr />
165 <pre>
166 include fstream, iostream, vector, string, iomanip
167
168 import cout, vector, string, ifstream, getline, setw from std
169
170 int main (vector&lt;string> args):
171     int w_total = 0, l_total = 0, c_total = 0
172     cout &lt;&lt; "   lines   words   bytes file\n"
173     for string arg in args[1:]:
174         int w_cnt = 0, l_cnt = 0, c_cnt = 0
175         bool inword = false
176         string contenido
177         block:
178             ifstream f(arg)
179             string buff
180             while getline(f, buff):
181                 contenido += buff
182         for char c in contenido:
183             if c == '\n':
184                 ++l_cnt
185             if c != ' ':
186                 if not inword:
187                     inword = true
188                     ++w_cnt
189             else:
190                 inword = false
191             ++c_cnt
192         cout &lt;&lt; width(8) &lt;&lt; l_cnt &lt;&lt; width(8) &lt;&lt; w_cnt &lt;&lt; width(8) &lt;&lt; c_cnt &lt;&lt; " " &lt;&lt; arg &lt;&lt; "\n"
193         l_total += l_cnt
194         w_total += w_cnt
195         c_total += c_cnt
196     if args.size() > 2:
197         cout &lt;&lt; "--------------------------------------\n"
198         cout &lt;&lt; width(8) &lt;&lt; l_total &lt;&lt; width(8) &lt;&lt; w_total &lt;&lt; width(8) &lt;&lt; c_total &lt;&lt; " total.\n"
199     return 0
200 </pre>
201 <hr />
202 <p />
203 <h2><a name="C_"> C++ </a></h2>
204 Tener en cuenta que este sería el código generado automáticamente por Typon.
205 Obviamente no es la forma más compacta ni la más clara de escribir el programa
206 en C++.
207 <p />
208 Este programa, por supuesto, compila y anda.
209 <hr />
210 <pre>
211 #include &lt;fstream>
212 #include &lt;iostream>
213 #include &lt;vector>
214 #include &lt;string>
215 #include &lt;iomanip>
216
217 using std::cout;
218 using std::vector;
219 using std::string;
220 using std::ifstream;
221 using std::getline;
222 using std::setw;
223
224 int main(int ___argc, char* ___argv[])
225 {
226     vector&lt;string> args;
227     args.reserve(___argc);
228     for (int i = 0; i &lt; ___argc; ++i)
229         args.push_back(___argv[i]);
230     int w_total = 0, l_total = 0, c_total = 0;
231     cout &lt;&lt; "   lines   words   bytes file\n";
232     for (vector&lt;string>::iterator ___arg = args.begin()+1;
233         ___arg != args.end();
234         ++___arg)
235     {
236         string arg = *___arg;
237         int w_cnt = 0, l_cnt = 0, c_cnt = 0;
238         bool inword = false;
239         string contenido;
240         {
241             ifstream f(arg.c_str());
242             string buff;
243             while (getline(f, buff))
244             {
245                 contenido += buff;
246             }
247         }
248         for (string::iterator ___c = contenido.begin();
249             ___c != contenido.end();
250             ++___c)
251         {
252             char c = *___c;
253             if (c == '\n')
254             {
255                 ++l_cnt;
256             }
257             if( c != ' ')
258             {
259                 if (not inword)
260                 {
261                     inword = true;
262                     ++w_cnt;
263                 }
264             }
265             else
266             {
267                 inword = false;
268             }
269             ++c_cnt;
270         }
271         cout &lt;&lt; setw(8) &lt;&lt; l_cnt &lt;&lt; setw(8) &lt;&lt; w_cnt &lt;&lt; setw(8) &lt;&lt; c_cnt &lt;&lt; " " &lt;&lt; arg &lt;&lt; "\n";
272         l_total += l_cnt;
273         w_total += w_cnt;
274         c_total += c_cnt;
275     }
276     if (args.size() > 2)
277     {
278         cout &lt;&lt; "--------------------------------------\n";
279         cout &lt;&lt; setw(8) &lt;&lt; l_total &lt;&lt; setw(8) &lt;&lt; w_total &lt;&lt; setw(8) &lt;&lt; c_total &lt;&lt; " total.\n";
280     }
281     return 0;
282 }
283 </pre>
284 <hr />
285 <p />
286 <p />
287 <p />
288 <table width="100%" border="0" cellpadding="3" cellspacing="0">
289   <tr bgcolor="#FFFFC0">
290     <td valign="top">
291       <code>-----</code> Revision r1.1 - 07 Oct 2004 - 19:43 GMT - <a href="/twiki/view/Main/LeandroLucarella">LeandroLucarella</a>
292     </td>
293   </tr>
294 </table>
295 Copyright &copy; 2000-2004 por los autores contribuyentes
296 <a name="PageBottom"></a>
297 </body>
298 </html>