mirror of
https://github.com/gren-lang/compiler.git
synced 2024-10-26 09:50:44 +03:00
Remove shader references from parser ast.
This commit is contained in:
parent
abb35eb321
commit
9d75b0f16d
@ -22,7 +22,6 @@ module AST.Optimized
|
||||
where
|
||||
|
||||
import qualified AST.Canonical as Can
|
||||
import qualified AST.Utils.Shader as Shader
|
||||
import Control.Monad (liftM, liftM2, liftM3, liftM4)
|
||||
import Data.Binary (Binary, get, getWord8, put, putWord8)
|
||||
import qualified Data.Index as Index
|
||||
@ -67,7 +66,6 @@ data Expr
|
||||
| Record (Map.Map Name Expr)
|
||||
| Unit
|
||||
| Tuple Expr Expr (Maybe Expr)
|
||||
| Shader Shader.Source (Set.Set Name) (Set.Set Name)
|
||||
|
||||
data Global = Global ModuleName.Canonical Name
|
||||
|
||||
@ -235,7 +233,6 @@ instance Binary Expr where
|
||||
Record a -> putWord8 23 >> put a
|
||||
Unit -> putWord8 24
|
||||
Tuple a b c -> putWord8 25 >> put a >> put b >> put c
|
||||
Shader a b c -> putWord8 26 >> put a >> put b >> put c
|
||||
|
||||
get =
|
||||
do
|
||||
@ -267,7 +264,6 @@ instance Binary Expr where
|
||||
23 -> liftM Record get
|
||||
24 -> pure Unit
|
||||
25 -> liftM3 Tuple get get get
|
||||
26 -> liftM3 Shader get get get
|
||||
_ -> fail "problem getting Opt.Expr binary"
|
||||
|
||||
instance Binary Def where
|
||||
|
@ -29,7 +29,6 @@ module AST.Source
|
||||
where
|
||||
|
||||
import qualified AST.Utils.Binop as Binop
|
||||
import qualified AST.Utils.Shader as Shader
|
||||
import Data.Name (Name)
|
||||
import qualified Data.Name as Name
|
||||
import qualified Gren.Float as EF
|
||||
@ -63,7 +62,6 @@ data Expr_
|
||||
| Record [(A.Located Name, Expr)]
|
||||
| Unit
|
||||
| Tuple Expr Expr [Expr]
|
||||
| Shader Shader.Source Shader.Types
|
||||
|
||||
data VarType = LowVar | CapVar
|
||||
|
||||
|
@ -1,72 +0,0 @@
|
||||
{-# LANGUAGE EmptyDataDecls #-}
|
||||
{-# OPTIONS_GHC -Wall #-}
|
||||
|
||||
module AST.Utils.Shader
|
||||
( Source,
|
||||
Types (..),
|
||||
Type (..),
|
||||
fromChars,
|
||||
toJsStringBuilder,
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Monad (liftM)
|
||||
import Data.Binary (Binary, get, put)
|
||||
import qualified Data.ByteString as BS
|
||||
import qualified Data.ByteString.Builder as B
|
||||
import qualified Data.ByteString.UTF8 as BS_UTF8
|
||||
import qualified Data.Map as Map
|
||||
import qualified Data.Name as Name
|
||||
|
||||
-- SOURCE
|
||||
|
||||
newtype Source
|
||||
= Source BS.ByteString
|
||||
|
||||
-- TYPES
|
||||
|
||||
data Types = Types
|
||||
{ _attribute :: Map.Map Name.Name Type,
|
||||
_uniform :: Map.Map Name.Name Type,
|
||||
_varying :: Map.Map Name.Name Type
|
||||
}
|
||||
|
||||
data Type
|
||||
= Int
|
||||
| Float
|
||||
| V2
|
||||
| V3
|
||||
| V4
|
||||
| M4
|
||||
| Texture
|
||||
|
||||
-- TO BUILDER
|
||||
|
||||
toJsStringBuilder :: Source -> B.Builder
|
||||
toJsStringBuilder (Source src) =
|
||||
B.byteString src
|
||||
|
||||
-- FROM CHARS
|
||||
|
||||
fromChars :: [Char] -> Source
|
||||
fromChars chars =
|
||||
Source (BS_UTF8.fromString (escape chars))
|
||||
|
||||
escape :: [Char] -> [Char]
|
||||
escape chars =
|
||||
case chars of
|
||||
[] ->
|
||||
[]
|
||||
c : cs
|
||||
| c == '\r' -> escape cs
|
||||
| c == '\n' -> '\\' : 'n' : escape cs
|
||||
| c == '\"' -> '\\' : '"' : escape cs
|
||||
| c == '\'' -> '\\' : '\'' : escape cs
|
||||
| c == '\\' -> '\\' : '\\' : escape cs
|
||||
| otherwise -> c : escape cs
|
||||
|
||||
-- BINARY
|
||||
|
||||
instance Binary Source where
|
||||
get = liftM Source get
|
||||
put (Source a) = put a
|
@ -127,9 +127,6 @@ canonicalize env (A.At region expression) =
|
||||
<$> canonicalize env a
|
||||
<*> canonicalize env b
|
||||
<*> canonicalizeTupleExtras region env cs
|
||||
Src.Shader _ _ ->
|
||||
-- TODO: Remove shaders from language
|
||||
Result.throw (Error.TupleLargerThanThree region)
|
||||
|
||||
-- CANONICALIZE TUPLE EXTRAS
|
||||
|
||||
|
@ -14,14 +14,12 @@ where
|
||||
|
||||
import qualified AST.Canonical as Can
|
||||
import qualified AST.Optimized as Opt
|
||||
import qualified AST.Utils.Shader as Shader
|
||||
import qualified Data.Index as Index
|
||||
import qualified Data.IntMap as IntMap
|
||||
import qualified Data.List as List
|
||||
import Data.Map ((!))
|
||||
import qualified Data.Map as Map
|
||||
import qualified Data.Name as Name
|
||||
import qualified Data.Set as Set
|
||||
import qualified Data.Utf8 as Utf8
|
||||
import qualified Generate.JavaScript.Builder as JS
|
||||
import qualified Generate.JavaScript.Name as JsName
|
||||
@ -149,20 +147,6 @@ generate mode expression =
|
||||
generateJsExpr mode b,
|
||||
generateJsExpr mode c
|
||||
]
|
||||
Opt.Shader src attributes uniforms ->
|
||||
let toTranlation field =
|
||||
( JsName.fromLocal field,
|
||||
JS.String (JsName.toBuilder (generateField mode field))
|
||||
)
|
||||
|
||||
toTranslationObject fields =
|
||||
JS.Object (map toTranlation (Set.toList fields))
|
||||
in JsExpr $
|
||||
JS.Object $
|
||||
[ (JsName.fromLocal "src", JS.String (Shader.toJsStringBuilder src)),
|
||||
(JsName.fromLocal "attributes", toTranslationObject attributes),
|
||||
(JsName.fromLocal "uniforms", toTranslationObject uniforms)
|
||||
]
|
||||
|
||||
-- CODE CHUNKS
|
||||
|
||||
|
@ -56,7 +56,6 @@ hasDebug expression =
|
||||
Opt.Record fs -> any hasDebug fs
|
||||
Opt.Unit -> False
|
||||
Opt.Tuple a b c -> hasDebug a || hasDebug b || maybe False hasDebug c
|
||||
Opt.Shader _ _ _ -> False
|
||||
|
||||
defHasDebug :: Opt.Def -> Bool
|
||||
defHasDebug def =
|
||||
@ -72,5 +71,3 @@ deciderHasDebug decider =
|
||||
Opt.Chain _ success failure -> deciderHasDebug success || deciderHasDebug failure
|
||||
Opt.FanOut _ tests fallback -> any (deciderHasDebug . snd) tests || deciderHasDebug fallback
|
||||
|
||||
-- TODO: FIND GLOBALLY UNUSED DEFINITIONS?
|
||||
-- TODO: FIND PACKAGE USAGE STATS? (e.g. gren/core = 142, author/project = 2, etc.)
|
||||
|
@ -120,7 +120,6 @@ Executable gren
|
||||
AST.Optimized
|
||||
AST.Source
|
||||
AST.Utils.Binop
|
||||
AST.Utils.Shader
|
||||
AST.Utils.Type
|
||||
Canonicalize.Effects
|
||||
Canonicalize.Environment
|
||||
|
Loading…
Reference in New Issue
Block a user