Secciones de la página

shi. tol


Declaraciones


Constantes


Funciones


Time oriented language


Árbol de ficheros

Funciones

Set SHiRemStrCodSet()

Text SHiRemStrCodHtm()

Text SHiPre()

Text SHiRemStrCodPre()

Text SHiTolHtm()

Text SHiTolPre()

Text SHiJscHtm()

Text SHiJscPre()

Text SHiSqlPre()

Text SHiGplPre()

Text SHiCmdPre()

Text SHiCssPre()

Text SHiXmlHtm()

Text SHiXmlPre()

Text SHiEmbHtm()

Text SHiEmbPre()

Text SHiAscPre()

Text SHiCompact()

Text SHiPreCode()

Text SHiPreFile()

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









shi.tol de SHi.SyntaxHighlight

Funciones de sintaxis realzada (syntax highlight).

Declaraciones

Constantes

  • Text SHiRemOpn
    Inicio tipico de un comentario de bloque.
  • Text SHiRemCls
    Cierre tipico de un comentario de bloque.
  • Text SHiQuo
    Comillas dobles.
  • Text SHiRemHtm
    Span para un comentario.
  • Text SHiQu1Htm
    Span para un texto de primer nivel.
  • Text SHiQu2Htm
    Span para un subtexto de segundo nivel.
  • Text SHiTagHtm
    Span para el inicio de una etiqueta.
  • Text SHiCodEmb
    Span para el codigo embebido.
  • Text SHiEndHtm
    Cierre de un span.

Funciones

  • Set SHiRemStrCodSet(Text txtInp, Text remOpn, Text remCls, Text remLin, Text strQu1, Text strQu2)
    Retorna un conjunto de textos resultado de separar los comentarios de bloque, los comentarios de linea, los textos entrecomillados y el codigo.
  • Text SHiRemStrCodHtm(Text txtInp, Text remOpn, Text remCls, Text remLin, Text strQu1, Text strQu2)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de entrada txtImp. El ReplaceTable() para transformar < y > no se puede aplicar desde el principio porque a la hora de realzar codigo Html son los tags delimitadores mas importantes, por eso hay que hacerlo trozo a trozo de codigo.
  • Text SHiPre(Text txtInp)
    Retorna el codigo Html resultado de enmarcar txtImp entre las etiquetas <pre><code> y </code></pre>.
  • Text SHiRemStrCodPre(Text txtInp, Text remOpn, Text remCls, Text remLin, Text strQu1, Text strQu2)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de txtImp enmarcado todo el resultado entre las etiquetas <pre><code> y </code></pre>.
  • Text SHiTolHtm(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Tol de entrada que recibe como parametro pero sin enmarcar entre las etiquetas <pre><code> y </code></pre>.
  • Text SHiTolPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Tol de entrada que recibe como parametro.
  • Text SHiJscHtm(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Javascript de entrada que recibe como parametro pero sin enmarcar entre las etiquetas <pre><code> y </code></pre>.
  • Text SHiJscPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Javascript de entrada que recibe como parametro.
  • Text SHiSqlPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Sql de entrada que recibe como parametro.
  • Text SHiGplPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Gnuplot de entrada que recibe como parametro.
  • Text SHiCmdPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de mandatos para el Cmd de Dos que recibe como parametro.
  • Text SHiCssPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Cascade style sheet que recibe como parametro.
  • Text SHiXmlHtm(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Xml que recibe como parametro pero sin enmarcar en las etiquetas <pre><code> y </code></pre> Emplea la version no recursiva TxtSplitBy2Fast(), aunque menos robusta que TxtSplitBy2Tag(), para evitar caidas en fichero Xml de cierta longitud.
  • Text SHiXmlPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Xml que recibe como parametro.
  • Text SHiEmbHtm(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Html basico que recibe como parametro pero sin enmarcar en las etiquetas <pre><code> y </code></pre>.
  • Text SHiEmbPre(Text codInp)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo Xml que recibe como parametro.
  • Text SHiAscPre(Text codInp)
    Retorna el codigo Html del contenido Ascii que recibe como parametro. Unicamente cambia los caracteres especiales con HtmAsc2Xml() y pone las etiquetas <pre><code> y </code></pre>
  • Text SHiCompact(Text codHtm)
    Retorna el codigo Html resultado de eliminar las lineas en blanco antes y despues del <pre><code> y </code></pre>.
  • Text SHiPreCode(Text filPth, Text filTxt)
    Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo filTxt que se la leido, total o parcialmente, de fichero filPth. Recibe el nombre o ruta del fichero para saber su extension y de ahi el lenguaje de programacion.
  • Text SHiPreFile(Text filPth)
    Retorna el codigo Html resultado de aplicar sintaxis realzada a todo el codigo del fichero que recibe como parametro.

Constantes

Text SHiRemOpn

//////////////////////////////////////////////////////////////////////////////
Text SHiRemOpn = "/"+"*";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Inicio tipico de un comentario de bloque.", SHiRemOpn);
//////////////////////////////////////////////////////////////////////////////

Text SHiRemCls

//////////////////////////////////////////////////////////////////////////////
Text SHiRemCls = "*"+"/";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Cierre tipico de un comentario de bloque.", SHiRemCls);
//////////////////////////////////////////////////////////////////////////////

Text SHiQuo

//////////////////////////////////////////////////////////////////////////////
Text SHiQuo = Char(34);
//////////////////////////////////////////////////////////////////////////////
PutDescription("Comillas dobles.", SHiQuo);
//////////////////////////////////////////////////////////////////////////////

Text SHiRemHtm

//////////////////////////////////////////////////////////////////////////////
Text SHiRemHtm = "<span class='CodRem'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para un comentario.", SHiRemHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiQu1Htm

//////////////////////////////////////////////////////////////////////////////
Text SHiQu1Htm = "<span class='CodTxt'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para un texto de primer nivel.", SHiQu1Htm);
//////////////////////////////////////////////////////////////////////////////

Text SHiQu2Htm

//////////////////////////////////////////////////////////////////////////////
Text SHiQu2Htm = "<span class='CodSub'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para un subtexto de segundo nivel.", SHiQu2Htm);
//////////////////////////////////////////////////////////////////////////////

Text SHiTagHtm

//////////////////////////////////////////////////////////////////////////////
Text SHiTagHtm = "<span class='CodTag'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para el inicio de una etiqueta.", SHiTagHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiCodEmb

//////////////////////////////////////////////////////////////////////////////
Text SHiCodEmb = "<span class='CodEmb'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para el codigo embebido.", SHiCodEmb);
//////////////////////////////////////////////////////////////////////////////

Text SHiEndHtm

//////////////////////////////////////////////////////////////////////////////
Text SHiEndHtm = "</span>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Cierre de un span.", SHiEndHtm);
//////////////////////////////////////////////////////////////////////////////

