Traductor de Pascal a C# - Ejercicio de Programacion C# Sharp

Este ejercicio en C# consiste en crear un traductor básico de Pascal a C#. El programa debe aceptar código escrito en Pascal y convertirlo en un código equivalente en C#. El ejercicio comienza leyendo un archivo de texto que contiene el código en Pascal, cuyo nombre debe ser proporcionado por el usuario ya sea desde la línea de comandos o de forma interactiva. Luego, el contenido del archivo se debe volcar a otro archivo de texto con la misma estructura, pero con la extensión ".cs" en lugar de ".pas".

A continuación, el traductor debe realizar varias transformaciones clave para convertir el código de Pascal a C#. Se deben reemplazar ciertas palabras y estructuras, como "WriteLn" por "Console.WriteLine", el operador " = " por "==", y el símbolo " := " por "=", entre otros. Además, se debe realizar una conversión de "begin" por "{", y "end;" y "end." por "}", para que el código siga la sintaxis adecuada de C#.

En este ejercicio, también se reemplazarán ciertas estructuras de Pascal como "program x;" por "class x {" seguido de "Main", y "readLn(x)" por "x = Convert.ToInt32(Console.ReadLine())". Asimismo, el tipo "var" debe ser eliminado y las declaraciones de tipo, como "x: integer", deben convertirse a "int x". Finalmente, se debe dar un formato adecuado al bucle "for". El reto principal de este ejercicio es crear un traductor que pueda generar un código en C# compilable a partir de código Pascal.

 Categoría

Administración de Archivos

 Ejercicio

Traductor De Pascal A C#

 Objectivo

Cree un traductor básico de Pascal a C#. Aceptará programas como:

programa de ejemplo;

Var
i: entero;
máx.: entero;

empezar
writeLn("¿Cuántas veces?");
readLn(máx.);
para i := 1 a max do
writeLn("Hola");
fin.

Los pasos que debes seguir son:
Lee de principio a fin un archivo de texto, cuyo nombre será introducido por el usuario en línea de comandos o de forma interactiva: hasta 2 puntos.

Volcar el contenido a otro archivo de texto, cuyo nombre será el mismo, pero con la extensión ".cs" en lugar de ".pas": hasta 4 puntos.

Reemplace "WriteLn" por "Console.WriteLine", " = "con "==", " := " con "=", comillas simples con comillas dobles, "begin" con "{" y "end;", "end.", "end" (en ese orden) con "}", : hasta 6 puntos.

Reemplace "programa x;" por "clase x {" seguido de "Principal", reemplace "readln(x)" por "x=Convert.ToInt32(Console.RadLine())" ("x" debe ser cualquier otro identificador): hasta 8 puntos.

Elimine "var" y reemplace "x: integer" por "int x" (pero "x" debe ser cualquier otro identificador): hasta 9 puntos. Dar un formato adecuado a "para": hasta 10 puntos.

Cree una fuente de C# compilable a partir de la fuente Pascal anterior y otras similares: hasta 11 puntos.

 Ejemplo Ejercicio C#

 Copiar Código C#
// Importing necessary namespaces for basic operations
using System; // For basic Console operations
using System.IO; // For file handling
using System.Text.RegularExpressions; // For using regular expressions

public class PascalToCSharpTranslator
{
    // Method to translate Pascal code to C# code
    public static string TranslatePascalToCSharp(string pascalCode)
    {
        // Replacing "WriteLn" with "Console.WriteLine"
        pascalCode = pascalCode.Replace("WriteLn", "Console.WriteLine");

        // Replacing " = " with "=="
        pascalCode = pascalCode.Replace(" = ", "==");

        // Replacing " := " with "="
        pascalCode = pascalCode.Replace(" := ", "=");

        // Replacing single quotes with double quotes
        pascalCode = pascalCode.Replace("'", "\"");

        // Replacing "begin" with "{"
        pascalCode = pascalCode.Replace("begin", "{");

        // Replacing "end;" and "end." with "}"
        pascalCode = pascalCode.Replace("end;", "}");
        pascalCode = pascalCode.Replace("end.", "}");

        // Replacing "program x;" with "class x {"
        pascalCode = Regex.Replace(pascalCode, @"program\s+(\w+);", "class $1 {");

        // Replacing "readln(x)" with "x = Convert.ToInt32(Console.ReadLine())"
        pascalCode = Regex.Replace(pascalCode, @"readln\((\w+)\)", "$1 = Convert.ToInt32(Console.ReadLine())");

        // Replacing "var" and "x: integer" with "int x"
        pascalCode = Regex.Replace(pascalCode, @"var", "");
        pascalCode = Regex.Replace(pascalCode, @"(\w+):\s*integer", "int $1");

        // Formatting "for" loops to C# style
        pascalCode = Regex.Replace(pascalCode, @"for\s+(\w+)\s*:=\s*(\d+)\s+to\s*(\d+)\s*do", "for(int $1 = $2; $1 <= $3; $1++)");

        return pascalCode;
    }

    // Method to process the Pascal code file and generate the C# code file
    public static void ProcessFile(string inputFileName)
    {
        // Reading the Pascal code from the input file
        string pascalCode = File.ReadAllText(inputFileName);

        // Translating Pascal code to C#
        string cSharpCode = TranslatePascalToCSharp(pascalCode);

        // Creating the output file name by changing the extension from .pas to .cs
        string outputFileName = Path.ChangeExtension(inputFileName, ".cs");

        // Writing the translated C# code to the output file
        File.WriteAllText(outputFileName, cSharpCode);

        Console.WriteLine($"Translation complete. The C# code has been saved to {outputFileName}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Asking user for the Pascal file name
        Console.Write("Enter the Pascal file name (with .pas extension): ");
        string inputFileName = Console.ReadLine();

        // Calling the ProcessFile method to handle the translation
        PascalToCSharpTranslator.ProcessFile(inputFileName);
    }
}

 Salida

Enter the Pascal file name (with .pas extension): HelloWorld.pas
Translation complete. The C# code has been saved to HelloWorld.cs

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Administración de Archivos

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Convertir un archivo de texto en mayúsculas

    Este ejercicio en C# consiste en crear un programa que lea un archivo de texto y volque su contenido en otro archivo, realizando una transformación en el proceso. La ...

  •  Convertir cualquier archivo a mayúsculas

    Este ejercicio en C# consiste en crear un programa que lea un archivo de cualquier tipo y volque su contenido en otro archivo, aplicando una transformación en el proc...

  •  Conversor de archivos

    Este ejercicio en C# consiste en crear un programa que "invierte" un archivo. El programa debe tomar un archivo original y crear uno nuevo con el mismo nombre, pero c...

  •  Cifrador de archivos

    Este ejercicio en C# consiste en crear un programa que encripte un archivo de texto en otro archivo de texto. El programa debe ser capaz de leer el contenido de un ar...

  •  Contar palabras

    Este ejercicio en C# consiste en crear un programa que cuente la cantidad de palabras almacenadas en un archivo de texto. El programa debe leer el contenido de un arc...

  •  Ancho y alto BMP, BinaryReader

    Este ejercicio en C# consiste en crear un programa que muestre el ancho y la altura de un archivo BMP utilizando un BinaryReader. El programa debe leer el enca...