dk.brics.grammar.ambiguity
Class AmbiguityAnalyzer

java.lang.Object
  extended by dk.brics.grammar.ambiguity.AmbiguityAnalyzer

public class AmbiguityAnalyzer
extends Object

Grammar ambiguity checker.

Based on "Analyzing Ambiguity of Context-Free Grammars", by Claus Brabrand, Robert Giegerich, and Anders Møller.


Constructor Summary
AmbiguityAnalyzer(List<ApproximationStrategy> approx, PrintWriter out)
          Constructs a new grammar analyzer with the given list of approximation strategies.
AmbiguityAnalyzer(PrintWriter out, boolean verbose)
          Constructs a new grammar analyzer with default approximation strategies.
 
Method Summary
 boolean analyze(Grammar g)
          Analyzes the given grammar.
 long getMaxMemory()
          Returns maximal memory usage during last analysis.
 int getNumberOfCertainHorizontalAmbiguities()
          Returns the number of certain horizontal ambiguities from last analysis.
 int getNumberOfCertainVerticalAmbiguities()
          Returns the number of certain vertical ambiguities from last analysis.
 int getNumberOfOutOfMemoryErrors()
          Returns the number ambiguity checks that resulted in OutOfMemoryError.
 int getNumberOfPotentialHorizontalAmbiguities()
          Returns the number of potential horizontal ambiguities from last analysis.
 int getNumberOfPotentialVerticalAmbiguities()
          Returns the number of potential vertical ambiguities from last analysis.
 void printStatistics(PrintWriter out)
          Prints statistics for the approximation strategies from the last analysis.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AmbiguityAnalyzer

public AmbiguityAnalyzer(List<ApproximationStrategy> approx,
                         PrintWriter out)
Constructs a new grammar analyzer with the given list of approximation strategies.

Parameters:
approx - approximation strategies
out - print writer for messages

AmbiguityAnalyzer

public AmbiguityAnalyzer(PrintWriter out,
                         boolean verbose)
                  throws InstantiationException,
                         IllegalAccessException,
                         ClassNotFoundException
Constructs a new grammar analyzer with default approximation strategies. Default approximation strategies: terminal, regular2, regular. This default behavior can be changed by setting the system property dk.brics.grammar.ambiguity.strategies to the list of classes implementing the strategies.

Parameters:
out - print writer for messages
verbose - if enabled, verbose output is generated
Throws:
ClassNotFoundException - if an approximation strategy class was not found
IllegalAccessException - if an approximation strategy class or its nullary constructor is not accessible
InstantiationException - if an approximation strategy class cannot be instantiated
Method Detail

analyze

public boolean analyze(Grammar g)
Analyzes the given grammar.

Parameters:
g - grammar
Returns:
true if the grammar is definitely unambiguous

getMaxMemory

public long getMaxMemory()
Returns maximal memory usage during last analysis. (Note: garbage collection might reduce this number.)

Returns:
memory usage

getNumberOfCertainHorizontalAmbiguities

public int getNumberOfCertainHorizontalAmbiguities()
Returns the number of certain horizontal ambiguities from last analysis.

Returns:
number of ambiguities

getNumberOfCertainVerticalAmbiguities

public int getNumberOfCertainVerticalAmbiguities()
Returns the number of certain vertical ambiguities from last analysis.

Returns:
number of ambiguities

getNumberOfOutOfMemoryErrors

public int getNumberOfOutOfMemoryErrors()
Returns the number ambiguity checks that resulted in OutOfMemoryError.

Returns:
number of errors

getNumberOfPotentialHorizontalAmbiguities

public int getNumberOfPotentialHorizontalAmbiguities()
Returns the number of potential horizontal ambiguities from last analysis.

Returns:
number of ambiguities

getNumberOfPotentialVerticalAmbiguities

public int getNumberOfPotentialVerticalAmbiguities()
Returns the number of potential vertical ambiguities from last analysis.

Returns:
number of ambiguities

printStatistics

public void printStatistics(PrintWriter out)
Prints statistics for the approximation strategies from the last analysis.

Parameters:
out - print writer for output


Copyright © 2005-2008 Anders Møller.