Funciones

Set SHiRemStrCodSet()

//////////////////////////////////////////////////////////////////////////////
Set SHiRemStrCodSet(Text txtInp, // Texto de entrada
                    Text remOpn, // Apertura de los comentarios de bloque
                    Text remCls, // Cierre de los comentarios de bloque
                    Text remLin, // Apertura de los comentarios de linea
                    Text strQu1, // Delimitador de textos alto nivel (ie "")
                    Text strQu2) // Delimitacor de textos bajo nivel (ie '')
//////////////////////////////////////////////////////////////////////////////
{
  Set  setBlk = If(remOpn == "", [[txtInp]], // No hay comentarios de bloque
                   TxtSplitBy2Tag(txtInp, remOpn, remCls)); // Comenta bloque

  Set  setQu1 = BinGroup("<<", EvalSet(setBlk, Set(Text txtCod)
  {
    If(TxtBeginStrict(txtCod, remOpn), [[txtCod]], // Era comentario de bloque
       TxtSplitBy1Tag(txtCod, strQu1))   // Romper por textos entrecomillados
  })); // De conjunto de conjuntos a conjunto lineal

  Set  setQu2 = If(strQu2 == "", setQu1, // Si no se emplea
  {
    BinGroup("<<", EvalSet(setQu1, Set(Text txtCod)
    {
      If(TxtBeginStrict(txtCod, remOpn), [[txtCod]], // Era comentario bloque
      If(TxtBeginStrict(txtCod, strQu1), [[txtCod]], // Quote alto nivel
         TxtSplitBy1Tag(txtCod, strQu2)))  // Romper textos y entrecomillados
    }))  // De conjunto de conjuntos a conjunto lineal
  });

  Set  setLin = If(remLin == "", setQu2, // Si no se emplea
  {
    BinGroup("<<", EvalSet(setQu2, Set(Text txtCod)
    {
      If(TxtBeginStrict(txtCod, remOpn), [[txtCod]], // Era comentario bloque
      If(TxtBeginStrict(txtCod, strQu1), [[txtCod]], // Quote alto nivel
      If(TxtBeginStrict(txtCod, strQu2), [[txtCod]], // Quote bajo nivel
         TxtSplitBy2Tag(txtCod, remLin, "\n"))))  // Romper comentarios linea
    })) // De conjunto de conjuntos a conjunto lineal
  });

  setLin
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un conjunto de textos resultado de separar los comentarios de bloque,
los comentarios de linea, los textos entrecomillados y el codigo.",
SHiRemStrCodSet);
//////////////////////////////////////////////////////////////////////////////

