Question

J'écris un compilateur pour une classe que je prends. La classe n'est pas spécifiquement Haskell mais j'utilise Haskell d'écrire mon compilateur et interprète. J'ai une configuration de package cabale pour faire je l'espère, il est facile pour mon prof de course / compilation. Je heureux et alex dans le domaine build-outils pour les executables mais Cabal ne tient pas compte que et se plaint alors qu'il ne peut pas trouver les modules qui doivent être heureux générer et Alex. Si je lance manuellement:

alex LimpScanner.x
happy LimpParser.y

puis exécute la cabale parfaitement.

Je pensais cabale automatiquement les exécuter plus tôt, mais peut-être je me souviens mal.

limp.cabal:

-- limp.cabal auto-generated by cabal init. For additional options,
-- see
-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.
-- The name of the package.
Name:                limp

-- The package version. See the Haskell package versioning policy
-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
-- standards guiding when and how versions should be incremented.
Version:             0.1

-- A short (one-line) description of the package.
Synopsis:            LIMP Compiler (Compiler Construction course project)

-- A longer description of the package.
-- Description:         

-- URL for the project homepage or repository.
Homepage:            http://www.cs.rit.edu/~eca7215/limp/

-- The license under which the package is released.
License:             AllRightsReserved

-- The file containing the license text.
License-file:        LICENSE

-- The package author(s).
Author:              Edward Amsden

-- An email address to which users can send suggestions, bug reports,
-- and patches.
Maintainer:          eca7215@cs.rit.edu

-- A copyright notice.
-- Copyright:           

Category:            Language

Build-type:          Simple

-- Extra files to be distributed with the package, such as examples or
-- a README.
-- Extra-source-files:  

-- Constraint on the version of Cabal needed to build this package.
Cabal-version:       >=1.2


Executable limp
  -- .hs or .lhs file containing the Main module.
  Main-is: Limp.hs

  hs-source-dirs: src     

  -- Packages needed in order to build this package.
  Build-depends: base, array, haskell98     

  -- Modules not exported by this package.
  -- Other-modules:       

  -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.
  Build-tools:         alex, happy
Executable limpi
  Main-is: LimpInterpreter.hs
  hs-source-dirs: src
  Build-depends: base, array, haskell98
  Build-tools: alex, happy

mise en page Répertoire:

limp/
├── Setup.hs
├── limp.cabal
└── src/
    ├── Limp.hs
    ├── LimpInterpreter.hs
    ├── LimpParser.ly
    ├── LimpScanner.x
    └── LimpToken.hs
Était-ce utile?

La solution 2

Apparemment, ce que je ne manquait en fait les autres modules: champ. Une fois que cela a été ajouté, Cabal heureusement (pardonnez le jeu de mots) construit mon interprète.

Autres conseils

Pour Warren Harris et d'autres comme lui (et moi-même) qui peuvent venir plus tard, d'autres modules doit être réglé à une liste de noms de modules qui (je suppose?) Devraient être construits par les outils répertoriés dans la construction -tools.

Alors, dans mon cas, les sections pertinentes de mon dossier .cabal a fini par ressembler à ceci:

build-tools:         alex, happy
other-modules:       Language.Heidi.Parser,
                     Language.Heidi.Lexer
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top