Coverage report: /home/ellis/comp/core/lib/syn/gen/c/pkg.lisp
Kind | Covered | All | % |
expression | 0 | 23 | 0.0 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; c/pkg.lisp --- C Code Generator
7
;; There are quite a few C Code Generators in the Common Lisp ecosystem, and
8
;; of course ECL which is itself a source-to-source Lisp implementation which
9
;; targets C. This one is closer to c-mera.
11
;; ref: https://github.com/kiselgra/c-mera
13
;; ref: https://selgrad.org/publications/2014_els_SLWLS.pdf
15
;; ref: https://selgrad.org/publications/2017_els_LSS.pdf
17
;; ref: https://github.com/gcc-mirror/gcc/tree/master/gcc/c
20
(defpackage :syn/gen/c
22
(:use :cl :syn/gen :std/pipe :std/meta :cli/tools/cc :cli/env :id :ast)
23
;; (:shadowing-import-from :cl :type :float)
45
#:assignment-expression
50
#:conditional-expression
54
#:expression-statement
61
#:switch-case-statement
63
#:attribute-expression
73
#:decompose-declaration
84
(in-package :syn/gen/c)
88
'(name preprocessor-macro include typedef
89
chars comment do-statement while-statement init
90
for-statement else-body if-body if-statement
91
statements compound-statement expression semicolon
92
expression-statement kind jump-statement cast-expression
93
else then test conditional-expression not-expression
94
postfix-expression prefix-expression infix-expression
95
operator assignment-expression function-pointer float
96
pointer pointer-reference component object
97
object-reference indizes array array-reference items
98
clist value type specifier declaration-item
99
bindings braces declaration-list union-definition
100
members struct-definition parameters parameter-list
101
body parameter function-definition enum-definition
102
declaration-value float-type linebreak
104
constant attribute-expression switch cases
105
switch-case-statement switch-case-item switch-case-item)))
109
(defparameter *c-symbols*
114
return break continue
129
(defparameter *c-syntax*
130
'(set *= %= += -= >>= <<= &= ^= \|=
131
== != \| \|\| % << >> ^ & && ~ ! ?
132
addr-of targ-of dref switch
134
postfix-- postfix++ postfix*
135
struct enum oref pref specifier
142
(defparameter *c-exports*
147
(defparameter *c-swap*
148
(append *c-symbols* *c-syntax*))
150
(pkg:defpackage* :syn/gen/c/swap
151
(:shadow-symbols *c-swap*))
153
(pkg:defpackage* :syn/gen/c/sym
154
(:shadow-symbols *c-swap* :export-symbols *c-exports*)
157
(:import-from :syn/gen :quoty :print-code :write-code :cintern :gen-package)
158
(:import-from :syn/gen/c :c-reader :read-gen-c-string :read-gen-c-file :simple-print
159
:cl-reader :switch-reader :decompose-declaration))