packages feed

BNFC-2.9.5: BNFC.cabal

Name: BNFC
Version: 2.9.5
cabal-version: 2.0
  -- >=2.0  for build-tool-depends: hspec-discover
  -- Andreas, 2022-12-16, issue #429:
  -- Putting cabal-version: x.y could mean putting extra-deps: [Cabal-x.y]
  -- into stack-a.b.c.yaml if that snapshot does not have Cabal at least x.y.
  -- This will then require a Setup.[l]hs file with stack even for build-type: Simple.
  -- Shunning this extra effort, we only support stack snapshot that have a sufficient Cabal.
build-type: Simple
category: Parsing
Copyright: (c) Andreas Abel, Jonas Almström Duregård, Krasimir Angelov, Jean-Philippe Bernardy, Björn Bringert, Johan Broberg, Kyle Butt, Paul Callaghan, Grégoire Détrez, Markus Forsberg, Ola Frid, Peter Gammie, Thomas Hallgren, Pascal Hof, Simon Huber, Patrik Jansson, Kristofer Johannisson, Antti-Juhani Kaijanaho, Andreas Lööw, Justin Meiners, Kent Mein, Ulf Norell, Gabriele Paganelli, Michael Pellauer, Michał Radwański, Fabian Ruch, and Aarne Ranta 2002 - 2023. Free software under the BSD 3-clause license.
License: BSD3
License-File: LICENSE
Maintainer: bnfc-dev@googlegroups.com
Homepage: https://bnfc.digitalgrammars.com/
bug-reports: https://github.com/BNFC/bnfc/issues
Synopsis: A compiler front-end generator.
Description:
  The BNF Converter is a compiler construction tool generating a compiler front-end
  from a Labelled BNF grammar. It was originally written to generate Haskell code,
  but can also be used for generating Agda, C, C++, Java, Ocaml and XML code.
  .
  Given a Labelled BNF grammar the tool produces:
  an abstract syntax as a Haskell, Agda, C, C++, Ocaml module or Java package,
  a case skeleton for the abstract syntax in the same language,
  an Alex, Flex, JLex, JFlex, or ocamllex lexer generator file,
  a Happy, CUP, Bison, Antlr, ocamlyacc or menhir parser generator file,
  a pretty-printer as a Haskell, Agda, C, C++, Java, or Ocaml module,
  an XML representation,
  a LaTeX file containing a readable specification of the language.

-- Support range when build with cabal
tested-with:
  GHC == 9.6.2
  GHC == 9.4.5
  GHC == 9.2.8
  GHC == 9.0.2
  GHC == 8.10.7
  GHC == 8.8.4
  GHC == 8.6.5
  GHC == 8.4.4
  GHC == 8.2.2
  GHC == 8.0.2
  GHC == 7.10.3

extra-doc-files:
  README.md
  CHANGELOG.md
  -- LICENSE is automatically included

extra-source-files:
  Makefile
  src/BNFC.cf
  src/Makefile
  -- Support range when build with stack
  stack-9.6.2.yaml
  stack-9.4.5.yaml
  stack-9.2.8.yaml
  stack-9.0.2.yaml
  stack-8.10.7.yaml
  stack-8.8.4.yaml
  stack-8.6.5.yaml
  stack-8.4.4.yaml
  stack-8.2.2.yaml

source-repository head
  type:     git
  location: https://github.com/BNFC/bnfc.git
  subdir:   source

executable bnfc
  default-language:  Haskell2010
  main-is:           Main.hs
  hs-source-dirs:    main
  build-depends:
    BNFC
    , base
  other-modules:
    -- Generated by cabal
    Paths_BNFC
  default-extensions:
    -- Keep in alphabetical order.
    LambdaCase

-- The library goal is there for internal reasons:
-- It gives us a dependency BNFC which we can use to steer the build order.
-- The bundling of the library saves us from compiling every module twice:
-- once for the executable, and once for unit-tests.
-- Now, both can depend on the library.

