elemes/compiler/__init__.py

62 lines
1.8 KiB
Python

"""
Compiler Factory for managing different language compilers
"""
import os
from .c_compiler import CCompiler
from .python_compiler import PythonCompiler
class CompilerFactory:
"""
Factory class to create and manage different language compilers
"""
def __init__(self):
self.compilers = {
'c': CCompiler(),
'python': PythonCompiler()
}
# Get default language from environment variable
default_language = os.environ.get('DEFAULT_PROGRAMMING_LANGUAGE', 'c').lower()
self.default_compiler = self.compilers.get(default_language, self.compilers['c'])
def get_compiler(self, language=None):
"""
Get a compiler instance for the specified language
:param language: Language identifier ('c', 'python', etc.)
:return: Compiler instance
"""
if language is None:
return self.default_compiler
language = language.lower()
if language in self.compilers:
return self.compilers[language]
else:
# Return default compiler if requested language is not available
return self.default_compiler
def get_available_languages(self):
"""
Get list of available programming languages
:return: List of available language identifiers
"""
return list(self.compilers.keys())
def get_language_display_name(self, language):
"""
Get display name for a language
:param language: Language identifier
:return: Display name for the language
"""
display_names = {
'c': 'C',
'python': 'Python'
}
return display_names.get(language, language.capitalize())
# Global compiler factory instance
compiler_factory = CompilerFactory()