diff options
author | Daniil Baturin <daniil@baturin.org> | 2020-10-05 01:18:05 +0700 |
---|---|---|
committer | David Peter <sharkdp@users.noreply.github.com> | 2020-10-04 21:25:05 +0200 |
commit | 88ea21b2762b3715d3816248953ed7f551cdaa7b (patch) | |
tree | 00ade3ef29826f74e1405bf05bfdf1e1305e9fd9 /tests | |
parent | 62397dbd0b49f4d9866423ddf8fb4f09aebb9d92 (diff) |
Add an SML syntax test file.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/syntax-tests/highlighted/SML/sample.sml | 47 | ||||
-rw-r--r-- | tests/syntax-tests/source/SML/sample.sml | 47 |
2 files changed, 94 insertions, 0 deletions
diff --git a/tests/syntax-tests/highlighted/SML/sample.sml b/tests/syntax-tests/highlighted/SML/sample.sml new file mode 100644 index 00000000..0c1d7037 --- /dev/null +++ b/tests/syntax-tests/highlighted/SML/sample.sml @@ -0,0 +1,47 @@ +[38;2;249;38;114mval[0m[38;2;248;248;242m x = [0m[38;2;190;132;255m0[0m + +[38;2;249;38;114mval[0m[38;2;248;248;242m hello = [0m[38;2;230;219;116m"hello world"[0m + +[38;2;249;38;114mval[0m[38;2;248;248;242m id = [0m[38;2;249;38;114mfn[0m[38;2;248;248;242m x [0m[38;2;190;132;255m=>[0m[38;2;248;248;242m x[0m + +[38;2;249;38;114mfun[0m[38;2;248;248;242m id' x = x[0m + +[38;2;249;38;114mval[0m[38;2;248;248;242m [0m[38;2;190;132;255m()[0m[38;2;248;248;242m = [0m[38;2;249;38;114mprint[0m[38;2;248;248;242m [0m[38;2;230;219;116m"hello world\n"[0m + +[38;2;249;38;114mval[0m[38;2;248;248;242m _ = [0m[38;2;249;38;114mlet[0m +[38;2;248;248;242m [0m[38;2;249;38;114mval[0m[38;2;248;248;242m hello = [0m[38;2;230;219;116m"hello"[0m +[38;2;248;248;242m [0m[38;2;249;38;114mval[0m[38;2;248;248;242m world = [0m[38;2;230;219;116m"world"[0m +[38;2;249;38;114min[0m +[38;2;248;248;242m [0m[38;2;249;38;114mprint[0m[38;2;248;248;242m (hello ^ [0m[38;2;230;219;116m" "[0m[38;2;248;248;242m ^ world ^ [0m[38;2;230;219;116m"\n"[0m[38;2;248;248;242m)[0m +[38;2;249;38;114mend[0m + +[38;2;249;38;114mfun[0m[38;2;248;248;242m isZero n =[0m +[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m n = [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;249;38;114mthen[0m[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m +[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;249;38;114mfalse[0m + +[38;2;249;38;114mfun[0m[38;2;248;248;242m isTrue b =[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcase[0m[38;2;248;248;242m b [0m[38;2;249;38;114mof[0m +[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m[38;2;248;248;242m [0m[38;2;190;132;255m=>[0m[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m +[38;2;248;248;242m | [0m[38;2;249;38;114mfalse[0m[38;2;248;248;242m [0m[38;2;190;132;255m=>[0m[38;2;248;248;242m [0m[38;2;249;38;114mfalse[0m + +[38;2;249;38;114mexception[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBad_value[0m[38;2;248;248;242m [0m[38;2;249;38;114mof[0m[38;2;248;248;242m [0m[38;2;249;38;114mstring[0m + +[38;2;249;38;114mfun[0m[38;2;248;248;242m isTrue' b =[0m +[38;2;248;248;242m [0m[38;2;249;38;114mcase[0m[38;2;248;248;242m b [0m[38;2;249;38;114mof[0m +[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m[38;2;248;248;242m [0m[38;2;190;132;255m=>[0m[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m +[38;2;248;248;242m | _ [0m[38;2;190;132;255m=>[0m[38;2;248;248;242m [0m[38;2;249;38;114mraise[0m[38;2;248;248;242m ([0m[3;38;2;166;226;46mBad_value[0m[38;2;248;248;242m [0m[38;2;230;219;116m"value is not true!"[0m[38;2;248;248;242m)[0m + +[38;2;249;38;114mval[0m[38;2;248;248;242m alwaysTrue =[0m +[38;2;248;248;242m isTrue' [0m[38;2;249;38;114mfalse[0m[38;2;248;248;242m [0m[38;2;249;38;114mhandle[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mBad_value[0m[38;2;248;248;242m _ [0m[38;2;190;132;255m=>[0m[38;2;248;248;242m [0m[38;2;249;38;114mtrue[0m + +[38;2;249;38;114mdatatype[0m[38;2;248;248;242m myBool = [0m[3;38;2;166;226;46mTrue[0m[38;2;248;248;242m | [0m[3;38;2;166;226;46mFalse[0m + +[38;2;249;38;114mdatatype[0m[38;2;248;248;242m shape = [0m[3;38;2;166;226;46mSquare[0m[38;2;248;248;242m [0m[38;2;249;38;114mof[0m[38;2;248;248;242m [0m[38;2;249;38;114mreal[0m[38;2;248;248;242m | [0m[3;38;2;166;226;46mCircle[0m[38;2;248;248;242m [0m[38;2;249;38;114mof[0m[38;2;248;248;242m [0m[38;2;249;38;114mreal[0m[38;2;248;248;242m | [0m[3;38;2;166;226;46mPoint[0m + +[38;2;249;38;114msignature[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mFOO[0m[38;2;248;248;242m = [0m[38;2;249;38;114msig[0m +[38;2;248;248;242m [0m[38;2;249;38;114mval[0m[38;2;248;248;242m foo : 'a [0m[38;2;190;132;255m->[0m[38;2;248;248;242m 'a[0m +[38;2;249;38;114mend[0m + +[38;2;249;38;114mstructure[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mFoo[0m[38;2;248;248;242m [0m[38;2;190;132;255m:>[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mFOO[0m[38;2;248;248;242m = [0m[38;2;249;38;114mstruct[0m +[38;2;248;248;242m [0m[38;2;249;38;114mfun[0m[38;2;248;248;242m foo x = x[0m +[38;2;249;38;114mend[0m diff --git a/tests/syntax-tests/source/SML/sample.sml b/tests/syntax-tests/source/SML/sample.sml new file mode 100644 index 00000000..17118ec0 --- /dev/null +++ b/tests/syntax-tests/source/SML/sample.sml @@ -0,0 +1,47 @@ +val x = 0 + +val hello = "hello world" + +val id = fn x => x + +fun id' x = x + +val () = print "hello world\n" + +val _ = let + val hello = "hello" + val world = "world" +in + print (hello ^ " " ^ world ^ "\n") +end + +fun isZero n = + if n = 0 then true + else false + +fun isTrue b = + case b of + true => true + | false => false + +exception Bad_value of string + +fun isTrue' b = + case b of + true => true + | _ => raise (Bad_value "value is not true!") + +val alwaysTrue = + isTrue' false handle Bad_value _ => true + +datatype myBool = True | False + +datatype shape = Square of real | Circle of real | Point + +signature FOO = sig + val foo : 'a -> 'a +end + +structure Foo :> FOO = struct + fun foo x = x +end |