-
Notifications
You must be signed in to change notification settings - Fork 25
GOOL GProc Overview
drasil-bot edited this page Aug 8, 2024
·
1 revision
Warning: Wiki should not be edited directly. Edit the files in the ./wiki/ folder instead and make a PR.
-
drasil-gool
exposes two modules:GOOL.hs
andGProc.hs
.GOOL.hs
exports everything that is strictly OO as well as everything that is common between OO and procedural. Likewise,GProc.hs
exports everything that is strictly procedural as well as everything that is common between OO and procedural. -
Drasil/GOOl
currently contains everything GOOL/GProc related. This may change as our restructuring continues, but is the current way things are.-
InterfaceCommon.hs
,InterfaceGOOL.hs
, andInterfaceProc.hs
define the main external interface, essentially the 'syntax' of GOOL/GProc. This consists of a bunch of typeclasses as well as some smart constructors. The typeclasses for each file are wrapped up in theSharedProg
,OOProg
, andProcProg
typeclasses, respectively. -
RendererClassesCommon.hs
,RendererClassesOO.hs
, andRendererClassesProc.hs
define an internal interface for renderingDoc
s. The typeclasses of each file are wrapped up inCommonRenderSym
,OORenderSym
, andProcRenderSym
, respectively. -
CodeInfoOO.hs
andCodeInfoProc.hs
are preprocessors which give the actual language renderers some extra information. They implementOOProg
andProcProg
respectively, but notOORenderSym
orProcRenderSym
. -
CodeType.hs
defines the types that values can have. -
Helpers.hs
provides some miscellaneous functions that are helpful in GOOL. Most of them have to do either with monads in general or with the state monad. -
LanguageRenderer.hs
gives some functions that are used by most renderers in their implementations. -
AST.hs
defines what information is kept about various GOOL/GProc constructs. Examples include the type of a value and the name of a variable. This is helpful for when you are given a value and need to know something about it. -
State.hs
gives theGOOLState
, which keeps track of everything that needs to be kept track of in GOOL/GProc. For example. the AST needs to be kept in theGOOLState
so that we can get information back out of GOOL/GProc constructs later. - There are a few others that you might come across, but these are the main ones.
-
-
Drasil/GOOL/LanguageRenderer
contains the language renderers, as well as modules containing function implementations that are common between multiple renderers.-
LanguagePolymorphic.hs
contains function implementations that are shared between all renderers. -
CLike.hs
contains function implementations for features that follow the 'classic C-like' structure. -
CommonPseudoOO.hs
contains function implementations where not all languages use that implementation, but there's no other pattern between them. -
AbstractProc.hs
contains function implementations that are only used by procedural languages. -
Macros.hs
gives implementations for functions that are just syntactic sugar - e.g. in Java, C#, and C++, alistSlice
translates to afor
-loop. -
Constructors.hs
gives more technical helper functions that have to do with creating values.
-
- Home
- Getting Started
- Documentation (of Drasil specifics)
- Design
-
Readings
- Drasil Papers and Documents
- Related Work and Inspiration
- Writing Documentation
- Compression as a Means to Learn Structure
- Glossary, Taxonomy, Ontology
- Grounded Theory
- Model Driven Scrapbook
- Model Transformation Languages
- ODE Definitions
- The Code Generator
- Suggested Reading
- Sustainability
- Productivity
- Reuse
- Formal Concept Analysis
- Generative Programming
- Software Documentation
- Units and Quantities
- Misc.
- WIP Projects