library
  default-language:
    Haskell2010
  build-depends:
      base        >= 4.8   && < 5
    , array
    , containers
    , deepseq
    , directory
    , filepath
    , mtl         >= 2.2.1
    , pretty      >= 1.1   && < 1.2
    , process
    , string-qq
    , time
    , transformers
        -- for Control.Monad.IO.Class, which is in base >= 4.9 but not below
  if impl(ghc < 8.0)
    build-depends:
      semigroups
  build-tool-depends:
    alex:alex,
    happy:happy
  hs-source-dirs:
    src
  ghc-options:
    -Wall
    -fno-warn-dodgy-imports
    -fno-warn-name-shadowing
    -- for cabal repl -w doctest :
    -- -fno-warn-type-defaults
  if impl(ghc >= 8.0)
    ghc-options:
      -Wcompat
  if impl(ghc >= 9.2)
    ghc-options:
      -Wno-incomplete-uni-patterns
  default-extensions:
    -- Keep the list of language extensions in sync with its other occurrences.
    -- Keep in alphabetical order.
    -- No CPP since doctest doesn't like it.
    DefaultSignatures
    DoAndIfThenElse
    FlexibleContexts
    FlexibleInstances
    LambdaCase
    MultiWayIf
    NamedFieldPuns
    OverloadedStrings
    PatternGuards
    RecordWildCards
    ScopedTypeVariables
    TupleSections
    TypeOperators
  -- 2021-01-22 The following autogen section seems wrong, breaks Haskell CI:
  -- E.g. https://github.com/BNFC/bnfc/runs/1750769442?check_suite_focus=true
  -- autogen-modules:
  --   -- Generated by cabal
  --   Paths_BNFC
  --   -- Generated by alex
  --   BNFC.Lex
  --   -- Generated by happy
  --   BNFC.Par
  other-modules:
    -- Generated by cabal
    Paths_BNFC
  exposed-modules:
    -- Generated from LICENSE
    BNFC.License
    -- Generated by bnfc
    BNFC.Abs
    BNFC.Lex
    BNFC.Par
    BNFC.Print
    -- BNFC core
    BNFC.Utils
    BNFC.CF
    BNFC.Check.EmptyTypes
    BNFC.Regex
    BNFC.TypeChecker
    BNFC.GetCF
    BNFC.Lexing
    BNFC.Backend.Base
    BNFC.Backend.Common
    BNFC.Backend.Common.Makefile
    BNFC.Backend.Common.NamedVariables
    BNFC.Backend.Common.OOAbstract
    BNFC.Backend.Common.StrUtils
    BNFC.Options
    BNFC.PrettyPrint

    -- Documentation backends
    BNFC.Backend.Latex
    BNFC.Backend.Txt2Tag

    -- Haskell backend
    BNFC.Backend.Haskell
    BNFC.Backend.Haskell.CFtoTemplate
    BNFC.Backend.Haskell.CFtoAlex3
    BNFC.Backend.Haskell.CFtoHappy
    BNFC.Backend.Haskell.CFtoPrinter
    BNFC.Backend.Haskell.CFtoAbstract
    BNFC.Backend.Haskell.CFtoLayout
    BNFC.Backend.Haskell.MkErrM
    BNFC.Backend.Haskell.HsOpts
    BNFC.Backend.Haskell.Utils
    -- Haskell GADT
    BNFC.Backend.HaskellGADT
    BNFC.Backend.HaskellGADT.HaskellGADTCommon
    BNFC.Backend.HaskellGADT.CFtoTemplateGADT
    BNFC.Backend.HaskellGADT.CFtoAbstractGADT

    -- O'Caml backend
    BNFC.Backend.OCaml
    BNFC.Backend.OCaml.OCamlUtil
    BNFC.Backend.OCaml.CFtoOCamlTest
    BNFC.Backend.OCaml.CFtoOCamlShow
    BNFC.Backend.OCaml.CFtoOCamlPrinter
    BNFC.Backend.OCaml.CFtoOCamlTemplate
    BNFC.Backend.OCaml.CFtoOCamlAbs
    BNFC.Backend.OCaml.CFtoOCamlYacc
    BNFC.Backend.OCaml.CFtoOCamlLex

    -- C backend
    BNFC.Backend.C
    BNFC.Backend.C.Common
    BNFC.Backend.C.CFtoCPrinter
    BNFC.Backend.C.CFtoCSkel
    BNFC.Backend.C.CFtoBisonC
    BNFC.Backend.C.CFtoFlexC
    BNFC.Backend.C.CFtoCAbs
    BNFC.Backend.C.RegToFlex

    -- C++ backend
    BNFC.Backend.CPP.Common
    BNFC.Backend.CPP.PrettyPrinter
    BNFC.Backend.CPP.Makefile
    BNFC.Backend.CPP.Naming
    BNFC.Backend.CPP.NoSTL
    BNFC.Backend.CPP.NoSTL.CFtoCPPAbs

    -- C++ STL backend
    BNFC.Backend.CPP.STL
    BNFC.Backend.CPP.STL.CFtoSTLAbs
    BNFC.Backend.CPP.STL.STLUtils
    BNFC.Backend.CPP.STL.CFtoCVisitSkelSTL

    -- Java backend
    BNFC.Backend.Java
    BNFC.Backend.Java.CFtoAntlr4Lexer
    BNFC.Backend.Java.CFtoAntlr4Parser
    BNFC.Backend.Java.CFtoJavaAbs15
    BNFC.Backend.Java.CFtoAllVisitor
    BNFC.Backend.Java.CFtoFoldVisitor
    BNFC.Backend.Java.CFtoAbstractVisitor
    BNFC.Backend.Java.CFtoComposVisitor
    BNFC.Backend.Java.CFtoVisitSkel15
    BNFC.Backend.Java.CFtoJavaPrinter15
    BNFC.Backend.Java.CFtoJLex15
    BNFC.Backend.Java.CFtoCup15
    BNFC.Backend.Java.RegToJLex
    BNFC.Backend.Java.RegToAntlrLexer
    BNFC.Backend.Java.Utils

    -- XML backend
    BNFC.Backend.XML

    -- Pygments backend
    BNFC.Backend.Pygments

    -- Agda backend
    BNFC.Backend.Agda