Text SHiRemStrCodHtm()

//////////////////////////////////////////////////////////////////////////////
Text SHiRemStrCodHtm(Text txtInp, // Texto de entrada
                     Text remOpn, // Apertura de los comentarios de bloque
                     Text remCls, // Cierre de los comentarios de bloque
                     Text remLin, // Apertura de los comentarios de linea
                     Text strQu1, // Delimitador de textos alto nivel (ie "")
                     Text strQu2) // Delimitacor de textos bajo nivel (ie '')
//////////////////////////////////////////////////////////////////////////////
{
  Set  setBlk = SHiRemStrCodSet(txtInp,remOpn,remCls,remLin,strQu1,strQu2);
  Set  setHtm = EvalSet(setBlk, Text(Text txtCod)
  {
    Case(
      TxtBeginStrict(txtCod, remOpn),
        SHiRemHtm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, strQu1),
        SHiQu1Htm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, strQu2),
        SHiQu2Htm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, remLin), 
        SHiRemHtm + Replace(HtmAsc2Xml(txtCod), "\n", SHiEndHtm+"\n"),

      TRUE,
        HtmAsc2Xml(txtCod))
  });
  SetSum(setHtm)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de
entrada txtImp.
El ReplaceTable() para transformar < y > no se puede aplicar desde el
principio porque a la hora de realzar codigo Html son los tags delimitadores
mas importantes, por eso hay que hacerlo trozo a trozo de codigo.",
SHiRemStrCodHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiPre(Text txtInp) // Texto de entrada
//////////////////////////////////////////////////////////////////////////////
{ "\n<pre><code>" + txtInp + "</code></pre>\n" };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de enmarcar txtImp entre las etiquetas
<pre><code> y </code></pre>.",
SHiPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiRemStrCodPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiRemStrCodPre(Text txtInp, // Texto de entrada
                     Text remOpn, // Apertura de los comentarios de bloque
                     Text remCls, // Cierre de los comentarios de bloque
                     Text remLin, // Apertura de los comentarios de linea
                     Text strQu1, // Delimitador de textos alto nivel (ie "")
                     Text strQu2) // Delimitacor de textos bajo nivel (ie '')
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiRemStrCodHtm(txtInp,remOpn,remCls,remLin,strQu1,strQu2)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de
txtImp enmarcado todo el resultado entre las etiquetas <pre><code> y 
</code></pre>.",
SHiRemStrCodPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiTolHtm()

//////////////////////////////////////////////////////////////////////////////
Text SHiTolHtm(Text codInp) // Codigo de entrada Tol
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodHtm(codInp, SHiRemOpn, SHiRemCls, "//", SHiQuo, "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Tol de entrada que recibe como parametro pero sin enmarcar entre las
etiquetas <pre><code> y </code></pre>.",
SHiTolHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiTolPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiTolPre(Text codInp) // Codigo de entrada Tol
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiTolHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Tol de entrada que recibe como parametro.",
SHiTolPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiJscHtm()

//////////////////////////////////////////////////////////////////////////////
Text SHiJscHtm(Text codInp) // Codigo de entrada Javascript
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodHtm(codInp, SHiRemOpn, SHiRemCls, "//", SHiQuo, "'") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Javascript de entrada que recibe como parametro pero sin enmarcar entre las
etiquetas <pre><code> y </code></pre>.",
SHiJscHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiJscPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiJscPre(Text codInp) // Codigo de entrada Javascript
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiJscHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Javascript de entrada que recibe como parametro.",
SHiJscPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiSqlPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiSqlPre(Text codInp) // Codigo de entrada Sql
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, "", "", "--", "'", "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Sql de entrada que recibe como parametro.",
SHiSqlPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiGplPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiGplPre(Text codInp) // Codigo de entrada Gnuplot
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, "", "", "#", "'", "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Gnuplot de entrada que recibe como parametro.",
SHiGplPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiCmdPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiCmdPre(Text codInp) // Codigo de entrada de mandatos Dos
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, "", "", "::", SHiQuo, "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
de mandatos para el Cmd de Dos que recibe como parametro.",
SHiCmdPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiCssPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiCssPre(Text codInp) // Codigo de entrada Cascade style sheet
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, SHiRemOpn, SHiRemCls, "", SHiQuo, "'") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Cascade style sheet que recibe como parametro.",
SHiCssPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiXmlHtm()

