Supported Languages
Smart Engineering indexes source code in two ways. Some languages have a dedicated parser that extracts structured symbols (classes, functions, methods, fields, and more) and, for several of them, detects the application framework in use. Every other recognized file type is captured by the generic FileIndexer, which stores content and basic metadata without structured symbol extraction.
Languages with dedicated parsers
These languages produce structured symbols and, where noted, framework-specific metadata.
| Language | Extensions | Framework detection |
|---|---|---|
| Java | .java | Java EE / Jakarta EE |
| C# | .cs, .csx | — |
| C#/.NET projects | .csproj, .fsproj, .vbproj, .sln, .slnx, .slnf and config files (web.config, app.config, packages.config, nuget.config, global.json, Directory.Build.props, Directory.Build.targets, Directory.Packages.props) | — |
| Python | .py, .pyw, .pyde, .pyp, .pyt, .rpy, .tac, .wsgi, .xpy | — |
| TypeScript | .ts, .d.ts | Angular |
| PHP | .php, .php3–.php5, .phps, .phpt, .inc, .ctp, .aw, .class | 8 frameworks |
| Ruby | .rb, .rake, .ruby | Ruby on Rails |
| Go | .go | — |
| C | .c, .h, .cats, .idc, .w | — |
| VB6 | .bas, .cls, .frm | — |
| COBOL | .cbl, .cob, .cobol, .ccp, .bms, .prc, .proc, .CSD, .sco | — |
| PL/SQL | .pls, .plsql, .pkb, .pks, .pck, .plb, and content-detected .sql | — |
| IBM RPG III | .rpg, .RPG | — |
| IBM RPG IV | .rpgle, .sqlrpgle, .RPGLE, .SQLRPGLE | — |
| JCL | .jcl, .JCL | — |
| HLASM | .hlasm, .bal | — |
| ESQL | .esql | — |
| IBM ACE | .msgflow, .subflow | — |
| Clipper | .prg | — |
| VisualAge | .esf | — |
| Natural (AG) | .systrans | — |
| Control-M | .json (content-detected) | — |
| DataStage | .json (content-detected) | — |
| MuleSoft | .xml (content-detected), plus pom.xml / mule-artifact.json project descriptors | Mule 4 flow metadata |
| NICE CXone | .XML (content-detected) | — |
Framework and component detection
PHP (8 frameworks) — the parser inspects namespaces, base classes, interfaces, PHP 8+ attributes, and code patterns to detect and extract framework-specific metadata for:
- Laravel
- Symfony
- WordPress
- Drupal
- CodeIgniter
- Yii
- CakePHP
- Slim
Java EE / Jakarta EE — detected through annotations, base classes, interfaces, and imports:
- JPA / Jakarta Persistence (entities)
- EJB / Jakarta Enterprise Beans
- Servlets / Jakarta Servlet
- JAX-RS / Jakarta REST (resources, including parameter and method metadata)
- CDI / Jakarta CDI (beans)
- WebSocket endpoints
- JTA / Jakarta Transaction
Ruby on Rails — detected through directory structure, naming conventions, and inheritance from ApplicationController / ApplicationRecord, with dedicated handling for controllers, models, and migrations.
Angular — the TypeScript parser recognizes @Component, @Directive, @Injectable, @NgModule, and @Pipe decorators.
MuleSoft — Mule 4 Maven applications are recognized from pom.xml and mule-artifact.json, and their XML flows are parsed for named flows and integration metadata.
Languages indexed via FileIndexer
Beyond the dedicated parsers, Smart Engineering recognizes source, markup, config, and data files for 300+ additional languages and formats through content indexing (no structured symbol extraction). Some extensions overlap with a dedicated parser above and are ambiguous file types (for example .cpy and .lib are indexed as COBOL copybooks, and generic .sql/.json files fall back to FileIndexer when they don't match a content-aware parser).
Full list of generically indexed languages
- ABAP (
.abap) - ActionScript (
.as) - Ada (
.ada,.adb,.ads) - Agda (
.agda) - AGS Script (
.asc,.ash) - Alloy (
.als) - AMPL (
.ampl,.mod) - ANTLR (
.g4) - ApacheConf (
.apacheconf,.vhost) - API Blueprint (
.apib) - APL (
.apl,.dyalog) - AppleScript (
.applescript,.scpt) - Arc (
.arc) - Arduino (
.ino) - AsciiDoc (
.adoc,.asciidoc) - ASP (
.asax,.ascx,.ashx,.asmx,.asp,.aspx,.axd) - AspectJ (
.aj) - Assembly (
.a51,.asm,.nasm) - ATS (
.dats,.hats,.sats) - Augeas (
.aug) - AutoHotkey (
.ahk,.ahkl) - AutoIt (
.au3) - Awk (
.auk,.awk,.gawk,.mawk,.nawk) - Batchfile (
.bat,.cmd) - Befunge (
.befunge) - Bison (
.bison) - BitBake (
.bb) - BlitzBasic (
.decls) - BlitzMax (
.bmx) - Bluespec (
.bsv) - Boo (
.boo) - Brainfuck (
.b,.bf) - Brightscript (
.brs) - Bro (
.bro) - C# generic (
.cake,.cshtml) - C++ (
.c++,.cc,.cp,.cpp,.cxx,.h++,.hh,.hpp,.hxx,.inl,.ipp,.tcc,.tpp) - C-ObjDump (
.c-objdump) - C2hs Haskell (
.chs) - Cap'n Proto (
.capnp) - CartoCSS (
.mss) - Ceylon (
.ceylon) - Chapel (
.chpl) - Charity (
.ch) - ChucK (
.ck) - Cirru (
.cirru) - Clarion (
.clw) - Clean (
.dcl,.icl) - Click (
.click) - CLIPS (
.clp) - Clojure (
.boot,.cl2,.clj,.cljc,.cljs,.cljs.hl,.cljscm,.cljx,.hic) - CMake (
.cmake,.cmake.in) - COBOL copybooks (
.cpy,.lib) - CoffeeScript (
._coffee,.cjsx,.coffee,.cson,.iced) - ColdFusion (
.cfm,.cfml) - ColdFusion CFC (
.cfc) - Common Lisp (
.asd,.cl,.l,.lisp,.lsp,.ny,.podsl,.sexp) - Component Pascal (
.cps) - Coq (
.coq,.v) - Cpp-ObjDump (
.c++-objdump,.c++objdump,.cpp-objdump,.cppobjdump,.cxx-objdump) - Creole (
.creole) - Crystal (
.cr) - CSS (
.css) - CSV (
.csv) - Cucumber (
.feature) - Cuda (
.cu,.cuh) - Cycript (
.cy) - Cython (
.pxd,.pxi,.pyx) - D (
.d,.di) - D-ObjDump (
.d-objdump) - Darcs Patch (
.darcspatch,.dpatch) - Dart (
.dart) - DataWeave (
.dwl) - Diff (
.diff,.patch) - DIGITAL Command Language (
.com) - DM (
.dm) - DNS Zone (
.arpa,.zone) - Dockerfile (
.dockerfile) - Dogescript (
.djs) - Dylan (
.dyl,.dylan,.intr,.lid) - E (
.E) - Eagle (
.brd,.sch) - Ecere Projects (
.epj) - ECL (
.ecl,.eclxml) - Eiffel (
.e) - Elixir (
.ex,.exs) - Elm (
.elm) - Emacs Lisp (
.el,.emacs,.emacs.desktop) - EmberScript (
.em,.emberscript) - Erlang (
.erl,.es,.escript,.hrl,.xrl,.yrl) - F# (
.fs,.fsi,.fsx) - Factor (
.factor) - Fancy (
.fancypack,.fy) - Fantom (
.fan) - FLUX (
.flux,.fx) - Formatted (
.eam.fs) - Forth (
.4th,.forth,.fr,.frt,.fth) - FORTRAN (
.f,.f03,.f08,.f77,.f90,.f95,.for,.fpp) - FreeMarker (
.ftl) - G-code (
.g,.gco,.gcode) - Game Maker Language (
.gml) - GAMS (
.gms) - GAP (
.gap,.gd,.gi,.tst) - GAS (
.ms,.s) - Genshi (
.kid) - Gentoo Ebuild (
.ebuild) - Gentoo Eclass (
.eclass) - Gettext Catalog (
.po,.pot) - GLSL (
.fp,.frag,.frg,.fsh,.fshader,.geo,.geom,.glsl,.glslv,.gshader,.shader,.vert,.vrx,.vsh,.vshader) - Glyph (
.glf) - Gnuplot (
.gnu,.gnuplot,.gp,.plot,.plt) - Golo (
.golo) - Gosu (
.gs,.gst,.gsx,.vark) - Grace (
.grace) - Gradle (
.gradle) - Grammatical Framework (
.gf) - GraphQL (
.graphql) - Graphviz / DOT (
.dot,.gv) - Groff (
.1–.9,.1in,.1m,.1x,.3in,.3m,.3qt,.3x,.man,.me,.n,.rno,.roff) - Groovy (
.groovy,.grt,.gtpl,.gvy) - Groovy Server Pages (
.gsp) - Haml (
.haml,.haml.deface) - Handlebars (
.handlebars,.hbs) - Harbour (
.hb) - Haskell (
.hs,.hsc) - Haxe (
.hx,.hxsl) - HCL (
.hcl,.tf) - HLSL (
.fxh,.hlsl,.hlsli) - HTML (
.htm,.html,.html.hl,.st,.xht,.xhtml) - HTML+Django (
.jinja,.mustache) - HTML+EEX (
.eex) - HTML+ERB (
.erb,.erb.deface) - HTML+PHP (
.phtml) - HTTP (
.http) - Hy (
.hy) - IBM RPG generic (
.DSPF,.PF,.RPF) - IDL (
.dlm,.pro) - Idris (
.idr,.lidr) - IGOR Pro (
.ipf) - Inform 7 (
.i7x,.ni) - INI (
.cfg,.prefs) - Inno Setup (
.iss) - Io (
.io) - Ioke (
.ik) - IRC log (
.irclog,.weechatlog) - Isabelle (
.thy) - J (
.ijs) - Jade (
.jade) - Jasmin (
.j) - Java Server Pages (
.jsp) - JavaScript (
._js,.bones,.es6,.jake,.js,.jsb,.jscad,.jsfl,.jsm,.jss,.njs,.pac,.sjs,.ssjs,.xsjs,.xsjslib, and Sublime Text metadata extensions) - JFlex (
.flex,.jflex) - JSON (
.geojson,.json,.lock,.topojson) - JSON5 (
.json5) - JSONiq (
.jq) - JSONLD (
.jsonld) - JSX (
.jsx) - Julia (
.jl) - Jupyter Notebook (
.ipynb) - KiCad (
.kicad_pcb) - Kit (
.kit) - Kotlin (
.kt,.ktm,.kts) - KRL (
.krl) - LabVIEW (
.lvproj) - Lasso (
.las,.lasso,.lasso8,.lasso9,.ldml) - Latte (
.latte) - Lean (
.hlean,.lean) - Less (
.less) - Lex (
.lex) - LFE (
.lfe) - LilyPond (
.ily,.ly) - Limbo (
.m) - Linker Script (
.ld,.lds) - Liquid (
.liquid) - Literate Agda (
.lagda) - Literate CoffeeScript (
.litcoffee) - Literate Haskell (
.lhs) - LiveScript (
._ls,.ls) - LLVM (
.ll) - Logos (
.x,.xi,.xm) - Logtalk (
.lgt,.logtalk) - LOLCODE (
.lol) - LookML (
.lookml) - LSL (
.lsl,.lslp) - Lua (
.fcgi,.lua,.nse,.pd_lua,.rbxs,.wlua) - M / MUMPS (
.mumps) - M4 (
.m4) - Makefile (
.mak,.mk,.mkfile) - Mako (
.mako,.mao) - Markdown (
.markdown,.md,.mkd,.mkdn,.mkdown,.ron) - Mask (
.mask) - Mathematica (
.cdf,.ma,.mathematica,.mt,.nb,.nbp,.wl,.wlt) - Matlab (
.matlab) - Max (
.maxhelp,.maxpat,.maxproj,.mxt,.pat) - MAXScript (
.mcr) - MediaWiki (
.mediawiki,.wiki) - Mercury (
.moo) - Metal (
.metal) - MiniD (
.minid) - Mirah (
.druby,.duby,.mir,.mirah) - Modelica (
.mo) - Module Management System (
.mmk,.mms) - Monkey (
.monkey) - MoonScript (
.moon) - MTML (
.mtml) - MUF (
.muf) - Myghty (
.myt) - NCL (
.ncl) - NetLinx (
.axi,.axs) - NetLinx+ERB (
.axi.erb,.axs.erb) - NetLogo (
.nlogo) - Nginx (
.nginxconf) - Nimrod (
.nim,.nimrod) - Ninja (
.ninja) - Nit (
.nit) - Nix (
.nix) - NL (
.nl) - NSIS (
.nsh,.nsi) - Nu (
.nu) - NumPy (
.numpy,.numpyw,.numsc) - ObjDump (
.objdump) - Objective-C++ (
.mm) - Objective-J (
.sj) - OCaml (
.eliom,.eliomi,.ml,.ml4,.mli,.mll,.mly) - Omgrofl (
.omgrofl) - Opa (
.opa) - Opal (
.opal) - OpenCL (
.opencl) - OpenEdge ABL (
.p) - OpenSCAD (
.scad) - Org (
.org) - Ox (
.ox,.oxh,.oxo) - Oxygene (
.oxygene) - Oz (
.oz) - Pan (
.pan) - Papyrus (
.psc) - Parrot (
.parrot) - Parrot Assembly (
.pasm) - Parrot Internal Representation (
.pir) - Pascal (
.dfm,.dpr,.lpr,.pas,.pp) - PAWN (
.pwn) - Perl (
.al,.cgi,.perl,.ph,.pl,.plx,.pm,.pod,.psgi,.t) - Perl 6 (
.6pl,.6pm,.nqp,.p6,.p6l,.p6m,.pl6,.pm6) - Pickle (
.pkl) - PigLatin (
.pig) - Pike (
.pike,.pmod) - PogoScript (
.pogo) - Pony (
.pony) - PostScript (
.eps,.ps) - POV-Ray SDL (
.pov) - PowerShell (
.ps1,.psd1,.psm1) - Processing (
.pde) - Prolog (
.prolog,.yap) - Propeller Spin (
.spin) - Protocol Buffer (
.proto) - Public Key (
.pub) - Pure Data (
.pd) - PureBasic (
.pb,.pbi) - PureScript (
.purs) - Python build scripts (
.bzl,.gyp,.lmi) - Python traceback (
.pytb) - QMake (
.pri) - QML (
.qbs,.qml) - R (
.r,.rd,.rsx) - Racket (
.rkt,.rktd,.rktl,.scrbl) - Ragel in Ruby Host (
.rl) - RAML (
.raml) - Raw token data (
.raw) - RDoc (
.rdoc) - REALbasic (
.rbbas,.rbfrm,.rbmnu,.rbres,.rbtbar,.rbuistate) - Rebol (
.r2,.r3,.reb,.rebol) - Red (
.red,.reds) - Redcode (
.cw) - RenderScript (
.rsh) - RHTML (
.rhtml) - RMarkdown (
.rmd) - RobotFramework (
.robot) - Rouge (
.rg) - Ruby generic (
.builder,.god,.irbrc,.jbuilder,.mspec,.pluginspec,.podspec,.rabl,.rbuild,.rbw,.rbx,.ru,.thor,.watchr) - Rust (
.rs,.rs.in) - Sage (
.sage,.sagews) - SaltStack (
.sls) - SAS (
.sas) - Sass (
.sass) - Scala (
.sbt,.sc,.scala) - Scaml (
.scaml) - Scheme (
.scm,.sld,.sps,.ss) - Scilab (
.sce,.sci) - SCSS (
.scss) - Self (
.self) - Shell (
.bash,.bats,.command,.ksh,.sh,.sh.in,.tmux,.tool,.zsh) - ShellSession (
.sh-session) - Shen (
.shen) - Slash (
.sl) - Slim (
.slim) - Smali (
.smali) - Smarty (
.tpl) - SMT (
.smt,.smt2) - SourcePawn (
.sma,.sp) - SPARQL (
.rq,.sparql) - SQF (
.hqf,.sqf) - SQL (
.cql,.ddl,.sql,.tab,.udf,.viw) - SQLPL (
.db2) - Squirrel (
.nut) - Stan (
.stan) - Standard ML (
.ML,.fun,.sig,.sml) - Stata (
.ado,.do,.doh,.ihlp,.mata,.matah,.sthlp) - STON (
.ston) - Stylus (
.styl) - SuperCollider (
.scd) - SVG (
.svg) - Swift (
.swift) - SystemVerilog (
.sv,.svh,.vh) - Tcl (
.adp,.tcl,.tm) - Text (
.txt) - TOML (
.toml) - TXL (
.txl) - XML (
.xml)
Plus common project, configuration, and resource files — .resx, .gemspec, Gemfile, pom.xml, database and Rails schema/migration files, environment and INI-style config, and more.
Notes
- Multi-language repositories: a single repository can contain any mix of the languages above; each file is routed to the matching parser independently.
- Dedicated parsers produce structured symbols (classes, functions, methods, fields) used for documentation generation, the repository graph, and Agentic Chat.
- FileIndexer languages are content-indexed and searchable, but do not produce structured symbols.
- Ambiguous extensions (for example
.sql,.json,.xml) are resolved by inspecting file content, not just the extension, so the same extension can route to different parsers depending on what it contains. - This list reflects the parsers and indexer configuration currently shipped with Smart Engineering and may expand as new parsers are added.