tree-sitter-scala

raw JSON →
0.26.0 verified Sat May 09 auth: no python

Scala grammar for tree-sitter, providing incremental parsing, syntax tree queries, and syntax highlighting for Scala 2 and Scala 3. The current version is 0.26.0, which requires tree-sitter >=0.26.8 and Python >=3.9. The library is actively maintained with regular releases.

pip install tree-sitter-scala
error ModuleNotFoundError: No module named 'tree_sitter'
cause The base tree-sitter library is not installed.
fix
Run: pip install tree-sitter
error ImportError: cannot import name 'Language' from 'tree_sitter'
cause Old tree-sitter version (<0.26) does not expose Language directly.
fix
Upgrade tree-sitter: pip install --upgrade tree-sitter
error tree_sitter.binding.LanguageError: Unknown language 'scala'
cause Using Language('scala') without the proper grammar binding or with an outdated tree-sitter version.
fix
Use from tree_sitter_scala import language and then language()
breaking Version 0.26.0 requires tree-sitter >=0.26.8. Older tree-sitter versions will cause import errors.
fix Upgrade tree-sitter to 0.26.8 or later: pip install --upgrade tree-sitter
gotcha The Python package is named 'tree-sitter-scala' on PyPI, but the import module is 'tree_sitter_scala' (underscores, not hyphens).
fix Always use from tree_sitter_scala import ...
deprecated The old method of obtaining language via Language('scala') from tree_sitter is deprecated and may be removed.
fix Use from tree_sitter_scala import language and then language()

Initialize a tree-sitter parser for Scala and parse a simple code snippet.

from tree_sitter import Language, Parser
from tree_sitter_scala import language

# Get the Scala language object
SCALA_LANGUAGE = language()

# Initialize a parser with the Scala language
parser = Parser()
parser.set_language(SCALA_LANGUAGE)

# Parse some Scala code
tree = parser.parse(bytes("object Hello extends App { println(\"Hello, world!\") }", "utf8"))
print(tree.root_node.sexp())