----- Testing --------------------------------------------------------------

test-suite unit-tests
  default-language:
    Haskell2010
  type:
    exitcode-stdio-1.0
  build-depends:
    BNFC,
    -- base-4.9 would be needed for Show1 needed for Show WriterT
    base,
    mtl,
    directory,
    array,
    process,
    filepath,
    pretty,
    hspec,
    QuickCheck >= 2.5,
    HUnit,
    temporary,
    containers,
    deepseq,
    string-qq,
    time
  if impl(ghc < 8.0)
    build-depends:
      semigroups
  build-tool-depends:
    alex:alex,
    happy:happy,
    hspec-discover:hspec-discover
  main-is:
    unit-tests.hs
  hs-source-dirs:
    test
  ghc-options:
    -W
    -- TODO: -Wall
    -fno-warn-name-shadowing
  if impl(ghc >= 8.0)
    ghc-options:
      -Wcompat
  default-extensions:
    -- Keep in alphabetical order.
    LambdaCase
    OverloadedStrings
  other-modules:
    BNFC.CFSpec
    BNFC.GetCFSpec
    BNFC.OptionsSpec
    BNFC.Hspec
    BNFC.Backend.BaseSpec
    BNFC.Backend.Common.MakefileSpec
    BNFC.Backend.Common.NamedVariablesSpec
    BNFC.Backend.CPP.NoSTLSpec
    BNFC.Backend.CPP.STLSpec
    BNFC.Backend.CSpec
    BNFC.Backend.HaskellSpec
    BNFC.Backend.HaskellGADTSpec
    BNFC.Backend.Haskell.CFtoHappySpec
    BNFC.Backend.JavaSpec
    BNFC.Backend.LatexSpec
    BNFC.Backend.OCamlSpec
    -- Generated by cabal
    Paths_BNFC
  autogen-modules:
    -- Generated by cabal
    Paths_BNFC