--- alex-2.0.orig/alex/doc/alex.sgml +++ alex-2.0/alex/doc/alex.sgml @@ -1330,8 +1330,8 @@ - Causes Alex to produce a parser which is optimised for - compiling with GHC. The parser will be significantly more + Causes Alex to produce a lexer which is optimised for + compiling with GHC. The lexer will be significantly more efficient, both in terms of the size of the compiled lexer and its runtime. @@ -1368,8 +1368,8 @@ - Be more verbose. This currently doesn't do - anything, but it might in the future. + Print version information on standard output then exit + successfully. --- alex-2.0.orig/alex/doc/alex.1.in +++ alex-2.0/alex/doc/alex.1.in @@ -0,0 +1,111 @@ +.TH ALEX 1 "2003-09-09" "Glasgow FP Suite" "Alex Lexical Analyser Generator" +.SH NAME +alex \- the lexical analyser generator for Haskell + +.SH SYNOPSIS +.B alex +[\fIOPTION\fR]... \fIfile\fR [\fIOPTION\fR]... + +.SH DESCRIPTION +This manual page documents briefly the +.BR alex +command. + +.PP +This manual page was written for the Debian GNU/Linux distribution +because the original program does not have a manual page. Instead, it +has documentation in various other formats, including DVI, Info and +HTML; see below. + +.PP +.B Alex +is a lexical analyser generator system for Haskell. It is similar to the +tool lex or flex for C/C++. + +.PP +Input files are expected to be of the form +.I file.x +and +.B alex +will produce output in +.I file.y + +.PP +Caveat: When using +.I hbc +(Chalmers Haskell) the command argument structure is slightly +different. This is because the hbc run time system takes some flags +as its own (for setting things like the heap size, etc). This problem +can be circumvented by adding a single dash (`-') to your command +line. So when using a hbc generated version of Alex, the argument +structure is: + +.B alex \- +[\fIOPTION\fR]... \fIfile\fR [\fIOPTION\fR]... + +.SH OPTIONS +The programs follow the usual GNU command line syntax, with long +options starting with two dashes (`--'). A summary of options is +included below. For a complete description, see the other +documentation. + +.TP +.BR \-d ", " \-\-debug +Instructs Alex to generate a lexer which will output debugging messsages +as it runs. + +.TP +.BR \-g ", " \-\-ghc +Instructs Alex to generate a lexer which is optimised for compiling with +GHC. The lexer will be significantly more efficient, both in terms of +the size of the compiled lexer and its runtime. + +.TP +\fB\-o\fR \fIFILE\fR, \fB\-\-outfile=\fIFILE +Specifies the filename in which the output is to be placed. By default, +this is the name of the input file with the +.I .x +suffix replaced by +.I .hs + +.TP +\fB\-i\fR [\fIFILE\fR], \fB\-\-info\fR[=\fIFILE\fR] +Produces a human-readable rendition of the state machine (DFA) that +Alex derives from the lexer, in +.I FILE +(default: +.I file.info +where the input file is +.I file.x +). + +The format of the info file is currently a bit basic, and not +particularly informative. + +.TP +.BR \-v ", " \-\-version +Print version information on standard output then exit successfully. + +.SH FILES +.I @LIBDIR@ + +.SH "SEE ALSO" +.BR @DOCDIR@ , +the Alex homepage +.UR http://haskell.org/alex/ +(http://haskell.org/alex/) +.UE + +.SH COPYRIGHT +Alex Version @VERSION@ + +Copyright (c) 1995-2003, Chris Dornan and Simon Marlow + +.SH AUTHOR +This manual page was written by Ian Lynagh +, based on the happy manpage, for the Debian GNU/Linux +system (but may be used by others). + +.\" Local variables: +.\" mode: nroff +.\" End: --- alex-2.0.orig/alex/src/Main.hs +++ alex-2.0/alex/src/Main.hs @@ -48,12 +48,11 @@ putStrLn copyright exitWith ExitSuccess (_,_,errors) -> do - prog <- getProgName - die (concat errors ++ usageInfo (usageHeader prog) argInfo) + die (concat errors ++ usageInfo usageHeader argInfo) copyright = "Alex version " ++ version ++ ", (c) 2003 Chris Dornan and Simon Marlow\n" -usageHeader prog = prog ++ " [OPTION...] file" +usageHeader = "alex [OPTION...] file" runAlex cli file = do basename <- case (reverse file) of --- alex-2.0.orig/alex/src/alex.sh +++ alex-2.0/alex/src/alex.sh @@ -5,6 +5,6 @@ # ALEXBIN case $* in -*--template*) $ALEXBIN $*;; -*) $ALEXBIN --template $ALEXLIB $*;; +*--template*) $ALEXBIN "$@";; +*) $ALEXBIN --template $ALEXLIB ${1+"$@"};; esac --- alex-2.0.orig/configure.in +++ alex-2.0/configure.in @@ -195,6 +195,33 @@ HostOS_CPP='mingw32' exeext='.exe' ;; +mips-*-linux*) + HostPlatform=mips-unknown-linux # hack again + TargetPlatform=mips-unknown-linux + BuildPlatform=mips-unknown-linux + HostPlatform_CPP='mips_unknown_linux' + HostArch_CPP='mips' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; +hppa*-*-linux*) + HostPlatform=hppa-unknown-linux # hack again + TargetPlatform=hppa-unknown-linux + BuildPlatform=hppa-unknown-linux + HostPlatform_CPP='hppa_unknown_linux' + HostArch_CPP='hppa' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; +arm*-linux*) + HostPlatform=arm-unknown-linux # hack again + TargetPlatform=arm-unknown-linux + BuildPlatform=arm-unknown-linux + HostPlatform_CPP='arm_unknown_linux' + HostArch_CPP='arm' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; ia64-*-linux*) HostPlatform=ia64-unknown-linux # hack again TargetPlatform=ia64-unknown-linux @@ -204,6 +231,15 @@ HostVendor_CPP='unknown' HostOS_CPP='linux' ;; +m68k-*-linux*) + HostPlatform=m68k-unknown-linux # hack again + TargetPlatform=m68k-unknown-linux + BuildPlatform=m68k-unknown-linux + HostPlatform_CPP='m68k_unknown_linux' + HostArch_CPP='m68k' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; m68k-next-nextstep2) HostPlatform_CPP='m68k_next_nextstep2' HostArch_CPP='m68k' @@ -294,6 +330,15 @@ HostVendor_CPP='apple' HostOS_CPP='darwin' ;; +powerpc-*-linux*) + HostPlatform=powerpc-unknown-linux + TargetPlatform=powerpc-unknown-linux + BuildPlatform=powerpc-unknown-linux + HostPlatform_CPP='powerpc_unknown_linux' + HostArch_CPP='powerpc' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; sparc-sun-sunos4*) HostPlatform=sparc-sun-sunos4 TargetPlatform=sparc-sun-sunos4 #hack @@ -312,6 +357,24 @@ HostVendor_CPP='sun' HostOS_CPP='solaris2' ;; +sparc*-unknown-linux*) + HostPlatform=sparc-unknown-linux + TargetPlatform=sparc-unknown-linux + BuildPlatform=sparc-unknown-linux + HostPlatform_CPP='sparc-unknown-linux' + HostArch_CPP='sparc' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; +s390-ibm-linux*) + HostPlatform=s390-ibm-linux + TargetPlatform=s390-ibm-linux #hack + BuildPlatform=s390-ibm-linux #hack + HostPlatform_CPP='s390_ibm_linux' + HostArch_CPP='s390' + HostVendor_CPP='ibm' + HostOS_CPP='linux' + ;; *) echo "Unrecognised platform: $HostPlatform" exit 1 @@ -646,7 +709,7 @@ dnl ** Find lex command (lex or flex) - *doesn't* use autoconf's dnl AC_PROG_LEX, since it doesn't actually check whether 'lex' dnl exists if 'flex' doesn't. -AC_PROG_LEX_STRICT +dnl AC_PROG_LEX_STRICT dnl ** figure out how to do a BSD-ish install AC_PROG_INSTALL --- alex-2.0.orig/configure +++ alex-2.0/configure @@ -1598,6 +1598,33 @@ HostOS_CPP='mingw32' exeext='.exe' ;; +mips-*-linux*) + HostPlatform=mips-unknown-linux # hack again + TargetPlatform=mips-unknown-linux + BuildPlatform=mips-unknown-linux + HostPlatform_CPP='mips_unknown_linux' + HostArch_CPP='mips' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; +hppa*-*-linux*) + HostPlatform=hppa-unknown-linux # hack again + TargetPlatform=hppa-unknown-linux + BuildPlatform=hppa-unknown-linux + HostPlatform_CPP='hppa_unknown_linux' + HostArch_CPP='hppa' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; +arm*-linux*) + HostPlatform=arm-unknown-linux # hack again + TargetPlatform=arm-unknown-linux + BuildPlatform=arm-unknown-linux + HostPlatform_CPP='arm_unknown_linux' + HostArch_CPP='arm' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; ia64-*-linux*) HostPlatform=ia64-unknown-linux # hack again TargetPlatform=ia64-unknown-linux @@ -1607,6 +1634,15 @@ HostVendor_CPP='unknown' HostOS_CPP='linux' ;; +m68k-*-linux*) + HostPlatform=m68k-unknown-linux # hack again + TargetPlatform=m68k-unknown-linux + BuildPlatform=m68k-unknown-linux + HostPlatform_CPP='m68k_unknown_linux' + HostArch_CPP='m68k' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; m68k-next-nextstep2) HostPlatform_CPP='m68k_next_nextstep2' HostArch_CPP='m68k' @@ -1697,6 +1733,15 @@ HostVendor_CPP='apple' HostOS_CPP='darwin' ;; +powerpc-*-linux*) + HostPlatform=powerpc-unknown-linux + TargetPlatform=powerpc-unknown-linux + BuildPlatform=powerpc-unknown-linux + HostPlatform_CPP='powerpc_unknown_linux' + HostArch_CPP='powerpc' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; sparc-sun-sunos4*) HostPlatform=sparc-sun-sunos4 TargetPlatform=sparc-sun-sunos4 #hack @@ -1715,6 +1760,24 @@ HostVendor_CPP='sun' HostOS_CPP='solaris2' ;; +sparc*-unknown-linux*) + HostPlatform=sparc-unknown-linux + TargetPlatform=sparc-unknown-linux + BuildPlatform=sparc-unknown-linux + HostPlatform_CPP='sparc-unknown-linux' + HostArch_CPP='sparc' + HostVendor_CPP='unknown' + HostOS_CPP='linux' + ;; +s390-ibm-linux*) + HostPlatform=s390-ibm-linux + TargetPlatform=s390-ibm-linux #hack + BuildPlatform=s390-ibm-linux #hack + HostPlatform_CPP='s390_ibm_linux' + HostArch_CPP='s390' + HostVendor_CPP='ibm' + HostOS_CPP='linux' + ;; *) echo "Unrecognised platform: $HostPlatform" exit 1 @@ -3769,82 +3832,82 @@ -# Extract the first word of "flex", so it can be a program name with args. -set dummy flex; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LEX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LEX="flex" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LEX=$ac_cv_prog_LEX -if test -n "$LEX"; then - echo "$as_me:$LINENO: result: $LEX" >&5 -echo "${ECHO_T}$LEX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test -z "$LEX" -then - # Extract the first word of "lex", so it can be a program name with args. -set dummy lex; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LEX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LEX="lex" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LEX=$ac_cv_prog_LEX -if test -n "$LEX"; then - echo "$as_me:$LINENO: result: $LEX" >&5 -echo "${ECHO_T}$LEX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -z "$LEX" && { { echo "$as_me:$LINENO: error: 'lex' or 'flex' is required to compile GHC." >&5 -echo "$as_me: error: 'lex' or 'flex' is required to compile GHC." >&2;} - { (exit 1); exit 1; }; } -fi +## Extract the first word of "flex", so it can be a program name with args. +#set dummy flex; ac_word=$2 +#echo "$as_me:$LINENO: checking for $ac_word" >&5 +#echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +#if test "${ac_cv_prog_LEX+set}" = set; then +# echo $ECHO_N "(cached) $ECHO_C" >&6 +#else +# if test -n "$LEX"; then +# ac_cv_prog_LEX="$LEX" # Let the user override the test. +#else +#as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +#for as_dir in $PATH +#do +# IFS=$as_save_IFS +# test -z "$as_dir" && as_dir=. +# for ac_exec_ext in '' $ac_executable_extensions; do +# if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +# ac_cv_prog_LEX="flex" +# echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +# break 2 +# fi +#done +#done +# +#fi +#fi +#LEX=$ac_cv_prog_LEX +#if test -n "$LEX"; then +# echo "$as_me:$LINENO: result: $LEX" >&5 +#echo "${ECHO_T}$LEX" >&6 +#else +# echo "$as_me:$LINENO: result: no" >&5 +#echo "${ECHO_T}no" >&6 +#fi +# +#if test -z "$LEX" +#then +# # Extract the first word of "lex", so it can be a program name with args. +#set dummy lex; ac_word=$2 +#echo "$as_me:$LINENO: checking for $ac_word" >&5 +#echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +#if test "${ac_cv_prog_LEX+set}" = set; then +# echo $ECHO_N "(cached) $ECHO_C" >&6 +#else +# if test -n "$LEX"; then +# ac_cv_prog_LEX="$LEX" # Let the user override the test. +#else +#as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +#for as_dir in $PATH +#do +# IFS=$as_save_IFS +# test -z "$as_dir" && as_dir=. +# for ac_exec_ext in '' $ac_executable_extensions; do +# if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +# ac_cv_prog_LEX="lex" +# echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +# break 2 +# fi +#done +#done +# +#fi +#fi +#LEX=$ac_cv_prog_LEX +#if test -n "$LEX"; then +# echo "$as_me:$LINENO: result: $LEX" >&5 +#echo "${ECHO_T}$LEX" >&6 +#else +# echo "$as_me:$LINENO: result: no" >&5 +#echo "${ECHO_T}no" >&6 +#fi +# +# test -z "$LEX" && { { echo "$as_me:$LINENO: error: 'lex' or 'flex' is required to compile GHC." >&5 +#echo "$as_me: error: 'lex' or 'flex' is required to compile GHC." >&2;} +# { (exit 1); exit 1; }; } +#fi # Find a good install program. We prefer a C program (faster), --- alex-2.0.orig/debian/rules +++ alex-2.0/debian/rules @@ -0,0 +1,96 @@ +#!/usr/bin/make -f +# debian/rules for alex +# This file is public domain software, originally written by Joey Hess. +# Adapted for alex by Ian Lynagh. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +version := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \([^-]*\)-.*/\1/p') +docdir := `pwd`/debian/`dh_listpackages`/usr/share/doc/alex +sgmldocindex := alex.html + +build: build-stamp +build-stamp: + dh_testdir + + touch configure + ./configure --prefix=/usr + $(MAKE) + $(MAKE) -C alex/doc ps html + sed -e "s#@LIBDIR@#/usr/lib/alex-$(version)#g" \ + -e "s#@DOCDIR@#/usr/share/doc/alex#g" \ + -e "s#@VERSION@#$(version)#g" \ + alex/doc/alex.1.in > alex/doc/alex.1 + echo ".so man1/alex.1" > debian/alex-$(version).1 + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + touch configure + -$(MAKE) distclean + rm -f alex/doc/alex.1 debian/alex-$(version).1 + rm -f mk/config.mk mk/config.h mk/stamp-h + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) prefix=`pwd`/debian/`dh_listpackages`/usr install + + mkdir -p $(docdir)/{sgml,dvi,ps,html} + cp alex/doc/*.sgml $(docdir)/sgml/ + cp alex/doc/*.dvi $(docdir)/dvi/ + cp alex/doc/*.ps $(docdir)/ps/ + cp -a alex/doc/alex/* $(docdir)/html/ + ln -s $(sgmldocindex) $(docdir)/html/index.html + cp -a alex/examples $(docdir) + +# Build architecture-independent files here. +binary-indep: build install + @: + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installcatalogs +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo +# dh_undocumented + dh_installman debian/alex-$(version).1 alex/doc/alex.1 + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install + --- alex-2.0.orig/debian/changelog +++ alex-2.0/debian/changelog @@ -0,0 +1,19 @@ +alex (2.0-2) unstable; urgency=low + + * Added s390, m68k, mips, hppa, arm and powerpc Linux to configure{,.in} + + -- Ian Lynagh (wibble) Wed, 01 Oct 2003 12:31:01 +0000 + +alex (2.0-1) unstable; urgency=low + + * Initial release. Closes: #151044. + * Changed configure{,.in} to not require flex. + * Wrote manpage for alex(1). + * Fix references to happy/parsers and version/verbose confusion in the docs. + * Changed wrapper to use $@ and ${1+"$@"} rather than $* + * When giving usage info, always use the name "alex" (otherwise + alex.bin is given). + * Add sparc case to configure{,.in}. + + -- Ian Lynagh (wibble) Tue, 09 Sep 2003 15:14:27 +0000 + --- alex-2.0.orig/debian/control +++ alex-2.0/debian/control @@ -0,0 +1,15 @@ +Source: alex +Section: devel +Priority: optional +Maintainer: Ian Lynagh (wibble) +Standards-Version: 3.5.6.0 +Build-Depends: debhelper (>= 4), ghc6 | ghc5 (>= 5.04), jade, docbook-utils + +Package: alex +Architecture: any +Depends: ${shlibs:Depends} +Description: lexical analyser generator for Haskell + Alex is a tool for generating lexical analysers in Haskell, given a + description of the tokens to be recognised in the form of regular + expressions. It is similar to the tool lex or flex for C/C++. + --- alex-2.0.orig/debian/compat +++ alex-2.0/debian/compat @@ -0,0 +1 @@ +4 --- alex-2.0.orig/debian/copyright +++ alex-2.0/debian/copyright @@ -0,0 +1,41 @@ +This package was originally debianized by Ian Lynagh +on 2003-09-08. + +It was downloaded from +http://www.haskell.org/alex/dist/alex-2.0-src.tar.bz2 + +Upstream Author: Simon Marlow (simonmar@microsoft.com) + +Copyright: + +The Glasgow Haskell Compiler License + +Copyright 1999, The University Court of the University of Glasgow. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +· Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +· Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +· Neither name of the University nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF +GLASGOW AND THE CONTRIBUTORS ÄS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE.