import java.awt.Dimension ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import java.io.StringReader ;
import de.unisiegen.tpml.core.languages.Language ;
import de.unisiegen.tpml.core.languages.LanguageFactory ;
import de.unisiegen.tpml.core.languages.LanguageParser ;
import de.unisiegen.tpml.core.typechecker.TypeCheckerProofModel ;
import de.unisiegen.tpml.graphics.typechecker.TypeCheckerView ;
@ SuppressWarnings ( "all" )
public class TypeCheckerTest
{
private static String expression = "let rec f = lambda x. if x = 0 then 1 else x * f (x - 1) in f 3" ;
private static TypeCheckerProofModel model ;
private static TypeCheckerView gui ;
public static void main ( String [ ] args )
{
try
{
LanguageFactory lf = LanguageFactory.newInstance ( ) ;
Language language = lf.getLanguageById ( "L2" ) ;
LanguageParser parser = language.newParser ( new StringReader (
TypeCheckerTest.expression ) ) ;
model = language.newTypeCheckerProofModel ( parser.parse ( ) ) ;
TestDialog dialog = new TestDialog ( ) ;
// TypeCheckerComponent component = new TypeCheckerComponent (model);
gui = new TypeCheckerView ( model ) ;
dialog.setContent ( gui ) ;
dialog.setSize ( new Dimension ( 640 , 480 ) ) ;
dialog.setVisible ( true ) ;
dialog.addWindowListener ( new WindowAdapter ( )
{
@ Override
public void windowClosing ( WindowEvent e )
{
System.exit ( 0 ) ;
}
} ) ;
// component.setAvailableWidth(dialog.getWidth());
dialog.guess.addActionListener ( new ActionListener ( )
{
public void actionPerformed ( ActionEvent event )
{
try
{
gui.guess ( ) ;
}
catch ( Exception e )
{
e.printStackTrace ( ) ;
}
}
} ) ;
dialog.redoButton.addActionListener ( new ActionListener ( )
{
public void actionPerformed ( ActionEvent event )
{
try
{
model.redo ( ) ;
}
catch ( Exception e )
{
e.printStackTrace ( ) ;
}
}
} ) ;
dialog.undoButton.addActionListener ( new ActionListener ( )
{
public void actionPerformed ( ActionEvent event )
{
try
{
model.undo ( ) ;
}
catch ( Exception e )
{
e.printStackTrace ( ) ;
}
}
} ) ;
}
catch ( Exception e )
{
e.printStackTrace ( ) ;
}
}
}