File: AbstractSyntaxDump.ag

package info (click to toggle)
uuagc 0.9.56-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,764 kB
  • sloc: haskell: 84,340; makefile: 11
file content (76 lines) | stat: -rw-r--r-- 3,260 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
INCLUDE "AbstractSyntax.ag"
INCLUDE "Patterns.ag"
INCLUDE "Expression.ag"

imports
{
import Data.List
import qualified Data.Map as Map

import Pretty
import PPUtil

import AbstractSyntax
import TokenDef
}

ATTR AllPattern AllAbstractSyntax AllExpression [ | | pp USE {>-<} {empty} : PP_Doc ]

SEM Grammar
  | Grammar         lhs     .   pp      =   ppNestInfo ["Grammar","Grammar"] []
                                                       [ ppF "typeSyns" $ ppAssocL @typeSyns
                                                       , ppF "useMap" $ ppMap $ Map.map ppMap $ @useMap
                                                       , ppF "derivings" $ ppMap $ @derivings
                                                       , ppF "wrappers" $ ppShow $ @wrappers
                                                       , ppF "nonts" $ ppVList @nonts.ppL
                                                       ] []

SEM Nonterminal
  | Nonterminal     lhs     .   pp      =   ppNestInfo ["Nonterminal","Nonterminal"] (pp @nt : map pp @params) [ppF "inh" $ ppMap @inh, ppF "syn" $ ppMap @syn, ppF "prods" $ ppVList @prods.ppL] []

SEM Production
  | Production      lhs     .   pp      =   ppNestInfo ["Production","Production"] [pp @con] [ppF "children" $ ppVList @children.ppL,ppF "rules" $ ppVList @rules.ppL,ppF "typeSigs" $ ppVList @typeSigs.ppL] []

SEM Child
  | Child           lhs     .   pp      =   ppNestInfo ["Child","Child"] [pp @name, ppShow @tp] [ppF "kind" $ ppShow @kind] []

SEM Rule
  | Rule            lhs     .   pp      =   ppNestInfo ["Rule","Rule"] [ppShow @owrt, pp @origin] [ppF "pattern" $ @pattern.pp, ppF "rhs" $ @rhs.pp] []

SEM TypeSig
  | TypeSig         lhs     .   pp      =   ppNestInfo ["TypeSig","TypeSig"] [pp @name, ppShow @tp] [] []

SEM Pattern
  | Constr          lhs     .   pp      =   ppNestInfo ["Pattern","Constr"] [pp @name] [ppF "pats" $ ppVList @pats.ppL] []
  | Product         lhs     .   pp      =   ppNestInfo ["Pattern","Product"] [ppShow @pos] [ppF "pats" $ ppVList @pats.ppL] []
  | Alias           lhs     .   pp      =   ppNestInfo ["Pattern","Alias"] [pp @field, pp @attr] [ppF "pat" $ @pat.pp] []
  | Underscore      lhs     .   pp      =   ppNestInfo ["Pattern","Underscore"] [ppShow @pos] [] []

SEM Expression
  | Expression      lhs     .   pp      =   ppNestInfo ["Expression","Expression"] [ppShow @pos] [ppF "txt" $ vlist . showTokens . tokensToStrings $ @tks] []

ATTR Productions Nonterminals Children Rules TypeSigs Patterns [ | | ppL: {[PP_Doc]} ]

SEM Patterns
  | Cons            lhs     .   ppL     =   @hd.pp : @tl.ppL
  | Nil             lhs     .   ppL     =   []

SEM TypeSigs
  | Cons            lhs     .   ppL     =   @hd.pp : @tl.ppL
  | Nil             lhs     .   ppL     =   []

SEM Rules
  | Cons            lhs     .   ppL     =   @hd.pp : @tl.ppL
  | Nil             lhs     .   ppL     =   []

SEM Children
  | Cons            lhs     .   ppL     =   @hd.pp : @tl.ppL
  | Nil             lhs     .   ppL     =   []

SEM Productions
  | Cons            lhs     .   ppL     =   @hd.pp : @tl.ppL
  | Nil             lhs     .   ppL     =   []

SEM Nonterminals
  | Cons            lhs     .   ppL     =   @hd.pp : @tl.ppL
  | Nil             lhs     .   ppL     =   []