# Copyright 2002, 2003, 2004, 2005 Vladimir Prus 
# Distributed under the Boost Software License, Version 1.0. 
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) 

import type ;
import generators ;
import feature ;
import property ;
import print ;

type.register LEX : l ;

generators.register-standard lex.lex : LEX : C ;

rule lex ( targets * : sources * : properties * )
{
    print.output $(<) ;
    # Need to supress SunCC's warning about empty source
    # file.
    print.text "void foo() {}
" ;
}

actions lex 
{
}
