on master help sign in
Update parser for AST shuffle
9d6d260Evan Czaplicki
src/Parse/Declaration.hs+2−3
@@ -9,8 +9,7 @@ module Parse.Declaration
9import Data.Text (Text)
9import Data.Text (Text)
10import qualified Data.Text.Encoding as Text
10import qualified Data.Text.Encoding as Text
11
11
12−import qualified AST.Expression.Source as Src
12+import qualified AST.Source as Src
13−import qualified AST.Type as Type
14import qualified Parse.Expression as Expr
13import qualified Parse.Expression as Expr
15import qualified Parse.Pattern as Pattern
14import qualified Parse.Pattern as Pattern
16import Parse.Primitives
15import Parse.Primitives
@@ -132,7 +131,7 @@ nameArgsEqualsHelp name args =
132 ]
131 ]
133
132
134
133
135−chompConstructors :: [(A.Located Text, [Type.Raw])] -> R.Position -> SPos -> SParser [(A.Located Text, [Type.Raw])]
134+chompConstructors :: [(A.Located Text, [Src.Type])] -> R.Position -> SPos -> SParser [(A.Located Text, [Src.Type])]
136chompConstructors ctors end pos =
135chompConstructors ctors end pos =
137 oneOf
136 oneOf
138 [ do checkSpace pos
137 [ do checkSpace pos
src/Parse/Expression.hs+1−1
@@ -8,7 +8,7 @@ module Parse.Expression
8
8
9import Control.Monad (guard)
9import Control.Monad (guard)
10
10
11−import qualified AST.Expression.Source as Src
11+import qualified AST.Source as Src
12import qualified Elm.Name as N
12import qualified Elm.Name as N
13import Parse.Primitives
13import Parse.Primitives
14import qualified Parse.Primitives.Keyword as Keyword
14import qualified Parse.Primitives.Keyword as Keyword
src/Parse/Kernel.hs+2−2
@@ -14,8 +14,8 @@ import qualified Data.Text as Text
14import qualified Data.Text.Encoding as Text
14import qualified Data.Text.Encoding as Text
15import Data.Word (Word8)
15import Data.Word (Word8)
16
16
17−import qualified AST.Expression.Source as Src
17+import qualified AST.Source as Src
18−import qualified AST.Kernel as Kernel
18+import qualified AST.Utils.Kernel as Kernel
19import qualified AST.Module.Name as ModuleName
19import qualified AST.Module.Name as ModuleName
20import qualified Elm.Name as N
20import qualified Elm.Name as N
21import Generate.JavaScript.Helpers as Help (toFieldName)
21import Generate.JavaScript.Helpers as Help (toFieldName)
src/Parse/Module.hs+1−1
@@ -11,7 +11,7 @@ module Parse.Module
11import qualified Data.ByteString as B
11import qualified Data.ByteString as B
12import Data.Text (Text)
12import Data.Text (Text)
13
13
14−import qualified AST.Expression.Source as Src
14+import qualified AST.Source as Src
15import qualified Elm.Name as N
15import qualified Elm.Name as N
16import Parse.Primitives (Parser, oneOf)
16import Parse.Primitives (Parser, oneOf)
17import qualified Parse.Primitives as P
17import qualified Parse.Primitives as P
src/Parse/Parse.hs+2−2
@@ -7,8 +7,8 @@ module Parse.Parse
7
7
8import qualified Data.ByteString as B
8import qualified Data.ByteString as B
9
9
10−import qualified AST.Expression.Source as Src
10+import qualified AST.Source as Src
11−import qualified AST.Expression.Valid as Valid
11+import qualified AST.Valid as Valid
12import qualified Parse.Declaration as Decl
12import qualified Parse.Declaration as Decl
13import qualified Parse.Module as Module
13import qualified Parse.Module as Module
14import qualified Parse.Primitives as P
14import qualified Parse.Primitives as P
src/Parse/Pattern.hs+1−1
@@ -9,7 +9,7 @@ module Parse.Pattern
9
9
10import qualified Data.List as List
10import qualified Data.List as List
11
11
12−import qualified AST.Expression.Source as Src
12+import qualified AST.Source as Src
13import qualified Elm.Name as N
13import qualified Elm.Name as N
14import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
14import Parse.Primitives (Parser, SParser, SPos, addLocation, checkSpace, getPosition, hint, inContext, spaces, oneOf)
15import qualified Parse.Primitives.Keyword as Keyword
15import qualified Parse.Primitives.Keyword as Keyword
src/Parse/Repl.hs+1−1
@@ -11,7 +11,7 @@ import qualified Data.ByteString.UTF8 as Utf8
11import qualified Data.Text as Text
11import qualified Data.Text as Text
12import Data.Text (Text)
12import Data.Text (Text)
13
13
14−import qualified AST.Expression.Source as Src
14+import qualified AST.Source as Src
15import Parse.Primitives
15import Parse.Primitives
16import qualified Parse.Primitives.Keyword as Keyword
16import qualified Parse.Primitives.Keyword as Keyword
17import qualified Parse.Primitives.Symbol as Symbol
17import qualified Parse.Primitives.Symbol as Symbol
src/Parse/Shader.hs+2−2
@@ -13,8 +13,8 @@ import qualified Language.GLSL.Syntax as GLS
13import qualified Text.Parsec as Parsec
13import qualified Text.Parsec as Parsec
14import qualified Text.Parsec.Error as Parsec
14import qualified Text.Parsec.Error as Parsec
15
15
16−import qualified AST.Expression.Source as Src
16+import qualified AST.Source as Src
17−import qualified AST.Shader as Shader
17+import qualified AST.Utils.Shader as Shader
18import qualified Reporting.Annotation as A
18import qualified Reporting.Annotation as A
19import qualified Reporting.Region as R
19import qualified Reporting.Region as R
20import Parse.Primitives (Parser, getPosition)
20import Parse.Primitives (Parser, getPosition)
src/Parse/Type.hs+21−21
@@ -4,7 +4,7 @@ module Parse.Type (expression, unionConstructor) where
4
4
5import Data.Text (Text)
5import Data.Text (Text)
6
6
7−import qualified AST.Type as Type
7+import qualified AST.Source as Src
8import Parse.Primitives (Parser, SParser, addLocation, checkSpace, getPosition, hint, spaces, oneOf)
8import Parse.Primitives (Parser, SParser, addLocation, checkSpace, getPosition, hint, spaces, oneOf)
9import qualified Parse.Primitives as P
9import qualified Parse.Primitives as P
10import qualified Parse.Primitives.Symbol as Symbol
10import qualified Parse.Primitives.Symbol as Symbol
@@ -20,7 +20,7 @@ import qualified Reporting.Region as R
20-- TYPE TERMS
20-- TYPE TERMS
21
21
22
22
23−term :: Parser Type.Raw
23+term :: Parser Src.Type
24term =
24term =
25 hint E.Type $
25 hint E.Type $
26 do start <- getPosition
26 do start <- getPosition
@@ -36,18 +36,18 @@ term =
36-- TYPE VARIABLES
36-- TYPE VARIABLES
37
37
38
38
39−variable :: R.Position -> Parser Type.Raw
39+variable :: R.Position -> Parser Src.Type
40variable start =
40variable start =
41 do var <- Var.lower
41 do var <- Var.lower
42 end <- getPosition
42 end <- getPosition
43− return (A.at start end (Type.RVar var))
43+ return (A.at start end (Src.TVar var))
44
44
45
45
46
46
47-- TYPE EXPRESSIONS
47-- TYPE EXPRESSIONS
48
48
49
49
50−expression :: SParser Type.Raw
50+expression :: SParser Src.Type
51expression =
51expression =
52 hint E.Type $
52 hint E.Type $
53 do start <- getPosition
53 do start <- getPosition
@@ -61,7 +61,7 @@ expression =
61 Symbol.rightArrow
61 Symbol.rightArrow
62 spaces
62 spaces
63 (tipe2, end2, pos2) <- expression
63 (tipe2, end2, pos2) <- expression
64− let tipe = A.at start end2 (Type.RLambda tipe1 tipe2)
64+ let tipe = A.at start end2 (Src.TLambda tipe1 tipe2)
65 return ( tipe, end2, pos2 )
65 return ( tipe, end2, pos2 )
66 , return ( tipe1, end1, pos1 )
66 , return ( tipe1, end1, pos1 )
67 ]
67 ]
@@ -71,26 +71,26 @@ expression =
71-- TYPE CONSTRUCTORS
71-- TYPE CONSTRUCTORS
72
72
73
73
74−app0 :: Parser Type.Raw
74+app0 :: Parser Src.Type
75app0 =
75app0 =
76 do start <- getPosition
76 do start <- getPosition
77 (maybeQualifier, name) <- Var.foreignUpper
77 (maybeQualifier, name) <- Var.foreignUpper
78 end <- getPosition
78 end <- getPosition
79 return $ A.at start end $
79 return $ A.at start end $
80− Type.RType (R.Region start end) maybeQualifier name []
80+ Src.TType (R.Region start end) maybeQualifier name []
81
81
82
82
83−app :: R.Position -> SParser Type.Raw
83+app :: R.Position -> SParser Src.Type
84app start =
84app start =
85 do (maybeQualifier, name) <- Var.foreignUpper
85 do (maybeQualifier, name) <- Var.foreignUpper
86 nameEnd <- getPosition
86 nameEnd <- getPosition
87 namePos <- whitespace
87 namePos <- whitespace
88 (args, end, pos) <- eatArgs [] nameEnd namePos
88 (args, end, pos) <- eatArgs [] nameEnd namePos
89− let tipe = Type.RType (R.Region start nameEnd) maybeQualifier name args
89+ let tipe = Src.TType (R.Region start nameEnd) maybeQualifier name args
90 return ( A.at start end tipe, end, pos )
90 return ( A.at start end tipe, end, pos )
91
91
92
92
93−unionConstructor :: SParser (A.Located Text, [Type.Raw])
93+unionConstructor :: SParser (A.Located Text, [Src.Type])
94unionConstructor =
94unionConstructor =
95 do start <- getPosition
95 do start <- getPosition
96 name <- Var.upper
96 name <- Var.upper
@@ -100,7 +100,7 @@ unionConstructor =
100 return ( (A.at start nameEnd name, args), end, pos )
100 return ( (A.at start nameEnd name, args), end, pos )
101
101
102
102
103−eatArgs :: [Type.Raw] -> R.Position -> SPos -> SParser [Type.Raw]
103+eatArgs :: [Src.Type] -> R.Position -> SPos -> SParser [Src.Type]
104eatArgs args end pos =
104eatArgs args end pos =
105 oneOf
105 oneOf
106 [ do checkSpace pos
106 [ do checkSpace pos
@@ -116,14 +116,14 @@ eatArgs args end pos =
116-- TUPLES
116-- TUPLES
117
117
118
118
119−tuple :: R.Position -> Parser Type.Raw
119+tuple :: R.Position -> Parser Src.Type
120tuple start =
120tuple start =
121 do Symbol.leftParen
121 do Symbol.leftParen
122 P.inContext start E.TypeTuple $
122 P.inContext start E.TypeTuple $
123 oneOf
123 oneOf
124 [ do Symbol.rightParen
124 [ do Symbol.rightParen
125 end <- getPosition
125 end <- getPosition
126− return (A.at start end Type.RUnit)
126+ return (A.at start end Src.TUnit)
127 , do spaces
127 , do spaces
128 (tipe, _, pos) <- expression
128 (tipe, _, pos) <- expression
129 checkSpace pos
129 checkSpace pos
@@ -131,7 +131,7 @@ tuple start =
131 ]
131 ]
132
132
133
133
134−tupleEnding :: R.Position -> Type.Raw -> [Type.Raw] -> Parser Type.Raw
134+tupleEnding :: R.Position -> Src.Type -> [Src.Type] -> Parser Src.Type
135tupleEnding start firstType revTypes =
135tupleEnding start firstType revTypes =
136 oneOf
136 oneOf
137 [ do Symbol.comma
137 [ do Symbol.comma
@@ -147,7 +147,7 @@ tupleEnding start firstType revTypes =
147
147
148 secondType : otherTypes ->
148 secondType : otherTypes ->
149 return $ A.at start end $
149 return $ A.at start end $
150− Type.RTuple firstType secondType otherTypes
150+ Src.TTuple firstType secondType otherTypes
151 ]
151 ]
152
152
153
153
@@ -155,7 +155,7 @@ tupleEnding start firstType revTypes =
155-- RECORD
155-- RECORD
156
156
157
157
158−record :: R.Position -> Parser Type.Raw
158+record :: R.Position -> Parser Src.Type
159record start =
159record start =
160 do Symbol.leftCurly
160 do Symbol.leftCurly
161 P.inContext start E.TypeRecord $
161 P.inContext start E.TypeRecord $
@@ -163,7 +163,7 @@ record start =
163 oneOf
163 oneOf
164 [ do Symbol.rightCurly
164 [ do Symbol.rightCurly
165 end <- getPosition
165 end <- getPosition
166− return (A.at start end (Type.RRecord [] Nothing))
166+ return (A.at start end (Src.TRecord [] Nothing))
167 , do var <- addLocation Var.lower
167 , do var <- addLocation Var.lower
168 spaces
168 spaces
169 oneOf
169 oneOf
@@ -172,19 +172,19 @@ record start =
172 firstField <- field
172 firstField <- field
173 fields <- chompFields [firstField]
173 fields <- chompFields [firstField]
174 end <- getPosition
174 end <- getPosition
175− return (A.at start end (Type.RRecord fields (Just (A.map Type.RVar var))))
175+ return (A.at start end (Src.TRecord fields (Just (A.map Src.TVar var))))
176 , do Symbol.hasType
176 , do Symbol.hasType
177 spaces
177 spaces
178 (tipe, _, nextPos) <- expression
178 (tipe, _, nextPos) <- expression
179 checkSpace nextPos
179 checkSpace nextPos
180 fields <- chompFields [(var, tipe)]
180 fields <- chompFields [(var, tipe)]
181 end <- getPosition
181 end <- getPosition
182− return (A.at start end (Type.RRecord fields Nothing))
182+ return (A.at start end (Src.TRecord fields Nothing))
183 ]
183 ]
184 ]
184 ]
185
185
186
186
187−type Field = ( A.Located Text, Type.Raw )
187+type Field = ( A.Located Text, Src.Type )
188
188
189
189
190chompFields :: [Field] -> Parser [Field]
190chompFields :: [Field] -> Parser [Field]