ada-converter / src /agents /ada_parser_agent.py
syum-af's picture
wip
feac656
Raw
History Blame Contribute Delete
2.69 kB
"""
Ada Parser Agent - Uses LLM to parse Ada source code and extract syntactic elements.
"""
from smolagents import ToolCallingAgent
from loguru import logger
class AdaParserAgent:
"""Agent responsible for parsing Ada source code using LLM."""
def __init__(self, model):
self.model = model
self.agent = ToolCallingAgent(
tools=[],
model=model
)
def parse_code(self, ada_code: str) -> str:
"""
Parse Ada code using LLM and return markdown documentation.
Args:
ada_code: The Ada source code to parse
Returns:
Markdown string containing parsed Ada elements
"""
try:
logger.debug("Ada Parser Agent starting code analysis",
code_length=len(ada_code),
code_lines=ada_code.count('\n') + 1)
prompt = f"""
Analyze the following Ada source code and provide a detailed breakdown in markdown format.
Please structure your response with the following sections:
# Ada Code Analysis
## Overview
Brief description of what this Ada code does.
## Packages
List all packages found with their purpose.
## Types and Data Structures
- Record types
- Array types
- Enumeration types
- Other custom types
## Procedures and Functions
List all procedures and functions with their signatures and purpose.
## Variables and Constants
List important variables and constants.
## Key Algorithms and Logic
Describe the main algorithms and business logic.
## Dependencies
List any dependencies or imports.
Ada Code:
```ada
{ada_code}
```
"""
result = self.agent.run(prompt)
result_str = result if isinstance(result, str) else str(result)
logger.debug("Ada Parser Agent completed analysis",
result_length=len(result_str),
result_lines=result_str.count('\n') + 1)
return result_str
except Exception as e:
logger.error("Ada Parser Agent failed",
error=str(e),
exc_info=True)
return f"# Error\n\nFailed to parse Ada code: {str(e)}"