@@ -1,5 +1,9 @@
1−{-# OPTIONS_GHC -Wall -fno-warn-unused-do-bind #-}
2−module Parse.Literal (literal, shader) where
1+{-# OPTIONS_GHC -Wall #-}
2+module Parse.Shader
3+ ( shader
4+ )
5+ where
6+
37
48import qualified Data.List as List
59import qualified Data.Map as Map
@@ -10,26 +14,11 @@ import qualified Text.Parsec as Parsec
1014import qualified Text.Parsec.Error as Parsec
1115
1216import qualified AST.Expression.Source as Src
13−import qualified AST.Literal as L
17+import qualified AST.Shader as Shader
1418import qualified Reporting.Annotation as A
1519import qualified Reporting.Region as R
16−import Parse.Primitives (Parser, getPosition, oneOf)
17−import qualified Parse.Primitives.Number as Number
20+import Parse.Primitives (Parser, getPosition)
1821import qualified Parse.Primitives.Shader as Shader
19−import qualified Parse.Primitives.Utf8 as Utf8
20−
21−
22−
23−-- LITERALS
24−
25−
26−literal :: Parser L.Literal
27−literal =
28− oneOf
29− [ L.Str <$> Utf8.string
30− , L.Chr <$> Utf8.character
31− , Number.number
32− ]
3322
3423
3524
@@ -42,10 +31,10 @@ shader start@(R.Position row col) =
4231 shdr <- parseSource row col (Text.unpack src)
4332 end@(R.Position row2 col2) <- getPosition
4433 let uid = List.intercalate ":" (map show [row, col, row2, col2])
45− return (A.at start end (Src.GLShader (Text.pack uid) src shdr))
34+ return (A.at start end (Src.Shader (Text.pack uid) src shdr))
4635
4736
48−parseSource :: Int -> Int -> String -> Parser L.Shader
37+parseSource :: Int -> Int -> String -> Parser Shader.Shader
4938parseSource startRow startCol src =
5039 case GLP.parse src of
5140 Right (GLS.TranslationUnit decls) ->
@@ -71,27 +60,27 @@ parseSource startRow startCol src =
7160 Shader.failure (startRow + row - 1) col (Text.pack msg)
7261
7362
74−emptyShader :: L.Shader
63+emptyShader :: Shader.Shader
7564emptyShader =
76− L.Shader Map.empty Map.empty Map.empty
65+ Shader.Shader Map.empty Map.empty Map.empty
7766
7867
79−addInput :: (GLS.StorageQualifier, L.GLType, Text.Text) -> L.Shader -> L.Shader
68+addInput :: (GLS.StorageQualifier, Shader.Type, Text.Text) -> Shader.Shader -> Shader.Shader
8069addInput ( qual, tipe, name ) glDecls =
8170 case qual of
8271 GLS.Attribute ->
83− glDecls { L.attribute = Map.insert name tipe (L.attribute glDecls) }
72+ glDecls { Shader._attribute = Map.insert name tipe (Shader._attribute glDecls) }
8473
8574 GLS.Uniform ->
86− glDecls { L.uniform = Map.insert name tipe (L.uniform glDecls) }
75+ glDecls { Shader._uniform = Map.insert name tipe (Shader._uniform glDecls) }
8776
8877 GLS.Varying ->
89− glDecls { L.varying = Map.insert name tipe (L.varying glDecls) }
78+ glDecls { Shader._varying = Map.insert name tipe (Shader._varying glDecls) }
9079
9180 _ -> error "Should never happen due to below filter"
9281
9382
94−extractInputs :: GLS.ExternalDeclaration -> [(GLS.StorageQualifier, L.GLType, Text.Text)]
83+extractInputs :: GLS.ExternalDeclaration -> [(GLS.StorageQualifier, Shader.Type, Text.Text)]
9584extractInputs decl =
9685 case decl of
9786 GLS.Declaration
@@ -106,12 +95,12 @@ extractInputs decl =
10695 False -> []
10796 True ->
10897 case tipe of
109− GLS.Vec2 -> [(qual, L.V2, Text.pack name)]
110− GLS.Vec3 -> [(qual, L.V3, Text.pack name)]
111− GLS.Vec4 -> [(qual, L.V4, Text.pack name)]
112− GLS.Mat4 -> [(qual, L.M4, Text.pack name)]
113− GLS.Int -> [(qual, L.Int, Text.pack name)]
114− GLS.Float -> [(qual, L.Float, Text.pack name)]
115− GLS.Sampler2D -> [(qual, L.Texture, Text.pack name)]
98+ GLS.Vec2 -> [(qual, Shader.V2, Text.pack name)]
99+ GLS.Vec3 -> [(qual, Shader.V3, Text.pack name)]
100+ GLS.Vec4 -> [(qual, Shader.V4, Text.pack name)]
101+ GLS.Mat4 -> [(qual, Shader.M4, Text.pack name)]
102+ GLS.Int -> [(qual, Shader.Int, Text.pack name)]
103+ GLS.Float -> [(qual, Shader.Float, Text.pack name)]
104+ GLS.Sampler2D -> [(qual, Shader.Texture, Text.pack name)]
116105 _ -> []
117106 _ -> []