| from typing import Dict, List, Optional |
| import random |
|
|
| class CodeGenerator: |
| """A class to generate function code in multiple programming languages.""" |
| |
| |
| TEMPLATES: Dict[str, str] = { |
| "python": "def {func_name}({params}):\n {body}", |
| "javascript": "function {func_name}({params}) {{\n {body}\n}}", |
| "cpp": "{ret_type} {func_name}({params}) {{\n {body}\n}}", |
| "java": "public class Main {{\n public static {ret_type} {func_name}({params}) {{\n {body}\n }}\n}}", |
| "csharp": "public class Program {{\n public static {ret_type} {func_name}({params}) {{\n {body}\n }}\n}}" |
| } |
|
|
| |
| FUNCTION_NAMES: List[str] = ["calculate", "processData", "computeValue", "generateOutput"] |
| DEFAULT_PARAMS: Dict[str, str] = { |
| "python": "x: int, y: int", |
| "javascript": "x, y", |
| "cpp": "int x, int y", |
| "java": "int x, int y", |
| "csharp": "int x, int y" |
| } |
| RETURN_TYPES: Dict[str, str] = { |
| "cpp": "int", |
| "java": "int", |
| "csharp": "int", |
| "python": " -> int", |
| "javascript": "" |
| } |
| DEFAULT_BODY: str = "return x + y;" |
| |
| def __init__(self, seed: Optional[int] = None): |
| """Initialize generator with optional random seed.""" |
| if seed is not None: |
| random.seed(seed) |
|
|
| def get_supported_languages(self) -> List[str]: |
| """Return list of supported languages.""" |
| return list(self.TEMPLATES.keys()) |
|
|
| def generate_code( |
| self, |
| language: str, |
| func_name: Optional[str] = None, |
| params: Optional[str] = None, |
| body: Optional[str] = None, |
| ret_type: Optional[str] = None |
| ) -> Optional[str]: |
| """ |
| Generate code for the specified language with customizable components. |
| |
| Args: |
| language: Target programming language |
| func_name: Optional custom function name |
| params: Optional custom parameters |
| body: Optional custom function body |
| ret_type: Optional custom return type |
| |
| Returns: |
| Generated code string or None if language is unsupported |
| """ |
| if language not in self.TEMPLATES: |
| return None |
|
|
| |
| selected_func_name = func_name or random.choice(self.FUNCTION_NAMES) |
| selected_params = params or self.DEFAULT_PARAMS.get(language, "") |
| selected_body = self._normalize_body(body or self.DEFAULT_BODY, language) |
| selected_ret_type = ret_type or self.RETURN_TYPES.get(language, "") |
|
|
| try: |
| return self.TEMPLATES[language].format( |
| func_name=selected_func_name, |
| params=selected_params, |
| body=selected_body, |
| ret_type=selected_ret_type |
| ) |
| except KeyError as e: |
| raise ValueError(f"Missing template component: {str(e)}") |
| except Exception as e: |
| raise RuntimeError(f"Code generation failed: {str(e)}") |
|
|
| def _normalize_body(self, body: str, language: str) -> str: |
| """Normalize function body based on language requirements.""" |
| body = body.strip() |
| if language in {"cpp", "java", "csharp"} and not body.endswith(";"): |
| return body + ";" |
| if language == "python": |
| return body.replace(";", "") |
| return body |
|
|
| def main(): |
| """Demonstrate code generation for all supported languages.""" |
| generator = CodeGenerator(seed=42) |
| |
| print("Supported languages:", generator.get_supported_languages()) |
| print("\nGenerated code examples:") |
| |
| for lang in generator.get_supported_languages(): |
| code = generator.generate_code(lang) |
| print(f"\n{lang.upper()}:\n{code}") |
|
|
| if __name__ == "__main__": |
| main() |