language-ats 1.7.8.0 → 1.7.9.0
raw patch · 8 files changed
+72/−4 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.ATS: DoubleLit :: Double -> Expression a
+ Language.ATS: DoubleTok :: AlexPosn -> Double -> Token
Files
- CHANGELOG.md +4/−0
- language-ats.cabal +1/−1
- src/Language/ATS/Lexer.x +7/−2
- src/Language/ATS/Parser.y +2/−0
- src/Language/ATS/PrettyPrint.hs +2/−1
- src/Language/ATS/Types.hs +2/−0
- test/data/spec.dats +27/−0
- test/data/spec.out +27/−0
CHANGELOG.md view
@@ -1,5 +1,9 @@ # language-ats +# 1.7.9.0++ * Support float literals as something other than double literals+ # 1.7.8.0 * Add support for unsigned hexadecimal literals
language-ats.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: language-ats-version: 1.7.8.0+version: 1.7.9.0 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018-2019 Vanessa McHale
src/Language/ATS/Lexer.x view
@@ -53,7 +53,8 @@ -- Floats @decimals = $digit+-@float = @decimals \. @decimals ("f" | "")+@float = @decimals \. @decimals "f"+@double = @decimals \. @decimals -- Strings @string = \" ($printable # [\"\\] | @escape_str | $esc_char | \\ \n | \n)* \"@@ -281,7 +282,8 @@ <0> @integer { tok (\p s -> alex $ IntTok p (read s)) } -- FIXME shouldn't fail silenty on overflow <0> "0x" $hex+ { tok (\p s -> alex $ HexIntTok p (drop 2 s)) } <0> "0x" $hex+ u { tok (\p s -> alex $ HexUintTok p (drop 2 (init s))) }- <0> @float { tok (\p s -> alex $ FloatTok p (read s)) }+ <0> @float { tok (\p s -> alex $ FloatTok p (read (init s))) }+ <0> @double { tok (\p s -> alex $ DoubleTok p (read s)) } <0> @char_lit { tok (\p s -> alex $ CharTok p (toChar s)) } <0> @string { tok (\p s -> alex $ StringTok p s) } @@ -434,6 +436,7 @@ | HexIntTok AlexPosn String | HexUintTok AlexPosn String | FloatTok AlexPosn Float+ | DoubleTok AlexPosn Double | CharTok AlexPosn Char | StringTok AlexPosn String | Special AlexPosn String@@ -565,6 +568,7 @@ pretty (HexIntTok _ hi) = "0x" <> text hi pretty (HexUintTok _ hi) = "0x" <> text hi <> "u" pretty (FloatTok _ x) = pretty x+ pretty (DoubleTok _ x) = pretty x pretty (CharTok _ c) = squotes (pretty c) pretty (StringTok _ s) = text s pretty (Special _ s) = text s@@ -600,6 +604,7 @@ token_posn (Keyword p _) = p token_posn (IntTok p _) = p token_posn (FloatTok p _) = p+token_posn (DoubleTok p _) = p token_posn (StringTok p _) = p token_posn (Special p _) = p token_posn (CBlockLex p _) = p
src/Language/ATS/Parser.y view
@@ -153,6 +153,7 @@ hexLit { HexIntTok _ $$ } hexULit { HexUintTok _ $$ } floatLit { FloatTok _ $$ }+ doubleLit { DoubleTok _ $$ } specialIdentifier { $$@SpecialIdentifier{} } foldAt { Identifier $$ "fold@" } identifier { $$@Identifier{} }@@ -350,6 +351,7 @@ | hexLit { HexLit $1 } | hexULit { HexUintLit $1 } | floatLit { FloatLit $1 }+ | doubleLit { DoubleLit $1 } | string { StringLit $1 } | charLit { CharLit $1 } | doubleParens { VoidLiteral $1 }
src/Language/ATS/PrettyPrint.hs view
@@ -139,7 +139,8 @@ a (HexUintLitF hi) = "0x" <> text hi <> "u" a (LambdaF _ lt p e) = prettyLam "lam" p lt e a (LinearLambdaF _ lt p e) = prettyLam "llam" p lt e- a (FloatLitF f) = pretty f+ a (FloatLitF f) = pretty f <> "f"+ a (DoubleLitF f) = pretty f a (StringLitF s) = text s -- FIXME escape indentation in multi-line strings. a (ParenExprF _ e) = parens e a (UnaryF op e) = pretty op <> pretty e
src/Language/ATS/Types.hs view
@@ -361,6 +361,7 @@ } | UintLit Natural -- ^ E.g. @1000u@ | FloatLit Float+ | DoubleLit Double | IntLit Integer | HexLit String | HexUintLit String@@ -415,6 +416,7 @@ | IfF x x (Maybe x) | UintLitF Natural | FloatLitF Float+ | DoubleLitF Double | IntLitF Integer | HexLitF String | HexUintLitF String
+ test/data/spec.dats view
@@ -0,0 +1,27 @@+#include "share/atspre_staload.hats"++staload "SATS/futhark.sats"+staload "SATS/futhark-arr.sats"+staload "SATS/futhark-stats.sats"+staload "SATS/futhark-linalg.sats"++implement main0 () =+ {+ val arr0 = $arrpsz{float} (1.0f, 2.0f, 3.0f)+ var arr1 = $arrpsz{float} (1.0f, 2.0f, 3.0f)+ val ctx_cfg = futhark_context_config_new()+ val ctx = futhark_context_new(ctx_cfg)+ val fut_arr0 = futhark_new_f32_1d(ctx, arr0, 3)+ val fut_arr1 = futhark_new_f32_1d(ctx, arr1, 3)+ var ret: float+ val _ = futhark_entry_mean_f32(ctx, ret, fut_arr0)+ val () = println!(ret)+ val _ = futhark_entry_dotprod_f32(ctx, ret, fut_arr0, fut_arr1)+ val () = println!(ret)+ val _ = futhark_free_f32_1d(ctx, fut_arr0)+ val _ = futhark_free_f32_1d(ctx, fut_arr1)+ val () = futhark_context_free(ctx)+ val () = futhark_context_config_free(ctx_cfg)+ val () = arrayptr_free (arr0)+ val () = arrayptr_free (arr1)+ }
+ test/data/spec.out view
@@ -0,0 +1,27 @@+#include "share/atspre_staload.hats"++staload "SATS/futhark.sats"+staload "SATS/futhark-arr.sats"+staload "SATS/futhark-stats.sats"+staload "SATS/futhark-linalg.sats"++implement main0 () =+ {+ val arr0 = $arrpsz{float}(1.0f, 2.0f, 3.0f)+ var arr1 = $arrpsz{float}(1.0f, 2.0f, 3.0f)+ val ctx_cfg = futhark_context_config_new()+ val ctx = futhark_context_new(ctx_cfg)+ val fut_arr0 = futhark_new_f32_1d(ctx, arr0, 3)+ val fut_arr1 = futhark_new_f32_1d(ctx, arr1, 3)+ var ret: float+ val _ = futhark_entry_mean_f32(ctx, ret, fut_arr0)+ val () = println!(ret)+ val _ = futhark_entry_dotprod_f32(ctx, ret, fut_arr0, fut_arr1)+ val () = println!(ret)+ val _ = futhark_free_f32_1d(ctx, fut_arr0)+ val _ = futhark_free_f32_1d(ctx, fut_arr1)+ val () = futhark_context_free(ctx)+ val () = futhark_context_config_free(ctx_cfg)+ val () = arrayptr_free(arr0)+ val () = arrayptr_free(arr1)+ }