|
import gradio as gr |
|
import inference |
|
|
|
def translate_fortran_to_rust(fortran_code, fortran_explain): |
|
"""Translate Fortran code to Rust using the provided model.""" |
|
|
|
rust_code = inference.main(USER_INPUT_CODE = fortran_code, USER_INPUT_EXPLANATION = fortran_explain, MODEL_PATH = "lora_model") |
|
return rust_code |
|
|
|
default_codes = """ |
|
program sum_of_numbers\n |
|
implicit none\n |
|
integer :: n, i, sum\n\n |
|
! Initialize variables\n |
|
sum = 0\n\n |
|
! Get user input\n |
|
print *, \Enter a positive integer:\\n |
|
read *, n\n\n |
|
! Calculate the sum of numbers from 1 to n\n |
|
do i = 1, n\n |
|
sum = sum + i\n |
|
end do\n\n |
|
! Print the result\n |
|
print *, \The sum of numbers from 1 to\, n, \is\, sum\n |
|
end program sum_of_numbers |
|
""" |
|
|
|
default_explanation =""" |
|
The provided Fortran code snippet is a program that calculates the sum of integers from 1 to n, where n is provided by the user. |
|
It uses a simple procedural approach, including variable declarations, input handling, and a loop for the summation.\n\n |
|
The functionality of the program is explained in detail in the elaboration. The program starts by initializing variables and prompting the user for input. |
|
It then calculates the sum using a do loop, iterating from 1 to n, and accumulating the result in a variable. Finally, it prints the computed sum to the console.\n\n |
|
This program demonstrates a straightforward application of Fortran's capabilities for handling loops and basic arithmetic operations. |
|
It is a clear example of how Fortran can be used to solve mathematical problems involving user interaction and iterative computations. |
|
""" |
|
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
fn=translate_fortran_to_rust, |
|
inputs=[ |
|
gr.Textbox( |
|
lines=6, |
|
value="", |
|
placeholder="Enter Fortran code here...", |
|
label="Fortran Code" |
|
), |
|
gr.Textbox( |
|
lines=6, |
|
value="", |
|
placeholder="Enter translation explanation here...", |
|
label="Fortran Code Explanation" |
|
) |
|
], |
|
outputs=gr.Textbox( |
|
lines=6, |
|
label="Rust Code" |
|
), |
|
title="Fortran to Rust Code Translator", |
|
description=( |
|
"This tool translates Fortran code to Rust using a language model.\n\n" |
|
"How to use:\n" |
|
"1. Enter your Fortran code in the first text box\n" |
|
"2. Add an explanation of the code in the second text box\n" |
|
"3. The translated Rust code will appear in the output box\n\n" |
|
"Note: The default model is a Llama-3.2-3B-Instruct" |
|
), |
|
examples=[ |
|
[default_codes, default_explanation], |
|
] |
|
) |
|
|
|
iface.launch() |
|
|