Ésta es la versión G o o g l e guardada en el caché de la https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples?skin=print obtenida el 1 Dic 2004 15:35:29 GMT.
La caché de G o o g l e es la instantánea de la página que tomamos cuando exploramos la Web en forma automática.
Es posible que la página haya cambiado desde entonces. Haga clic aquí para ver la página actual sin resaltar.
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 texto guardado en el caché.
Para vincularse a esta página o para marcarla, utilice el siguiente url: http://www.google.com/search?q=cache:hVONU0SZ6CIJ:https://wiki.lugmen.org.ar/twiki/view/Main/TyphonExamples%3Fskin%3Dprint+typhonexamples&hl=es


Google no tiene relación con los autores de esta página ni es responsable de su contenido.
Se han resaltado estos términos de búsqueda: typhonexamples 

TWiki . Main . TyphonExamples
TWiki . Main . TyphonExamples

Ejemplos de TyphonLanguage

Hello world

Typhon


include stdio.h
int main():
    printf("Hola mundo!")
    return 0

C++


#include <stdio.h>
int main()
{
    printf("Hola mundo!");
    return 0;
}

Lista argumentos de línea de comandos

Las líneas separan bloques de código para ver como Typhon traduciría a C++.

Typhon


include vector, string, iostream
import vector, string, cout from std
int main(vector<string> args):
    for const string& s in vector<string> args:
        cout << s << "\n"
    return 0

C++


// include vector, string, iostream
#include <vector>
#include <string>
#include <iostream>
// import vector, string, cout from std
using std::vector;
using std::string;
using std::cout;
// int main(vector<string> args):
int main(int ___argc, char* ___argv[]):
    vector<string> args(___argc);
    for (int i = 0; i < ___argc; ++i)
        args.push_back(___argv[i]);
    // for const string& s in vector<string> args:
    for (vector<string>::const_iterator ___s = args.begin();
        ___s != args.end();
        ++___s)
    {
        const std::string& s = *___s;
        // cout << s << "\n"
        cout << s << "\n";
    // for const string& s in vector<string> args:
    }
    // return 0
    return 0;
// int main(vector<string> args):
}

Word Count (wc)

D

Extraído de los ejemplos del compilador dmd para linux. Sólo para comparar la complejidad sintáctica y la cantidad de código que se necesita escribir en un lenguaje que podría acercarse de algún modo a donde TyphonLanguage apunta.
import std.file;

int main (char[][] args)
{
    int w_total, l_total, c_total;
    printf ("   lines   words   bytes file\n");
    foreach (char[] arg; args[1 .. args.length])
    {
        int w_cnt, l_cnt, c_cnt;
        bool inword;
        char[] input = cast(char[])std.file.read(arg);
        foreach (char c; input)
        {
            if (c == '\n')
                ++l_cnt;
            if (c != ' ')
            {
                if (!inword)
                {
                    inword = 1;
                    ++w_cnt;
                }
            }
            else
                inword = 0;
            ++c_cnt;
        }
        printf ("%8lu%8lu%8lu %.*s\n", l_cnt, w_cnt, c_cnt, arg);
        l_total += l_cnt;
        w_total += w_cnt;
        c_total += c_cnt;
    }
    if (args.length > 2)
    {
        printf ("--------------------------------------\n%8lu%8lu%8lu total",
            l_total, w_total, c_total);
    }
    return 0;
}

Typhon

Escrito lo más parecido posible (por más ineficiente y feo que sea :) al ejemplo de D (sacado de los ejemplos del compilador de DigitalMars?).
include fstream, iostream, vector, string, iomanip

import cout, vector, string, ifstream, getline, setw from std

int main (vector<string> args):
    int w_total = 0, l_total = 0, c_total = 0
    cout << "   lines   words   bytes file\n"
    for string arg in args[1:]:
        int w_cnt = 0, l_cnt = 0, c_cnt = 0
        bool inword = false
        string contenido
        block:
            ifstream f(arg)
            string buff
            while getline(f, buff):
                contenido += buff
        for char c in contenido:
            if c == '\n':
                ++l_cnt
            if c != ' ':
                if not inword:
                    inword = true
                    ++w_cnt
            else:
                inword = false
            ++c_cnt
        cout << width(8) << l_cnt << width(8) << w_cnt << width(8) << c_cnt << " " << arg << "\n"
        l_total += l_cnt
        w_total += w_cnt
        c_total += c_cnt
    if args.size() > 2:
        cout << "--------------------------------------\n"
        cout << width(8) << l_total << width(8) << w_total << width(8) << c_total << " total.\n"
    return 0

C++

Tener en cuenta que este sería el código generado automáticamente por Typon. Obviamente no es la forma más compacta ni la más clara de escribir el programa en C++.

Este programa, por supuesto, compila y anda.


#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <iomanip>

using std::cout;
using std::vector;
using std::string;
using std::ifstream;
using std::getline;
using std::setw;

int main(int ___argc, char* ___argv[])
{
    vector<string> args;
    args.reserve(___argc);
    for (int i = 0; i < ___argc; ++i)
        args.push_back(___argv[i]);
    int w_total = 0, l_total = 0, c_total = 0;
    cout << "   lines   words   bytes file\n";
    for (vector<string>::iterator ___arg = args.begin()+1;
        ___arg != args.end();
        ++___arg)
    {
        string arg = *___arg;
        int w_cnt = 0, l_cnt = 0, c_cnt = 0;
        bool inword = false;
        string contenido;
        {
            ifstream f(arg.c_str());
            string buff;
            while (getline(f, buff))
            {
                contenido += buff;
            }
        }
        for (string::iterator ___c = contenido.begin();
            ___c != contenido.end();
            ++___c)
        {
            char c = *___c;
            if (c == '\n')
            {
                ++l_cnt;
            }
            if( c != ' ')
            {
                if (not inword)
                {
                    inword = true;
                    ++w_cnt;
                }
            }
            else
            {
                inword = false;
            }
            ++c_cnt;
        }
        cout << setw(8) << l_cnt << setw(8) << w_cnt << setw(8) << c_cnt << " " << arg << "\n";
        l_total += l_cnt;
        w_total += w_cnt;
        c_total += c_cnt;
    }
    if (args.size() > 2)
    {
        cout << "--------------------------------------\n";
        cout << setw(8) << l_total << setw(8) << w_total << setw(8) << c_total << " total.\n";
    }
    return 0;
}

----- Revision r1.1 - 07 Oct 2004 - 19:43 GMT - LeandroLucarella
Copyright © 2000-2004 por los autores contribuyentes