Skip to main content

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.

LanguageExtensionsFramework detection
Java.javaJava 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.tsAngular
PHP.php, .php3.php5, .phps, .phpt, .inc, .ctp, .aw, .class8 frameworks
Ruby.rb, .rake, .rubyRuby 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 descriptorsMule 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:

  1. Laravel
  2. Symfony
  3. WordPress
  4. Drupal
  5. CodeIgniter
  6. Yii
  7. CakePHP
  8. 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.

See also