//////////////////////////////////////////////////////////////////////////////
Text SHiXmlHtm(Text codInp) // Codigo Xml
//////////////////////////////////////////////////////////////////////////////
{
  Set  setBlk = TxtSplitBy2Tag(codInp, "<!--", "-->"); // Romper x comments

  Set  setTag = BinGroup("<<", EvalSet(setBlk, Set(Text txtCod)
  {
    If(TxtBeginStrict(txtCod, "<!--"), [[txtCod]], // Era comentario
       TxtSplitBy2Fast(txtCod, "<", ">")) // Romper x etiquetas, no recursivo
  })); // De conjunto de conjuntos a conjunto lineal

  Set  setHtm = EvalSet(setTag, Text(Text txtCod)
  {
    Case(
      TxtBeginStrict(txtCod, "<!--"), // Comentario
        SHiRemHtm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      Or(TxtBeginStrict(txtCod, "<"), TxtEndStrict(Compact(txtCod), ">")),
        SHiTagHtm + SHiJscHtm(txtCod) + SHiEndHtm, // Etiqueta 

      TRUE,
        HtmAsc2Xml(txtCod))
  });
  SetSum(setHtm)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Xml que recibe como parametro pero sin enmarcar en las etiquetas
<pre><code> y </code></pre>
Emplea la version no recursiva TxtSplitBy2Fast(), aunque menos robusta que
TxtSplitBy2Tag(), para evitar caidas en fichero Xml de cierta longitud.",
SHiXmlHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiXmlPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiXmlPre(Text codInp) // Codigo Xml
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiXmlHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Xml que recibe como parametro.",
SHiXmlPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiEmbHtm()

//////////////////////////////////////////////////////////////////////////////
Text SHiEmbHtm(Text codInp) // Codigo Html con Javscript y Tol embebido
//////////////////////////////////////////////////////////////////////////////
{
  Set  setTol = TxtSplitBy2Tag(codInp, "<"+"{", "}"+">"); // Tol embebido

  Set  setJsc = BinGroup("<<", EvalSet(setTol, Set(Text txtCod)
  {
    If(TxtBeginStrict(txtCod, "<"+"{"), [[txtCod]], // Es Tol embebido
       TxtSplitBy2Tag(txtCod, "<script", "</script>"))   // Javascript
  })); // De conjunto de conjuntos a conjunto lineal


  Set  setHtm = EvalSet(setJsc, Text(Text txtCod)
  {
    Case(
      TxtBeginStrict(txtCod, "<"+"{"), // Tol embebido
        SHiCodEmb + SHiTolHtm(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, "<script"), // Javascript embebido
        SHiCodEmb + SHiJscHtm(txtCod) + SHiEndHtm,

      TRUE, // Resto de codigo con tags Xml / Html
        SHiXmlHtm(txtCod))
  });
  SetSum(setHtm)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Html basico que recibe como parametro pero sin enmarcar en las etiquetas
<pre><code> y </code></pre>.",
SHiEmbHtm);
//////////////////////////////////////////////////////////////////////////////

Text SHiEmbPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiEmbPre(Text codInp) // // Codigo Html con Javscript y Tol embebido
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiEmbHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Xml que recibe como parametro.",
SHiEmbPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiAscPre()

//////////////////////////////////////////////////////////////////////////////
Text SHiAscPre(Text codInp) // // Fichero Ascii
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(HtmAsc2Xml(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html del contenido Ascii que recibe como parametro.
Unicamente cambia los caracteres especiales con HtmAsc2Xml() y pone las
etiquetas <pre><code> y </code></pre>",
SHiAscPre);
//////////////////////////////////////////////////////////////////////////////

Text SHiCompact()

//////////////////////////////////////////////////////////////////////////////
Text SHiCompact(Text codHtm) // // Codigo Html ya autogenerado
//////////////////////////////////////////////////////////////////////////////
{
  ReplaceTable(codHtm, [[ [["<pre><code> ",    "<pre><code>"]],
                          [["<pre><code>\n",   "<pre><code>"]],
                          [[" </code></pre>",  "</code></pre>"]],
                          [["\n</code></pre>", "</code></pre>"]] ]])
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de eliminar las lineas en blanco antes y
despues del <pre><code> y </code></pre>.",
SHiCompact);
//////////////////////////////////////////////////////////////////////////////

Text SHiPreCode()

//////////////////////////////////////////////////////////////////////////////
Text SHiPreCode(Text filPth, // Nombre o ruta del fichero para la extension
                Text filTxt) // Codigo ya leido del fichero, todo o parte
//////////////////////////////////////////////////////////////////////////////
{
  Text filExt = ToLower(GetFileExtension(filPth));
  Text shiCod = Case(
    filExt == "tol",  SHiTolPre(filTxt), // Time Oriented Language
    filExt == "bat",  SHiCmdPre(filTxt), // Command bat
    filExt == "css",  SHiCssPre(filTxt), // Cascade style sheet
    filExt == "gpl",  SHiGplPre(filTxt), // Gnuplot
    filExt == "js",   SHiJscPre(filTxt), // Javascript
    filExt == "sql",  SHiSqlPre(filTxt), // Sql
    filExt == "xml",  SHiXmlPre(filTxt), // Xml
    filExt == "htm",  SHiEmbPre(filTxt), // Htm
    filExt == "html", SHiEmbPre(filTxt), // Html
    filExt == "age",  SHiEmbPre(filTxt), // Html
    TRUE,             SHiAscPre(filTxt)  // Ascii, limpiar y con pre y code
  );
  SHiCompact(shiCod)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
filTxt que se la leido, total o parcialmente, de fichero filPth.
Recibe el nombre o ruta del fichero para saber su extension y de ahi el
lenguaje de programacion.",
SHiPreCode);
//////////////////////////////////////////////////////////////////////////////

Text SHiPreFile()

//////////////////////////////////////////////////////////////////////////////
Text SHiPreFile(Text filPth) // Ruta del fichero de entrada
//////////////////////////////////////////////////////////////////////////////
{ SHiPreCode(filPth, ReadFile(filPth)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada a todo el
codigo del fichero que recibe como parametro.",
SHiPreFile);
//////////////////////////////////////////////////////////////////////////////

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : shi.tol
// AUTHOR  : http://www.asolver.com
// PURPOSE : Funciones de sintaxis realzada (syntax highlight).
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// CONSTANTS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Text SHiRemOpn = "/"+"*";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Inicio tipico de un comentario de bloque.", SHiRemOpn);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiRemCls = "*"+"/";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Cierre tipico de un comentario de bloque.", SHiRemCls);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiQuo = Char(34);
//////////////////////////////////////////////////////////////////////////////
PutDescription("Comillas dobles.", SHiQuo);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiRemHtm = "<span class='CodRem'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para un comentario.", SHiRemHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiQu1Htm = "<span class='CodTxt'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para un texto de primer nivel.", SHiQu1Htm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiQu2Htm = "<span class='CodSub'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para un subtexto de segundo nivel.", SHiQu2Htm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiTagHtm = "<span class='CodTag'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para el inicio de una etiqueta.", SHiTagHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiCodEmb = "<span class='CodEmb'>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Span para el codigo embebido.", SHiCodEmb);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiEndHtm = "</span>";
//////////////////////////////////////////////////////////////////////////////
PutDescription("Cierre de un span.", SHiEndHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Set SHiRemStrCodSet(Text txtInp, // Texto de entrada
                    Text remOpn, // Apertura de los comentarios de bloque
                    Text remCls, // Cierre de los comentarios de bloque
                    Text remLin, // Apertura de los comentarios de linea
                    Text strQu1, // Delimitador de textos alto nivel (ie "")
                    Text strQu2) // Delimitacor de textos bajo nivel (ie '')
//////////////////////////////////////////////////////////////////////////////
{
  Set  setBlk = If(remOpn == "", [[txtInp]], // No hay comentarios de bloque
                   TxtSplitBy2Tag(txtInp, remOpn, remCls)); // Comenta bloque

  Set  setQu1 = BinGroup("<<", EvalSet(setBlk, Set(Text txtCod)
  {
    If(TxtBeginStrict(txtCod, remOpn), [[txtCod]], // Era comentario de bloque
       TxtSplitBy1Tag(txtCod, strQu1))   // Romper por textos entrecomillados
  })); // De conjunto de conjuntos a conjunto lineal

  Set  setQu2 = If(strQu2 == "", setQu1, // Si no se emplea
  {
    BinGroup("<<", EvalSet(setQu1, Set(Text txtCod)
    {
      If(TxtBeginStrict(txtCod, remOpn), [[txtCod]], // Era comentario bloque
      If(TxtBeginStrict(txtCod, strQu1), [[txtCod]], // Quote alto nivel
         TxtSplitBy1Tag(txtCod, strQu2)))  // Romper textos y entrecomillados
    }))  // De conjunto de conjuntos a conjunto lineal
  });

  Set  setLin = If(remLin == "", setQu2, // Si no se emplea
  {
    BinGroup("<<", EvalSet(setQu2, Set(Text txtCod)
    {
      If(TxtBeginStrict(txtCod, remOpn), [[txtCod]], // Era comentario bloque
      If(TxtBeginStrict(txtCod, strQu1), [[txtCod]], // Quote alto nivel
      If(TxtBeginStrict(txtCod, strQu2), [[txtCod]], // Quote bajo nivel
         TxtSplitBy2Tag(txtCod, remLin, "\n"))))  // Romper comentarios linea
    })) // De conjunto de conjuntos a conjunto lineal
  });

  setLin
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna un conjunto de textos resultado de separar los comentarios de bloque,
los comentarios de linea, los textos entrecomillados y el codigo.",
SHiRemStrCodSet);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiRemStrCodHtm(Text txtInp, // Texto de entrada
                     Text remOpn, // Apertura de los comentarios de bloque
                     Text remCls, // Cierre de los comentarios de bloque
                     Text remLin, // Apertura de los comentarios de linea
                     Text strQu1, // Delimitador de textos alto nivel (ie "")
                     Text strQu2) // Delimitacor de textos bajo nivel (ie '')
//////////////////////////////////////////////////////////////////////////////
{
  Set  setBlk = SHiRemStrCodSet(txtInp,remOpn,remCls,remLin,strQu1,strQu2);
  Set  setHtm = EvalSet(setBlk, Text(Text txtCod)
  {
    Case(
      TxtBeginStrict(txtCod, remOpn),
        SHiRemHtm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, strQu1),
        SHiQu1Htm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, strQu2),
        SHiQu2Htm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, remLin), 
        SHiRemHtm + Replace(HtmAsc2Xml(txtCod), "\n", SHiEndHtm+"\n"),

      TRUE,
        HtmAsc2Xml(txtCod))
  });
  SetSum(setHtm)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de
entrada txtImp.
El ReplaceTable() para transformar < y > no se puede aplicar desde el
principio porque a la hora de realzar codigo Html son los tags delimitadores
mas importantes, por eso hay que hacerlo trozo a trozo de codigo.",
SHiRemStrCodHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiPre(Text txtInp) // Texto de entrada
//////////////////////////////////////////////////////////////////////////////
{ "\n<pre><code>" + txtInp + "</code></pre>\n" };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de enmarcar txtImp entre las etiquetas
<pre><code> y </code></pre>.",
SHiPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiRemStrCodPre(Text txtInp, // Texto de entrada
                     Text remOpn, // Apertura de los comentarios de bloque
                     Text remCls, // Cierre de los comentarios de bloque
                     Text remLin, // Apertura de los comentarios de linea
                     Text strQu1, // Delimitador de textos alto nivel (ie "")
                     Text strQu2) // Delimitacor de textos bajo nivel (ie '')
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiRemStrCodHtm(txtInp,remOpn,remCls,remLin,strQu1,strQu2)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo de
txtImp enmarcado todo el resultado entre las etiquetas <pre><code> y 
</code></pre>.",
SHiRemStrCodPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiTolHtm(Text codInp) // Codigo de entrada Tol
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodHtm(codInp, SHiRemOpn, SHiRemCls, "//", SHiQuo, "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Tol de entrada que recibe como parametro pero sin enmarcar entre las
etiquetas <pre><code> y </code></pre>.",
SHiTolHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiTolPre(Text codInp) // Codigo de entrada Tol
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiTolHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Tol de entrada que recibe como parametro.",
SHiTolPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiJscHtm(Text codInp) // Codigo de entrada Javascript
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodHtm(codInp, SHiRemOpn, SHiRemCls, "//", SHiQuo, "'") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Javascript de entrada que recibe como parametro pero sin enmarcar entre las
etiquetas <pre><code> y </code></pre>.",
SHiJscHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiJscPre(Text codInp) // Codigo de entrada Javascript
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiJscHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Javascript de entrada que recibe como parametro.",
SHiJscPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiSqlPre(Text codInp) // Codigo de entrada Sql
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, "", "", "--", "'", "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Sql de entrada que recibe como parametro.",
SHiSqlPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiGplPre(Text codInp) // Codigo de entrada Gnuplot
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, "", "", "#", "'", "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Gnuplot de entrada que recibe como parametro.",
SHiGplPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiCmdPre(Text codInp) // Codigo de entrada de mandatos Dos
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, "", "", "::", SHiQuo, "") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
de mandatos para el Cmd de Dos que recibe como parametro.",
SHiCmdPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiCssPre(Text codInp) // Codigo de entrada Cascade style sheet
//////////////////////////////////////////////////////////////////////////////
{ SHiRemStrCodPre(codInp, SHiRemOpn, SHiRemCls, "", SHiQuo, "'") };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Cascade style sheet que recibe como parametro.",
SHiCssPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiXmlHtm(Text codInp) // Codigo Xml
//////////////////////////////////////////////////////////////////////////////
{
  Set  setBlk = TxtSplitBy2Tag(codInp, "<!--", "-->"); // Romper x comments

  Set  setTag = BinGroup("<<", EvalSet(setBlk, Set(Text txtCod)
  {
    If(TxtBeginStrict(txtCod, "<!--"), [[txtCod]], // Era comentario
       TxtSplitBy2Fast(txtCod, "<", ">")) // Romper x etiquetas, no recursivo
  })); // De conjunto de conjuntos a conjunto lineal

  Set  setHtm = EvalSet(setTag, Text(Text txtCod)
  {
    Case(
      TxtBeginStrict(txtCod, "<!--"), // Comentario
        SHiRemHtm + HtmAsc2Xml(txtCod) + SHiEndHtm,

      Or(TxtBeginStrict(txtCod, "<"), TxtEndStrict(Compact(txtCod), ">")),
        SHiTagHtm + SHiJscHtm(txtCod) + SHiEndHtm, // Etiqueta 

      TRUE,
        HtmAsc2Xml(txtCod))
  });
  SetSum(setHtm)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Xml que recibe como parametro pero sin enmarcar en las etiquetas
<pre><code> y </code></pre>
Emplea la version no recursiva TxtSplitBy2Fast(), aunque menos robusta que
TxtSplitBy2Tag(), para evitar caidas en fichero Xml de cierta longitud.",
SHiXmlHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiXmlPre(Text codInp) // Codigo Xml
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiXmlHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Xml que recibe como parametro.",
SHiXmlPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiEmbHtm(Text codInp) // Codigo Html con Javscript y Tol embebido
//////////////////////////////////////////////////////////////////////////////
{
  Set  setTol = TxtSplitBy2Tag(codInp, "<"+"{", "}"+">"); // Tol embebido

  Set  setJsc = BinGroup("<<", EvalSet(setTol, Set(Text txtCod)
  {
    If(TxtBeginStrict(txtCod, "<"+"{"), [[txtCod]], // Es Tol embebido
       TxtSplitBy2Tag(txtCod, "<script", "</script>"))   // Javascript
  })); // De conjunto de conjuntos a conjunto lineal


  Set  setHtm = EvalSet(setJsc, Text(Text txtCod)
  {
    Case(
      TxtBeginStrict(txtCod, "<"+"{"), // Tol embebido
        SHiCodEmb + SHiTolHtm(txtCod) + SHiEndHtm,

      TxtBeginStrict(txtCod, "<script"), // Javascript embebido
        SHiCodEmb + SHiJscHtm(txtCod) + SHiEndHtm,

      TRUE, // Resto de codigo con tags Xml / Html
        SHiXmlHtm(txtCod))
  });
  SetSum(setHtm)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Html basico que recibe como parametro pero sin enmarcar en las etiquetas
<pre><code> y </code></pre>.",
SHiEmbHtm);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiEmbPre(Text codInp) // // Codigo Html con Javscript y Tol embebido
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(SHiEmbHtm(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
Xml que recibe como parametro.",
SHiEmbPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiAscPre(Text codInp) // // Fichero Ascii
//////////////////////////////////////////////////////////////////////////////
{ SHiPre(HtmAsc2Xml(codInp)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html del contenido Ascii que recibe como parametro.
Unicamente cambia los caracteres especiales con HtmAsc2Xml() y pone las
etiquetas <pre><code> y </code></pre>",
SHiAscPre);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiCompact(Text codHtm) // // Codigo Html ya autogenerado
//////////////////////////////////////////////////////////////////////////////
{
  ReplaceTable(codHtm, [[ [["<pre><code> ",    "<pre><code>"]],
                          [["<pre><code>\n",   "<pre><code>"]],
                          [[" </code></pre>",  "</code></pre>"]],
                          [["\n</code></pre>", "</code></pre>"]] ]])
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de eliminar las lineas en blanco antes y
despues del <pre><code> y </code></pre>.",
SHiCompact);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiPreCode(Text filPth, // Nombre o ruta del fichero para la extension
                Text filTxt) // Codigo ya leido del fichero, todo o parte
//////////////////////////////////////////////////////////////////////////////
{
  Text filExt = ToLower(GetFileExtension(filPth));
  Text shiCod = Case(
    filExt == "tol",  SHiTolPre(filTxt), // Time Oriented Language
    filExt == "bat",  SHiCmdPre(filTxt), // Command bat
    filExt == "css",  SHiCssPre(filTxt), // Cascade style sheet
    filExt == "gpl",  SHiGplPre(filTxt), // Gnuplot
    filExt == "js",   SHiJscPre(filTxt), // Javascript
    filExt == "sql",  SHiSqlPre(filTxt), // Sql
    filExt == "xml",  SHiXmlPre(filTxt), // Xml
    filExt == "htm",  SHiEmbPre(filTxt), // Htm
    filExt == "html", SHiEmbPre(filTxt), // Html
    filExt == "age",  SHiEmbPre(filTxt), // Html
    TRUE,             SHiAscPre(filTxt)  // Ascii, limpiar y con pre y code
  );
  SHiCompact(shiCod)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada al codigo
filTxt que se la leido, total o parcialmente, de fichero filPth.
Recibe el nombre o ruta del fichero para saber su extension y de ahi el
lenguaje de programacion.",
SHiPreCode);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Text SHiPreFile(Text filPth) // Ruta del fichero de entrada
//////////////////////////////////////////////////////////////////////////////
{ SHiPreCode(filPth, ReadFile(filPth)) };
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Retorna el codigo Html resultado de aplicar sintaxis realzada a todo el
codigo del fichero que recibe como parametro.",
SHiPreFile);
//////////////////////////////////////////////////////////////////////////////

Árbol de ficheros

SHi.SyntaxHighlight funciones de sintaxis realzada de codigo

  • make.tol programa de test de las funciones de sintaxis realzada en Tol
  • make.bat mandato de ejecucion del programa de test de realce de sintaxis
  • tol directorios que contienen fichero de codigo fuente Tol
    • cmm funciones comunes de manejo y generacion de textos y Html
      • txt.tol funciones para el manejo y la transformacion de textos
      • htm.tol funciones para generar codigo fuente en lenguaje Html
    • app funciones especificas de aplicacion de sintaxis realzada
      • shi.tol sintaxis realzada de código fuente en Tol, Xml, Html, etc.
    • inc.tol fichero con ordenes de inclusion de otros ficheros Tol
  • code.inp directorio con ficheros de codigo en diversos lenguajes para pruebas
    • arr.js codigo fuente en lenguaje Javascript
    • cmm.css ejemplo de Css, Cascading Style Sheets
    • edi.sql lenguaje Sql, Structured Query Language
    • gif.gpl fichero de especificacion de mandatos Gnuplot
    • gpl.tol ejemplo de Tol invocando a Gnuplot
    • map.xml ejemplo de codigo Xml, eXtensible Markup Language
    • pdf.bat ficheros de mandatos de Windows de Microsoft
    • see.htm lenguaje Html, HyperText Markup Language
    • sql.tol ejemplo de lenguaje Tol con codigo Sql embebido
  • code.out directorio de resultados con el codigo de entrada realzado
  • resultado.html codigos fuente realzado en varios lenguajes de programacion
  • shi_syntaxhighlight.pdf documento de funciones de la libreria de realce de sintaxis

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol