Java String Analyzer
API Specification

This document is the API specification for the Java String Analyzer implementation.


dk.brics.string Interface to the string analysis.
dk.brics.string.charset Character sets.
dk.brics.string.diagnostics Tools for debugging, benchmarking and other kinds of diagnostics.
dk.brics.string.directedgraph Directed graphs, with strongly connected components.
dk.brics.string.external The API for describing the interaction between application and non-application classes.
dk.brics.string.flow Flow graphs.
dk.brics.string.flow.operations Operations on flow graphs.
dk.brics.string.grammar Context-free grammars with regular operations.
dk.brics.string.grammar.operations Operations on grammars.
dk.brics.string.intermediate Intermediate representation between jimple and flow graphs.
dk.brics.string.intermediate.operations Operations on intermediate representation, in particular conversion to flow graphs. Translating Jimple code into intermediate representation.
dk.brics.string.mlfa Multi-level finite automata.
dk.brics.string.mlfa.operations Operations on multi-level finite automata, in particula conversion to ordinary automata.
dk.brics.string.runtime Runtime system.
dk.brics.string.stringoperations Operations on strings, modeled as automata and charset operations.


This document is the API specification for the Java String Analyzer implementation.

Structure of the analysis of a Java program:

             /  Java Program
            /      |
           |       | javac
           |       V
front-end <     Class Files
           |       |
           |       | (uses Soot)
           |       V
           |    Intermediate Code (dk.brics.string.intermediate)
           |       |
            \      | dk.brics.string.intermediate.operations
             \     V
                Flow Graph (dk.brics.string.flow)
             /     |
            /      | dk.brics.string.flow.operations
           |       V
           |    Context-Free Grammar (dk.brics.string.grammar)
           |       |
 back-end <        | dk.brics.string.grammar.operations
           |       V
           |    Multi-Level Finite Automaton (dk.brics.string.mlfa)
           |       |
           |       | dk.brics.string.mlfa.operations
            \      V
             \  Finite Automata (dk.brics.automaton)

This tool requires the BRICS Automaton package and the Soot package.

For more information about the Java String Analyzer, see the project home page:

Anders Møller <>, Aske Simon Christensen <>, Asger Feldthaus <>

Copyright © 2003-2009 Anders Møller, Aske Simon Christensen, Asger Feldthaus.