File: OpenSCAD_print.dats

package info (click to toggle)
ats2-lang 0.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 40,064 kB
  • sloc: ansic: 389,637; makefile: 7,123; lisp: 812; sh: 657; php: 573; python: 387; perl: 365
file content (108 lines) | stat: -rw-r--r-- 1,538 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
(* ****** ****** *)
//
// Author: Hongwei Xi
// Start time: May, 2017
// Authoremail: gmhwxiATgmailDOTcom
//
(* ****** ****** *)
(*
** For implementing
** a DSL that supports
** ATS and OpenSCAD co-programming
*)
(* ****** ****** *)
//
typedef
charptr =
$extype"atstype_string"
//
(* ****** ****** *)

#staload
UN = "prelude/SATS/unsafe.sats"

(* ****** ****** *)
//
#staload "./../SATS/OpenSCAD.sats"
//
(* ****** ****** *)
//
implement
fprint_scadarg
  (out, arg) =
(
case+ arg of
| SCADARGexp(x) =>
  (
    fprint(out, x)
  )
| SCADARGlabexp(l, x) =>
  (
    fprint!(out, l, "=", x)
  )
)
//
(* ****** ****** *)

implement
fprint_scadexp
  (out, exp) =
(
case+ exp of
| SCADEXPnil() =>
  (
    fprint!(out, "SCADEXPnil()")
  )
//
| SCADEXPint(i) =>
  (
    fprint!(out, "SCADEXPint(", i, ")")
  )
//
| SCADEXPbool(b) =>
  (
    fprint!(out, "SCADEXPbool(", b, ")")
  )
//
| SCADEXPfloat
  (
    f0
  ) => $extfcall
  (
    void
  , "fprintf", out, "SCADEXPfloat(%.2f)", f0
  ) (* $extfcall *)
//
| SCADEXPstring
  (
    s0
  ) => $extfcall
  (
    void
  , "fprintf", out
  , "SCADEXPstr(\"%s\")", $UN.cast{charptr}(s0)
  ) (* $extfcall *)
//
| SCADEXPvec(xs) =>
  (
    fprint!(out, "SCADEXPvec(", xs, ")")
  )
//
| SCADEXPcond(x0, x1, x2) =>
  (
    fprint!
    ( out
    , "SCADEXPcond(", x0, "; ", x1, "; ", x2, ")"
    ) (* fprint! *)
  )
//
| SCADEXPextfcall
    (fnm, env, args) =>
  (
    fprint!(out, fnm, "(", args, "; ", env, ")")
  )
) (* end of [fprint_scadexp] *)

(* ****** ****** *)

(* end of [OpenSCAD_print.dats] *)