Grupo
Manejo de archivos en C#
Objectivo
1. El programa acepta un archivo fuente de C# como entrada desde la línea de comandos.
2. A continuación, lee el contenido del archivo de C#, lo procesa línea por línea y aplica las transformaciones necesarias (por ejemplo, cambiando Main() a main(String[] args)).
3. El código transformado se guarda como un archivo fuente de Java, que puede compilarse y ejecutarse en un entorno Java.
4. El programa debe gestionar reemplazos simples, como cambios de tipo y método, y puede ampliarse con mejoras adicionales.
Crear un traductor básico de C# a Java. Debe aceptar un archivo fuente de C# y crear un archivo fuente de Java equivalente. Recibirá el nombre del archivo en la línea de comando, y debe traducir al menos: "Main()" en "main( String[] args )" "string" en "String" "bool" en "boolean" "Console.WriteLine" en "System.out.println" " : " en " extends " si está en la misma línea que la palabra "class" (y cualquier otra mejora que se le ocurra, como el manejo de cadenas o la conversión de un ReadLine en un bloque try-catch).
Ejemplo de ejercicio en C#
Mostrar código C#
using System;
using System.IO;
using System.Text.RegularExpressions;
class CSharpToJavaTranslator
{
// Method to translate C# code to Java code
public static void Translate(string inputFile, string outputFile)
{
// Read the C# source code
string[] lines = File.ReadAllLines(inputFile);
// Open the output file for writing the translated Java code
using (StreamWriter writer = new StreamWriter(outputFile))
{
foreach (string line in lines)
{
// Translate the main method
string translatedLine = line;
translatedLine = translatedLine.Replace("Main()", "main(String[] args)");
// Translate C# types to Java types
translatedLine = translatedLine.Replace("string", "String");
translatedLine = translatedLine.Replace("bool", "boolean");
// Translate Console.WriteLine to System.out.println
translatedLine = translatedLine.Replace("Console.WriteLine", "System.out.println");
// Translate C# class declaration to Java class declaration with "extends"
if (translatedLine.Contains("class") && translatedLine.Contains(":"))
{
translatedLine = translatedLine.Replace(" : ", " extends ");
}
// Further improvements can be made here (e.g., converting ReadLine to try-catch)
// Write the translated line to the output file
writer.WriteLine(translatedLine);
}
}
Console.WriteLine($"Translation completed. Java file saved as {outputFile}");
}
}
class Program
{
static void Main(string[] args)
{
// Check if the file name was provided as a command-line argument
if (args.Length != 1)
{
Console.WriteLine("Usage: CSharpToJavaTranslator ");
return;
}
// Get the input C# file name
string inputFile = args[0];
// Define the output Java file name (it will append .java extension)
string outputFile = Path.ChangeExtension(inputFile, ".java");
// Call the translation method
CSharpToJavaTranslator.Translate(inputFile, outputFile);
}
}
Output
// If the input C# file (example.cs) contains:
using System;
class Program : BaseClass
{
static void Main()
{
string name = "John Doe";
bool isActive = true;
Console.WriteLine(name);
}
}
//The translated Java file (example.java) will contain:
import java.io.*;
class Program extends BaseClass
{
public static void main(String[] args)
{
String name = "John Doe";
boolean isActive = true;
System.out.println(name);
}
}
Código de ejemplo copiado
Comparte este ejercicio de C#