# Supporting new languages

The steps to cover a new programming language are:

1. Write the grammar. This is the hardest part.
2. Write a parser (a parser simply parses an input based on your grammar to yield a parse tree).
3. Test your grammar, to ensure it is able to parse real-life language files.
4. Write a few parse tree visitors. Some visitors will compute metrics such as [executable-lines](https://docs.sonarsource.com/sonarqube-server/10.0/extension-guide/developing-a-plugin/executable-lines "mention"), while others will enforce [adding-coding-rules](https://docs.sonarsource.com/sonarqube-server/10.0/extension-guide/adding-coding-rules "mention"). A dozen or so visitors are sufficient for an initial release.
5. Write a scanner Sensor, in a SonarQube plugin, to launch the visitors.
6. Compute
   1. issues
   2. raw measures
   3. code duplications
   4. syntax highlighting
   5. symbol table
   6. coverage information (lines/branches to cover, line/branch hits)

In fulfilling these steps, the [Sonar Language Recognizer (SSLR)](https://app.gitbook.com/u/WIyitRdWuQgFcRKKsI6wQwJhkw22) can be an important resource.
