-- -*- coding: utf-8; mode: haskell; -*- -- File: library/Language/Ninja.hs -- -- License: -- Copyright 2017 Awake Security -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. {-# OPTIONS_GHC -fno-warn-missing-import-lists #-} -- | -- Module : Language.Ninja -- Copyright : Copyright 2017 Awake Security -- License : Apache-2.0 -- Maintainer : opensource@awakesecurity.com -- Stability : experimental -- -- Tools for parsing, pretty-printing, and compiling the Ninja build language. -- -- This module re-exports some of the modules under the "Language.Ninja" -- namespace for convenience. -- -- Take a look at "Language.Ninja.Tutorial" for a tutorial on how to use this -- library. If you just want to dive in, I recommend reading these modules -- in the following order: -- -- 1. Skim "Language.Ninja.Misc", "Language.Ninja.Mock", -- and "Language.Ninja.Errors" for familiarity with types and values -- that are used all over this library. -- 2. Check out "Language.Ninja.Lexer" and then "Language.Ninja.Parser" to -- get an idea for what is possible with the lexer/parser API. -- 3. Read "Language.Ninja.AST" to understand what the parsed AST looks like. -- 4. Read "Language.Ninja.Compile" to see what the AST-to-IR compiler does. -- 5. Read "Language.Ninja.IR" to understand what the compiled IR looks like. -- 6. Read "Language.Ninja.Pretty" to see what the pretty-printer is capable -- of (spoiler: not very much). -- -- If you are not already well-versed in the Ninja build language, it is also -- probably worth reading the Ninja -- . -- -- When importing from this library, I recommend the following style: -- -- > import qualified Language.Ninja as Ninja -- > import qualified Language.Ninja.AST as Ninja.AST -- > import qualified Language.Ninja.IR as Ninja.IR -- -- Happy hacking! -- -- @since 0.1.0 module Language.Ninja ( module Language.Ninja.Compile , module Language.Ninja.Lexer , module Language.Ninja.Parser , module Language.Ninja.Pretty , module Language.Ninja.Misc , module Language.Ninja.Mock ) where import Language.Ninja.Compile import Language.Ninja.Lexer import Language.Ninja.Misc import Language.Ninja.Mock import Language.Ninja.Parser import Language.Ninja.Pretty