"""
Lucidia Code Analyzer Service
Multi-language code analysis, explanation, and solution generation
"""
import re
import time
from typing import List, Dict, Any, Optional, Tuple
from datetime import datetime
from models.code import (
ProgrammingLanguage, LanguageParadigm, DifficultyLevel, ProblemCategory,
CodeError, CodeMetrics, ExecutionStep, CodeAnalysisResponse,
SolutionApproach, CodeSolution, LanguageConfig,
)
class CodeAnalyzer:
"""
Multi-language code analyzer supporting 50+ programming languages.
Provides syntax checking, style analysis, execution tracing, and explanations.
"""
def __init__(self):
self.languages = self._load_language_configs()
self.syntax_patterns = self._load_syntax_patterns()
def _load_language_configs(self) -> Dict[str, LanguageConfig]:
"""Load configuration for all supported languages"""
return {
# ─────────────────────────────────────────────────────────────
# WEB & FRONTEND LANGUAGES
# ─────────────────────────────────────────────────────────────
"javascript": LanguageConfig(
name="javascript",
display_name="JavaScript",
file_extensions=[".js", ".mjs", ".cjs"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL, LanguageParadigm.EVENT_DRIVEN],
typing="dynamic",
compiled=False,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=1995,
creator="Brendan Eich",
description="The language of the web. Used for frontend interactivity, backend (Node.js), and everywhere in between.",
use_cases=["Web Development", "Frontend", "Backend (Node.js)", "Mobile (React Native)", "Desktop (Electron)"],
popular_frameworks=["React", "Vue", "Angular", "Express", "Next.js", "Svelte"],
package_manager="npm",
documentation_url="https://developer.mozilla.org/en-US/docs/Web/JavaScript",
syntax_example="const greet = (name) => `Hello, ${name}!`;",
hello_world='console.log("Hello, World!");',
keywords=["const", "let", "var", "function", "class", "if", "else", "for", "while", "return", "async", "await", "import", "export"],
operators=["+", "-", "*", "/", "%", "**", "===", "!==", "&&", "||", "??", "?."],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=["'", '"', "`"],
related_languages=["TypeScript", "CoffeeScript", "Dart"],
),
"typescript": LanguageConfig(
name="typescript",
display_name="TypeScript",
file_extensions=[".ts", ".tsx", ".mts"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2012,
creator="Microsoft (Anders Hejlsberg)",
description="JavaScript with types. Adds static typing to JavaScript for better tooling and fewer runtime errors.",
use_cases=["Large-scale Web Apps", "Enterprise Software", "React/Angular/Vue Apps"],
popular_frameworks=["Angular", "NestJS", "Next.js", "Deno"],
package_manager="npm",
documentation_url="https://www.typescriptlang.org/docs/",
syntax_example="const greet = (name: string): string => `Hello, ${name}!`;",
hello_world='console.log("Hello, World!");',
keywords=["const", "let", "type", "interface", "class", "extends", "implements", "generic", "enum", "namespace"],
operators=["+", "-", "*", "/", "===", "as", "is", "keyof", "typeof"],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=["'", '"', "`"],
related_languages=["JavaScript", "C#", "Java"],
),
"html": LanguageConfig(
name="html",
display_name="HTML",
file_extensions=[".html", ".htm"],
paradigms=[LanguageParadigm.DECLARATIVE],
typing="none",
compiled=False,
interpreted=True,
garbage_collected=False,
memory_safe=True,
year_created=1993,
creator="Tim Berners-Lee",
description="The standard markup language for creating web pages and web applications.",
use_cases=["Web Pages", "Email Templates", "Documentation"],
popular_frameworks=["None (markup language)"],
package_manager=None,
documentation_url="https://developer.mozilla.org/en-US/docs/Web/HTML",
syntax_example='
Title
',
hello_world="Hello, World!
",
keywords=["html", "head", "body", "div", "span", "p", "a", "img", "script", "style"],
operators=[],
comment_syntax={"single": "", "multi_start": ""},
string_syntax=['"', "'"],
related_languages=["CSS", "JavaScript", "XML"],
),
"css": LanguageConfig(
name="css",
display_name="CSS",
file_extensions=[".css"],
paradigms=[LanguageParadigm.DECLARATIVE],
typing="none",
compiled=False,
interpreted=True,
garbage_collected=False,
memory_safe=True,
year_created=1996,
creator="Hakon Wium Lie",
description="Cascading Style Sheets for styling web pages.",
use_cases=["Web Styling", "Responsive Design", "Animations"],
popular_frameworks=["Tailwind", "Bootstrap", "Sass", "Less"],
package_manager=None,
documentation_url="https://developer.mozilla.org/en-US/docs/Web/CSS",
syntax_example=".container { display: flex; justify-content: center; }",
hello_world="body { font-family: sans-serif; }",
keywords=["display", "flex", "grid", "margin", "padding", "color", "background", "border", "position"],
operators=[":", ";", "{", "}", ","],
comment_syntax={"multi_start": "/*", "multi_end": "*/"},
string_syntax=['"', "'"],
related_languages=["Sass", "Less", "HTML"],
),
# ─────────────────────────────────────────────────────────────
# BACKEND & SYSTEMS LANGUAGES
# ─────────────────────────────────────────────────────────────
"python": LanguageConfig(
name="python",
display_name="Python",
file_extensions=[".py", ".pyw", ".pyi"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL, LanguageParadigm.PROCEDURAL],
typing="dynamic",
compiled=False,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=1991,
creator="Guido van Rossum",
description="A versatile, readable language perfect for beginners and experts. Dominates in ML/AI, data science, and scripting.",
use_cases=["Machine Learning", "Data Science", "Web Development", "Automation", "Scientific Computing"],
popular_frameworks=["Django", "Flask", "FastAPI", "PyTorch", "TensorFlow", "Pandas", "NumPy"],
package_manager="pip",
documentation_url="https://docs.python.org/3/",
syntax_example='def greet(name: str) -> str:\n return f"Hello, {name}!"',
hello_world='print("Hello, World!")',
keywords=["def", "class", "if", "elif", "else", "for", "while", "return", "import", "from", "try", "except", "with", "async", "await", "lambda"],
operators=["+", "-", "*", "/", "//", "%", "**", "==", "!=", "and", "or", "not", "in", "is"],
comment_syntax={"single": "#", "multi_start": '"""', "multi_end": '"""'},
string_syntax=["'", '"', "'''", '"""', "f'", 'f"'],
related_languages=["Ruby", "Julia", "Perl"],
),
"java": LanguageConfig(
name="java",
display_name="Java",
file_extensions=[".java"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=1995,
creator="James Gosling (Sun Microsystems)",
description="Write once, run anywhere. Enterprise-grade language powering Android, big data, and enterprise systems.",
use_cases=["Enterprise Software", "Android Development", "Big Data", "Web Services"],
popular_frameworks=["Spring", "Spring Boot", "Hibernate", "Android SDK", "Apache Kafka"],
package_manager="Maven/Gradle",
documentation_url="https://docs.oracle.com/en/java/",
syntax_example='public String greet(String name) {\n return "Hello, " + name + "!";\n}',
hello_world='public class Main {\n public static void main(String[] args) {\n System.out.println("Hello, World!");\n }\n}',
keywords=["public", "private", "protected", "class", "interface", "extends", "implements", "static", "final", "abstract", "void", "new", "return", "try", "catch"],
operators=["+", "-", "*", "/", "%", "==", "!=", "&&", "||", "!", "instanceof"],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"'],
related_languages=["Kotlin", "Scala", "C#"],
),
"csharp": LanguageConfig(
name="csharp",
display_name="C#",
file_extensions=[".cs"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2000,
creator="Microsoft (Anders Hejlsberg)",
description="Microsoft's flagship language. Powers Unity games, Windows apps, and enterprise backends.",
use_cases=["Game Development (Unity)", "Windows Apps", "Enterprise Software", "Web APIs"],
popular_frameworks=[".NET", "ASP.NET", "Unity", "Xamarin", "Blazor"],
package_manager="NuGet",
documentation_url="https://docs.microsoft.com/en-us/dotnet/csharp/",
syntax_example='public string Greet(string name) => $"Hello, {name}!";',
hello_world='Console.WriteLine("Hello, World!");',
keywords=["public", "private", "class", "interface", "struct", "async", "await", "var", "using", "namespace", "static", "void", "return"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "??", "?."],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"', "@", "$"],
related_languages=["Java", "F#", "TypeScript"],
),
"cpp": LanguageConfig(
name="cpp",
display_name="C++",
file_extensions=[".cpp", ".cc", ".cxx", ".hpp", ".h"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.PROCEDURAL, LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=False,
memory_safe=False,
year_created=1985,
creator="Bjarne Stroustrup",
description="High-performance systems language. Powers game engines, browsers, and operating systems.",
use_cases=["Game Engines", "Systems Programming", "High-Frequency Trading", "Browsers", "Databases"],
popular_frameworks=["Qt", "Unreal Engine", "Boost", "POCO"],
package_manager="vcpkg/Conan",
documentation_url="https://en.cppreference.com/",
syntax_example='std::string greet(const std::string& name) {\n return "Hello, " + name + "!";\n}',
hello_world='#include \nint main() {\n std::cout << "Hello, World!" << std::endl;\n return 0;\n}',
keywords=["class", "struct", "public", "private", "virtual", "template", "typename", "const", "static", "new", "delete", "nullptr", "auto"],
operators=["+", "-", "*", "/", "++", "--", "->", "::", "<<", ">>", "==", "!="],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"'],
related_languages=["C", "Rust", "D"],
),
"c": LanguageConfig(
name="c",
display_name="C",
file_extensions=[".c", ".h"],
paradigms=[LanguageParadigm.PROCEDURAL, LanguageParadigm.IMPERATIVE],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=False,
memory_safe=False,
year_created=1972,
creator="Dennis Ritchie",
description="The mother of modern programming. Powers operating systems, embedded systems, and system utilities.",
use_cases=["Operating Systems", "Embedded Systems", "System Utilities", "Device Drivers"],
popular_frameworks=["None (systems language)"],
package_manager=None,
documentation_url="https://en.cppreference.com/w/c",
syntax_example='char* greet(const char* name) {\n static char buffer[100];\n sprintf(buffer, "Hello, %s!", name);\n return buffer;\n}',
hello_world='#include \nint main() {\n printf("Hello, World!\\n");\n return 0;\n}',
keywords=["int", "char", "float", "double", "void", "struct", "typedef", "enum", "const", "static", "extern", "if", "else", "for", "while", "return"],
operators=["+", "-", "*", "/", "%", "++", "--", "->", ".", "&", "*", "==", "!="],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"'],
related_languages=["C++", "Objective-C", "Rust"],
),
"go": LanguageConfig(
name="go",
display_name="Go",
file_extensions=[".go"],
paradigms=[LanguageParadigm.PROCEDURAL, LanguageParadigm.CONCURRENT],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2009,
creator="Google (Rob Pike, Ken Thompson)",
description="Simple, fast, and concurrent. Perfect for cloud services, CLIs, and microservices.",
use_cases=["Cloud Services", "Microservices", "DevOps Tools", "CLI Applications"],
popular_frameworks=["Gin", "Echo", "Fiber", "Chi"],
package_manager="go mod",
documentation_url="https://golang.org/doc/",
syntax_example='func greet(name string) string {\n return fmt.Sprintf("Hello, %s!", name)\n}',
hello_world='package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello, World!")\n}',
keywords=["func", "package", "import", "var", "const", "type", "struct", "interface", "go", "chan", "select", "defer", "return"],
operators=["+", "-", "*", "/", ":=", "==", "!=", "<-", "..."],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"', "`"],
related_languages=["Rust", "C", "Python"],
),
"rust": LanguageConfig(
name="rust",
display_name="Rust",
file_extensions=[".rs"],
paradigms=[LanguageParadigm.FUNCTIONAL, LanguageParadigm.IMPERATIVE, LanguageParadigm.CONCURRENT],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=False,
memory_safe=True,
year_created=2010,
creator="Mozilla (Graydon Hoare)",
description="Memory-safe systems programming without garbage collection. Blazingly fast with zero-cost abstractions.",
use_cases=["Systems Programming", "WebAssembly", "CLI Tools", "Blockchain", "Game Engines"],
popular_frameworks=["Tokio", "Actix", "Rocket", "Axum", "Bevy"],
package_manager="Cargo",
documentation_url="https://doc.rust-lang.org/",
syntax_example='fn greet(name: &str) -> String {\n format!("Hello, {}!", name)\n}',
hello_world='fn main() {\n println!("Hello, World!");\n}',
keywords=["fn", "let", "mut", "const", "struct", "enum", "impl", "trait", "pub", "mod", "use", "match", "if", "loop", "async", "await"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "?", "=>", "->", "::"],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"', "r#"],
related_languages=["C++", "Haskell", "OCaml"],
),
"kotlin": LanguageConfig(
name="kotlin",
display_name="Kotlin",
file_extensions=[".kt", ".kts"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2011,
creator="JetBrains",
description="Modern alternative to Java. Now the preferred language for Android development.",
use_cases=["Android Development", "Backend Services", "Multiplatform Apps"],
popular_frameworks=["Ktor", "Spring Boot", "Android Jetpack", "Compose"],
package_manager="Gradle",
documentation_url="https://kotlinlang.org/docs/",
syntax_example='fun greet(name: String): String = "Hello, $name!"',
hello_world='fun main() {\n println("Hello, World!")\n}',
keywords=["fun", "val", "var", "class", "object", "interface", "data", "sealed", "when", "if", "else", "return", "suspend"],
operators=["+", "-", "*", "/", "==", "!=", "?:", "?."],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"', '"""'],
related_languages=["Java", "Scala", "Swift"],
),
"ruby": LanguageConfig(
name="ruby",
display_name="Ruby",
file_extensions=[".rb", ".rake"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL],
typing="dynamic",
compiled=False,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=1995,
creator="Yukihiro Matsumoto",
description="A programmer's best friend. Elegant syntax designed for developer happiness.",
use_cases=["Web Development", "Scripting", "DevOps", "Prototyping"],
popular_frameworks=["Ruby on Rails", "Sinatra", "Hanami"],
package_manager="RubyGems/Bundler",
documentation_url="https://ruby-doc.org/",
syntax_example='def greet(name)\n "Hello, #{name}!"\nend',
hello_world='puts "Hello, World!"',
keywords=["def", "class", "module", "if", "else", "elsif", "unless", "case", "when", "do", "end", "return", "yield", "attr_accessor"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "<<", "=>"],
comment_syntax={"single": "#", "multi_start": "=begin", "multi_end": "=end"},
string_syntax=["'", '"', "%q", "%Q"],
related_languages=["Python", "Perl", "Crystal"],
),
"php": LanguageConfig(
name="php",
display_name="PHP",
file_extensions=[".php", ".phtml"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.PROCEDURAL],
typing="dynamic",
compiled=False,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=1995,
creator="Rasmus Lerdorf",
description="The language that powers most of the web. From WordPress to Facebook.",
use_cases=["Web Development", "CMS", "E-commerce", "APIs"],
popular_frameworks=["Laravel", "Symfony", "WordPress", "Drupal"],
package_manager="Composer",
documentation_url="https://www.php.net/docs.php",
syntax_example='function greet(string $name): string {\n return "Hello, {$name}!";\n}',
hello_world='"],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=["'", '"'],
related_languages=["JavaScript", "Python", "Perl"],
),
# ─────────────────────────────────────────────────────────────
# MOBILE LANGUAGES
# ─────────────────────────────────────────────────────────────
"swift": LanguageConfig(
name="swift",
display_name="Swift",
file_extensions=[".swift"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL, LanguageParadigm.PROCEDURAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=False,
memory_safe=True,
year_created=2014,
creator="Apple (Chris Lattner)",
description="Apple's modern language for iOS, macOS, and beyond. Safe, fast, and expressive.",
use_cases=["iOS Development", "macOS Development", "Server-side Swift"],
popular_frameworks=["SwiftUI", "UIKit", "Vapor", "Combine"],
package_manager="Swift Package Manager",
documentation_url="https://swift.org/documentation/",
syntax_example='func greet(_ name: String) -> String {\n return "Hello, \\(name)!"\n}',
hello_world='print("Hello, World!")',
keywords=["func", "var", "let", "class", "struct", "enum", "protocol", "extension", "guard", "if", "else", "switch", "return", "async", "await"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "??", "?.", "!"],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"', '"""'],
related_languages=["Objective-C", "Rust", "Kotlin"],
),
"dart": LanguageConfig(
name="dart",
display_name="Dart",
file_extensions=[".dart"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=2011,
creator="Google",
description="The language behind Flutter. Build beautiful native apps from a single codebase.",
use_cases=["Mobile Development (Flutter)", "Web Apps", "Backend Services"],
popular_frameworks=["Flutter", "AngularDart", "Aqueduct"],
package_manager="pub",
documentation_url="https://dart.dev/guides",
syntax_example='String greet(String name) => "Hello, $name!";',
hello_world='void main() {\n print("Hello, World!");\n}',
keywords=["void", "var", "final", "const", "class", "extends", "implements", "mixin", "async", "await", "if", "else", "for", "while", "return"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "??", "?."],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=["'", '"', "'''", '"""'],
related_languages=["JavaScript", "Java", "TypeScript"],
),
# ─────────────────────────────────────────────────────────────
# DATA SCIENCE & ML LANGUAGES
# ─────────────────────────────────────────────────────────────
"r": LanguageConfig(
name="r",
display_name="R",
file_extensions=[".r", ".R", ".Rmd"],
paradigms=[LanguageParadigm.FUNCTIONAL, LanguageParadigm.PROCEDURAL],
typing="dynamic",
compiled=False,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=1993,
creator="Ross Ihaka & Robert Gentleman",
description="The language of statistics. Powerful for data analysis, visualization, and statistical modeling.",
use_cases=["Statistical Analysis", "Data Visualization", "Bioinformatics", "Academic Research"],
popular_frameworks=["ggplot2", "dplyr", "tidyverse", "Shiny", "caret"],
package_manager="CRAN",
documentation_url="https://www.r-project.org/other-docs.html",
syntax_example='greet <- function(name) {\n paste0("Hello, ", name, "!")\n}',
hello_world='print("Hello, World!")',
keywords=["function", "if", "else", "for", "while", "repeat", "return", "library", "require", "TRUE", "FALSE", "NULL", "NA"],
operators=["+", "-", "*", "/", "%%", "%/%", "^", "<-", "->", "==", "!=", "&", "|", "%>%"],
comment_syntax={"single": "#"},
string_syntax=["'", '"'],
related_languages=["Python", "Julia", "MATLAB"],
),
"julia": LanguageConfig(
name="julia",
display_name="Julia",
file_extensions=[".jl"],
paradigms=[LanguageParadigm.FUNCTIONAL, LanguageParadigm.PROCEDURAL, LanguageParadigm.OBJECT_ORIENTED],
typing="dynamic",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2012,
creator="Jeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman",
description="High-performance computing with the ease of Python. Designed for numerical and scientific computing.",
use_cases=["Scientific Computing", "Machine Learning", "Data Analysis", "Simulation"],
popular_frameworks=["Flux.jl", "DifferentialEquations.jl", "Plots.jl", "DataFrames.jl"],
package_manager="Pkg",
documentation_url="https://docs.julialang.org/",
syntax_example='greet(name::String) = "Hello, $name!"',
hello_world='println("Hello, World!")',
keywords=["function", "end", "if", "else", "elseif", "for", "while", "return", "struct", "mutable", "abstract", "const", "using", "import"],
operators=["+", "-", "*", "/", "^", "==", "!=", "&&", "||", ".", "..."],
comment_syntax={"single": "#", "multi_start": "#=", "multi_end": "=#"},
string_syntax=['"', '"""'],
related_languages=["Python", "MATLAB", "R"],
),
# ─────────────────────────────────────────────────────────────
# FUNCTIONAL LANGUAGES
# ─────────────────────────────────────────────────────────────
"haskell": LanguageConfig(
name="haskell",
display_name="Haskell",
file_extensions=[".hs", ".lhs"],
paradigms=[LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=1990,
creator="Haskell Committee",
description="Pure functional programming. Lazy evaluation, strong types, and mathematical elegance.",
use_cases=["Academic Research", "Finance", "Compilers", "Formal Verification"],
popular_frameworks=["Yesod", "Servant", "Scotty", "Pandoc"],
package_manager="Cabal/Stack",
documentation_url="https://www.haskell.org/documentation/",
syntax_example='greet :: String -> String\ngreet name = "Hello, " ++ name ++ "!"',
hello_world='main = putStrLn "Hello, World!"',
keywords=["module", "import", "data", "type", "class", "instance", "where", "let", "in", "if", "then", "else", "case", "of", "do"],
operators=["+", "-", "*", "/", "==", "/=", "&&", "||", "++", ">>", ">>=", "<$>", "<*>", "."],
comment_syntax={"single": "--", "multi_start": "{-", "multi_end": "-}"},
string_syntax=['"'],
related_languages=["OCaml", "Elm", "PureScript"],
),
"elixir": LanguageConfig(
name="elixir",
display_name="Elixir",
file_extensions=[".ex", ".exs"],
paradigms=[LanguageParadigm.FUNCTIONAL, LanguageParadigm.CONCURRENT],
typing="dynamic",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2011,
creator="Jose Valim",
description="Scalable and maintainable applications on the Erlang VM. Great for real-time systems.",
use_cases=["Real-time Systems", "Distributed Systems", "Web Development", "IoT"],
popular_frameworks=["Phoenix", "Ecto", "Nerves", "LiveView"],
package_manager="Hex",
documentation_url="https://elixir-lang.org/docs.html",
syntax_example='def greet(name), do: "Hello, #{name}!"',
hello_world='IO.puts "Hello, World!"',
keywords=["def", "defp", "defmodule", "do", "end", "if", "else", "case", "cond", "fn", "with", "use", "import", "alias", "require"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "|>", "<>", "++", "--"],
comment_syntax={"single": "#"},
string_syntax=['"', '"""'],
related_languages=["Erlang", "Ruby", "Clojure"],
),
"clojure": LanguageConfig(
name="clojure",
display_name="Clojure",
file_extensions=[".clj", ".cljs", ".cljc", ".edn"],
paradigms=[LanguageParadigm.FUNCTIONAL],
typing="dynamic",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2007,
creator="Rich Hickey",
description="Modern Lisp for the JVM. Immutable data structures and powerful concurrency primitives.",
use_cases=["Data Processing", "Web Development", "Distributed Systems"],
popular_frameworks=["Ring", "Compojure", "Reagent", "Re-frame"],
package_manager="Leiningen/deps.edn",
documentation_url="https://clojure.org/guides/getting_started",
syntax_example='(defn greet [name]\n (str "Hello, " name "!"))',
hello_world='(println "Hello, World!")',
keywords=["def", "defn", "fn", "let", "if", "cond", "do", "loop", "recur", "ns", "require", "use", "import"],
operators=["+", "-", "*", "/", "=", "not=", "and", "or", "->", "->>"],
comment_syntax={"single": ";"},
string_syntax=['"'],
related_languages=["Common Lisp", "Scheme", "Elixir"],
),
# ─────────────────────────────────────────────────────────────
# SHELL & SCRIPTING
# ─────────────────────────────────────────────────────────────
"bash": LanguageConfig(
name="bash",
display_name="Bash",
file_extensions=[".sh", ".bash"],
paradigms=[LanguageParadigm.PROCEDURAL, LanguageParadigm.IMPERATIVE],
typing="none",
compiled=False,
interpreted=True,
garbage_collected=False,
memory_safe=True,
year_created=1989,
creator="Brian Fox",
description="The Unix shell. Essential for automation, DevOps, and system administration.",
use_cases=["System Administration", "DevOps", "Automation", "CI/CD Pipelines"],
popular_frameworks=["None (shell scripting)"],
package_manager=None,
documentation_url="https://www.gnu.org/software/bash/manual/",
syntax_example='greet() {\n echo "Hello, $1!"\n}',
hello_world='echo "Hello, World!"',
keywords=["if", "then", "else", "elif", "fi", "for", "while", "do", "done", "case", "esac", "function", "return", "export", "local"],
operators=["-eq", "-ne", "-lt", "-gt", "-le", "-ge", "=", "!=", "&&", "||", "|", ">", "<", ">>"],
comment_syntax={"single": "#"},
string_syntax=["'", '"', "$'"],
related_languages=["Zsh", "Fish", "PowerShell"],
),
"powershell": LanguageConfig(
name="powershell",
display_name="PowerShell",
file_extensions=[".ps1", ".psm1", ".psd1"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.PROCEDURAL],
typing="dynamic",
compiled=False,
interpreted=True,
garbage_collected=True,
memory_safe=True,
year_created=2006,
creator="Microsoft",
description="Cross-platform task automation and configuration management. Built on .NET.",
use_cases=["Windows Administration", "Azure Automation", "DevOps", "Configuration Management"],
popular_frameworks=["PSScriptAnalyzer", "Pester", "PSReadLine"],
package_manager="PowerShell Gallery",
documentation_url="https://docs.microsoft.com/en-us/powershell/",
syntax_example='function Greet($name) {\n "Hello, $name!"\n}',
hello_world='Write-Host "Hello, World!"',
keywords=["function", "param", "if", "else", "elseif", "switch", "foreach", "while", "do", "return", "try", "catch", "finally", "class"],
operators=["+", "-", "*", "/", "-eq", "-ne", "-lt", "-gt", "-and", "-or", "-not", "|", ">", ">>"],
comment_syntax={"single": "#", "multi_start": "<#", "multi_end": "#>"},
string_syntax=["'", '"', "@'", '@"'],
related_languages=["Bash", "C#", "Python"],
),
# ─────────────────────────────────────────────────────────────
# DATABASE & QUERY LANGUAGES
# ─────────────────────────────────────────────────────────────
"sql": LanguageConfig(
name="sql",
display_name="SQL",
file_extensions=[".sql"],
paradigms=[LanguageParadigm.DECLARATIVE],
typing="static",
compiled=False,
interpreted=True,
garbage_collected=False,
memory_safe=True,
year_created=1974,
creator="IBM (Donald Chamberlin, Raymond Boyce)",
description="The language of databases. Query, manipulate, and manage relational data.",
use_cases=["Database Management", "Data Analysis", "Reporting", "ETL Pipelines"],
popular_frameworks=["PostgreSQL", "MySQL", "SQLite", "SQL Server", "Oracle"],
package_manager=None,
documentation_url="https://www.w3schools.com/sql/",
syntax_example='SELECT name FROM users WHERE age > 18 ORDER BY name;',
hello_world="SELECT 'Hello, World!' AS greeting;",
keywords=["SELECT", "FROM", "WHERE", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "JOIN", "ON", "GROUP BY", "ORDER BY", "HAVING"],
operators=["=", "<>", "<", ">", "<=", ">=", "AND", "OR", "NOT", "IN", "BETWEEN", "LIKE", "IS NULL"],
comment_syntax={"single": "--", "multi_start": "/*", "multi_end": "*/"},
string_syntax=["'"],
related_languages=["PL/SQL", "T-SQL", "GraphQL"],
),
"graphql": LanguageConfig(
name="graphql",
display_name="GraphQL",
file_extensions=[".graphql", ".gql"],
paradigms=[LanguageParadigm.DECLARATIVE],
typing="static",
compiled=False,
interpreted=True,
garbage_collected=False,
memory_safe=True,
year_created=2015,
creator="Facebook",
description="A query language for APIs. Request exactly the data you need.",
use_cases=["API Development", "Mobile Apps", "Web Apps"],
popular_frameworks=["Apollo", "Relay", "Hasura", "Prisma"],
package_manager=None,
documentation_url="https://graphql.org/learn/",
syntax_example='query GetUser($id: ID!) {\n user(id: $id) {\n name\n email\n }\n}',
hello_world='query {\n hello\n}',
keywords=["query", "mutation", "subscription", "type", "input", "interface", "enum", "scalar", "fragment", "on"],
operators=["!", "...", "@"],
comment_syntax={"single": "#"},
string_syntax=['"'],
related_languages=["SQL", "JSON", "TypeScript"],
),
# ─────────────────────────────────────────────────────────────
# SMART CONTRACTS
# ─────────────────────────────────────────────────────────────
"solidity": LanguageConfig(
name="solidity",
display_name="Solidity",
file_extensions=[".sol"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=False,
memory_safe=False,
year_created=2014,
creator="Ethereum Foundation (Gavin Wood)",
description="The language of Ethereum. Write smart contracts that run on the blockchain.",
use_cases=["Smart Contracts", "DeFi", "NFTs", "DAOs"],
popular_frameworks=["Hardhat", "Foundry", "Truffle", "OpenZeppelin"],
package_manager="npm",
documentation_url="https://docs.soliditylang.org/",
syntax_example='function greet(string memory name) public pure returns (string memory) {\n return string(abi.encodePacked("Hello, ", name, "!"));\n}',
hello_world='contract HelloWorld {\n function hello() public pure returns (string memory) {\n return "Hello, World!";\n }\n}',
keywords=["contract", "function", "modifier", "event", "struct", "mapping", "public", "private", "external", "internal", "view", "pure", "payable", "memory", "storage"],
operators=["+", "-", "*", "/", "==", "!=", "&&", "||", "=>"],
comment_syntax={"single": "//", "multi_start": "/*", "multi_end": "*/"},
string_syntax=['"'],
related_languages=["JavaScript", "C++", "Vyper"],
),
# ─────────────────────────────────────────────────────────────
# MODERN & EMERGING LANGUAGES
# ─────────────────────────────────────────────────────────────
"zig": LanguageConfig(
name="zig",
display_name="Zig",
file_extensions=[".zig"],
paradigms=[LanguageParadigm.PROCEDURAL, LanguageParadigm.IMPERATIVE],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=False,
memory_safe=True,
year_created=2016,
creator="Andrew Kelley",
description="A better C. No hidden control flow, no garbage collection, and easy C/C++ interop.",
use_cases=["Systems Programming", "Game Development", "Embedded Systems"],
popular_frameworks=["None (systems language)"],
package_manager="Zig Package Manager",
documentation_url="https://ziglang.org/documentation/",
syntax_example='fn greet(name: []const u8) []const u8 {\n // ...\n}',
hello_world='const std = @import("std");\npub fn main() void {\n std.debug.print("Hello, World!\\n", .{});\n}',
keywords=["fn", "const", "var", "pub", "comptime", "if", "else", "while", "for", "return", "switch", "struct", "enum", "union"],
operators=["+", "-", "*", "/", "==", "!=", "and", "or", "orelse", "catch"],
comment_syntax={"single": "//"},
string_syntax=['"'],
related_languages=["C", "Rust", "Nim"],
),
"mojo": LanguageConfig(
name="mojo",
display_name="Mojo",
file_extensions=[".mojo", ".🔥"],
paradigms=[LanguageParadigm.OBJECT_ORIENTED, LanguageParadigm.FUNCTIONAL],
typing="static",
compiled=True,
interpreted=False,
garbage_collected=True,
memory_safe=True,
year_created=2023,
creator="Modular (Chris Lattner)",
description="Python superset for AI/ML. Combines Python's usability with systems-level performance.",
use_cases=["AI/ML", "High Performance Computing", "Systems Programming"],
popular_frameworks=["Modular Engine"],
package_manager="Modular",
documentation_url="https://docs.modular.com/mojo/",
syntax_example='fn greet(name: String) -> String:\n return "Hello, " + name + "!"',
hello_world='fn main():\n print("Hello, World!")',
keywords=["fn", "def", "struct", "let", "var", "if", "else", "for", "while", "return", "alias", "trait", "inout", "owned", "borrowed"],
operators=["+", "-", "*", "/", "==", "!=", "and", "or", "not"],
comment_syntax={"single": "#"},
string_syntax=["'", '"'],
related_languages=["Python", "Rust", "Swift"],
),
}
def _load_syntax_patterns(self) -> Dict[str, Dict[str, Any]]:
"""Load regex patterns for syntax validation"""
return {
"python": {
"indent_error": r"^(\s*)(?!#).*\n(?!\1|\s*$)",
"syntax_errors": [
(r"print\s+[^(]", "Missing parentheses in print (Python 3 syntax)"),
(r"\bdef\s+\w+[^(]", "Function definition missing parentheses"),
(r":\s*\n\s*\n", "Empty block after colon"),
],
"common_mistakes": [
(r"==\s*True", "Use 'if x:' instead of 'if x == True:'"),
(r"==\s*False", "Use 'if not x:' instead of 'if x == False:'"),
(r"==\s*None", "Use 'is None' instead of '== None'"),
(r"except\s*:", "Bare except clause - specify exception type"),
],
},
"javascript": {
"syntax_errors": [
(r"function\s+\w+\s*[^(]", "Function missing parentheses"),
(r"==(?!=)", "Use === for strict equality"),
(r"!=(?!=)", "Use !== for strict inequality"),
],
"common_mistakes": [
(r"var\s+", "Consider using 'const' or 'let' instead of 'var'"),
(r"==\s*null", "Use === null or == null carefully"),
],
},
"java": {
"syntax_errors": [
(r"System\.out\.print(?!ln|f)", "Use println() or printf() for output"),
(r"public\s+class\s+\w+\s*[^{]", "Class definition missing opening brace"),
],
},
}
def get_language_config(self, language: ProgrammingLanguage) -> Optional[LanguageConfig]:
"""Get configuration for a specific language"""
return self.languages.get(language.value)
def get_all_languages(self) -> List[LanguageConfig]:
"""Get all supported language configurations"""
return list(self.languages.values())
def detect_language(self, code: str, filename: Optional[str] = None) -> ProgrammingLanguage:
"""Detect the programming language from code or filename"""
# Check by file extension first
if filename:
ext = "." + filename.split(".")[-1].lower() if "." in filename else ""
for lang_name, config in self.languages.items():
if ext in config.file_extensions:
return ProgrammingLanguage(lang_name)
# Heuristic detection based on code patterns
patterns = {
ProgrammingLanguage.PYTHON: [r"\bdef\s+\w+\s*\(", r"\bimport\s+\w+", r"print\s*\(", r":\s*$"],
ProgrammingLanguage.JAVASCRIPT: [r"\bconst\s+\w+\s*=", r"\blet\s+\w+\s*=", r"console\.log", r"function\s*\w*\s*\(", r"=>"],
ProgrammingLanguage.TYPESCRIPT: [r":\s*(string|number|boolean|void)", r"interface\s+\w+", r"type\s+\w+\s*="],
ProgrammingLanguage.JAVA: [r"public\s+class", r"System\.out\.print", r"public\s+static\s+void\s+main"],
ProgrammingLanguage.CSHARP: [r"using\s+System", r"Console\.Write", r"namespace\s+\w+"],
ProgrammingLanguage.CPP: [r"#include\s*<", r"std::", r"cout\s*<<", r"int\s+main\s*\("],
ProgrammingLanguage.C: [r"#include\s*", r"printf\s*\(", r"int\s+main\s*\("],
ProgrammingLanguage.GO: [r"package\s+main", r"func\s+\w+\s*\(", r"fmt\.Print"],
ProgrammingLanguage.RUST: [r"fn\s+main\s*\(", r"let\s+mut", r"println!\s*\(", r"impl\s+\w+"],
ProgrammingLanguage.RUBY: [r"\bdef\s+\w+", r"puts\s+", r"end$", r"attr_accessor"],
ProgrammingLanguage.PHP: [r"<\?php", r"\$\w+\s*=", r"echo\s+"],
ProgrammingLanguage.SWIFT: [r"\bfunc\s+\w+\s*\(", r"var\s+\w+:", r"let\s+\w+:", r"print\s*\("],
ProgrammingLanguage.KOTLIN: [r"fun\s+main\s*\(", r"fun\s+\w+\s*\(", r"val\s+\w+", r"println\s*\("],
ProgrammingLanguage.SQL: [r"\bSELECT\b", r"\bFROM\b", r"\bWHERE\b", r"\bINSERT\b", r"\bUPDATE\b"],
ProgrammingLanguage.HTML: [r""],
ProgrammingLanguage.CSS: [r"\{[^}]*:\s*[^}]+;[^}]*\}", r"@media", r"\.[\w-]+\s*\{"],
ProgrammingLanguage.BASH: [r"#!/bin/bash", r"\becho\s+", r"\bif\s+\[", r"\bdone$"],
ProgrammingLanguage.HASKELL: [r"::\s*\w+\s*->", r"\bwhere$", r"\bdo$", r"import\s+qualified"],
ProgrammingLanguage.ELIXIR: [r"defmodule\s+\w+", r"\bdef\s+\w+", r"\|>", r"iex>"],
ProgrammingLanguage.SOLIDITY: [r"pragma\s+solidity", r"contract\s+\w+", r"function\s+\w+.*public"],
}
scores = {lang: 0 for lang in patterns}
for lang, regexes in patterns.items():
for regex in regexes:
if re.search(regex, code, re.MULTILINE | re.IGNORECASE):
scores[lang] += 1
# Return language with highest score, default to Python
best_lang = max(scores.keys(), key=lambda x: scores[x])
return best_lang if scores[best_lang] > 0 else ProgrammingLanguage.PYTHON
def analyze_code(
self,
code: str,
language: ProgrammingLanguage,
analyze_errors: bool = True,
analyze_style: bool = True,
analyze_complexity: bool = True,
suggest_improvements: bool = True,
explain_code: bool = False,
trace_execution: bool = False,
) -> CodeAnalysisResponse:
"""
Perform comprehensive code analysis
"""
start_time = time.time()
errors: List[CodeError] = []
warnings: List[CodeError] = []
suggestions: List[str] = []
metrics = None
explanation = None
execution_trace = None
improved_code = None
# Get language config
config = self.get_language_config(language)
if analyze_errors:
errors, warnings = self._check_syntax(code, language)
if analyze_style:
style_issues = self._check_style(code, language)
warnings.extend(style_issues)
if analyze_complexity:
metrics = self._calculate_metrics(code, language)
if suggest_improvements:
suggestions = self._generate_suggestions(code, language, errors, warnings)
if explain_code:
explanation = self._explain_code(code, language)
if trace_execution:
execution_trace = self._trace_execution(code, language)
# Determine validity
is_valid = len([e for e in errors if e.severity == "error"]) == 0
return CodeAnalysisResponse(
language=language,
language_version=None,
is_valid=is_valid,
errors=errors,
warnings=warnings,
suggestions=suggestions,
metrics=metrics,
explanation=explanation,
execution_trace=execution_trace,
improved_code=improved_code,
analysis_time_ms=(time.time() - start_time) * 1000,
)
def _check_syntax(self, code: str, language: ProgrammingLanguage) -> Tuple[List[CodeError], List[CodeError]]:
"""Check for syntax errors"""
errors = []
warnings = []
lang_patterns = self.syntax_patterns.get(language.value, {})
# Check for known syntax errors
for pattern, message in lang_patterns.get("syntax_errors", []):
for match in re.finditer(pattern, code, re.MULTILINE):
line_num = code[:match.start()].count('\n') + 1
errors.append(CodeError(
line=line_num,
error_type="syntax",
severity="error",
message=message,
code_snippet=match.group(0)[:50],
))
# Check for common mistakes
for pattern, message in lang_patterns.get("common_mistakes", []):
for match in re.finditer(pattern, code, re.MULTILINE):
line_num = code[:match.start()].count('\n') + 1
warnings.append(CodeError(
line=line_num,
error_type="style",
severity="warning",
message=message,
suggestion=f"Consider: {message}",
code_snippet=match.group(0)[:50],
))
return errors, warnings
def _check_style(self, code: str, language: ProgrammingLanguage) -> List[CodeError]:
"""Check code style issues"""
issues = []
lines = code.split('\n')
for i, line in enumerate(lines, 1):
# Line too long
if len(line) > 120:
issues.append(CodeError(
line=i,
error_type="style",
severity="info",
message=f"Line exceeds 120 characters ({len(line)} chars)",
))
# Trailing whitespace
if line != line.rstrip():
issues.append(CodeError(
line=i,
error_type="style",
severity="info",
message="Trailing whitespace",
))
return issues
def _calculate_metrics(self, code: str, language: ProgrammingLanguage) -> CodeMetrics:
"""Calculate code quality metrics"""
lines = code.split('\n')
non_empty_lines = [l for l in lines if l.strip()]
comment_lines = sum(1 for l in lines if l.strip().startswith(('#', '//', '--', '/*', '*')))
# Simple cyclomatic complexity estimation
complexity_patterns = ['if', 'elif', 'else', 'for', 'while', 'case', 'catch', 'except', '&&', '||', '?']
complexity = 1
for pattern in complexity_patterns:
complexity += code.count(pattern)
return CodeMetrics(
lines_of_code=len(non_empty_lines),
cyclomatic_complexity=complexity,
cognitive_complexity=complexity + len(non_empty_lines) // 20,
maintainability_index=max(0, 171 - 5.2 * (len(non_empty_lines) / 100) - 0.23 * complexity),
duplicate_lines=0,
code_smells=len([l for l in non_empty_lines if len(l) > 100]),
)
def _generate_suggestions(
self,
code: str,
language: ProgrammingLanguage,
errors: List[CodeError],
warnings: List[CodeError]
) -> List[str]:
"""Generate improvement suggestions"""
suggestions = []
# Language-specific suggestions
config = self.get_language_config(language)
if config:
# Add general best practices
if language == ProgrammingLanguage.PYTHON:
if "import *" in code:
suggestions.append("Avoid 'import *' - use explicit imports")
if not code.strip().startswith(('"""', "'''", "#")):
suggestions.append("Consider adding a module docstring")
elif language == ProgrammingLanguage.JAVASCRIPT:
if "var " in code:
suggestions.append("Use 'const' or 'let' instead of 'var'")
if "==" in code and "===" not in code:
suggestions.append("Use strict equality (===) instead of ==")
elif language == ProgrammingLanguage.JAVA:
if "System.out.print" in code and "System.out.println" not in code:
suggestions.append("Use println() for better output formatting")
return suggestions
def _explain_code(self, code: str, language: ProgrammingLanguage) -> str:
"""Generate a human-readable explanation of the code"""
config = self.get_language_config(language)
lines = code.split('\n')
explanation_parts = [
f"This is {config.display_name} code.",
f"",
f"Language Info:",
f"- Paradigms: {', '.join([p.value for p in config.paradigms])}",
f"- Typing: {config.typing}",
f"- Memory managed: {'Yes (GC)' if config.garbage_collected else 'Manual'}",
f"",
f"Code Structure:",
f"- Total lines: {len(lines)}",
f"- Non-empty lines: {len([l for l in lines if l.strip()])}",
]
return '\n'.join(explanation_parts)
def _trace_execution(self, code: str, language: ProgrammingLanguage) -> List[ExecutionStep]:
"""Generate step-by-step execution trace"""
# Simplified trace - in production, use AST parsing
steps = []
lines = code.split('\n')
for i, line in enumerate(lines, 1):
if line.strip() and not line.strip().startswith(('#', '//', '--')):
steps.append(ExecutionStep(
step_number=len(steps) + 1,
line=i,
operation=line.strip()[:50],
variables={},
explanation=f"Execute: {line.strip()[:50]}",
))
return steps
# Create singleton instance
code_analyzer = CodeAnalyzer()