Clif(1)
π Clif(1) β the C-like Interpreter Framework, bestie edition π
okay so. this is the manual page for Clif, and it lives in section 1 of the GNU Tools manual. she's giving compiler, she's giving interpreter, she's giving both actually, and we're gonna walk through the whole thing together. no skimming, no skipping, we're doing this properly π«Ά
β¨ NAME β¨
clif β C-like Interpreter Framework (v0.92)
β¨ SYNOPSIS β¨
clif [ option | filename ]...
β οΈ WARNING β οΈ
bestie. listen. the tea in this manual page can be incomplete. for the full lore, go read The Interpreter Clif Programmer's Guide. that's the real one. this is the trailer. π¬
πΈ DESCRIPTION πΈ
Clif β the C-like Interpreter Framework β is an open-ended system for fast development of programs that use C syntax. the whole vibe is: your program gets compiled, and if it's syntactically correct, code is generated immediately. and that code? generated for a virtual machine. and guess what β the virtual machine is part of the framework too. it's all in-house, it's all self-contained, it's giving β¨vertical integrationβ¨.
so Clif works in two basic modes: as an interpreter and/or as a compiler (that's the -fhandle-main option's whole thing, more on her later). the interpreter mode is the default, periodt.
in interpreter mode, Clif compiles each function and each loop only once, and then the generated code just gets executed over and over. lowkey an optimization moment β the source code is not being parsed over and over again. she learned it once and she remembers it. main character energy fr fr π
the compiler mode kicks in when you specify the -fhandle-main option. the files get compiled and code gets generated. once the compilation phase is done, Clif goes looking for the main function and starts executing it. that's the whole arc.
Clif ships with a subset of the standard C library. that subset is still under development β she's growing, she's evolving. the intrinsic functions can be easily enhanced for your own purposes, so if you need more, you can absolutely build her out. slay.
there are also interface functions supporting automatic control and data acquisition, and those can be optionally compiled with Clif. so that's a thing you can opt into. π
now the honest part, because we don't lie to each other:
Clifdoes not recognize the bit-field definition syntax of the C language.- the C preprocessor is not implemented yet. (rip to
#includegirlies, we'll get there)
and there could be discrepancies between Clif and the ANSI C Standard. they're working on unifying the semantics of Clif with the ANSI C Standard. so like, she's on her journey. π§
π OPTIONS π
for each command line, you can specify one or more filenames (usually with a .ci suffix). the files are parsed in the order of specification on the command line β order matters, bestie, don't be chaotic about it.
the file clif.ini is implicitly opened. it's an initialization file. options that you use invariably get specified in that file, so you don't have to retype them every single time.
some of the -fname options have a -fno-name form. and every default value is always mentioned in the option description β so if you ever wonder "wait what's the default", it's right there, we got you. π
a summary of the options follows. the full explanations are in the next sections. here's the table of contents energy:
Overall Options
-bc-c-copying-help-v-version-verbose-warranty
Options Controlling Clif behavior
-fcall-by-reference-fno-call-by-reference-fcall-by-value-fno-call-by-value-fhandle-main
Debugging Options
-g-dy
Warning Options
-w-Wcomment-Wformat-Wimplicit-Wreturn-type-Wtrigraphs-Wuninitialized-Wall-W-Waggregate-return-Wunused
π« OVERALL OPTIONS π«
-bcβ this option specifies the number of 512-Byte pages for theClifenvironment's main memory. and heads up: the arithmetical and temporary stack is a multiple of this option as well. so it's not just the main memory, bestie, it's the whole memory vibe. π§-cβ Compile only. and ngl, she's not fully supported yet. so like, she's here, she's on the list, but manage your expectations okay? π-copyingβ Show copying.-helpβ Show short help. the little "hey here's the gist" moment. π-v,-versionβ Show version.-verboseβ Prints the general purpose ofClifand the authors. it's like the "about me" slide but for a program. π-warrantyβ Show warranty.
π OPTIONS CONTROLLING CLIF BEHAVIOR π
this whole section is about parameter passing mechanisms, and the rules here are lowkey strict so pay attention:
-fcall-by-referenceβ Specifies the parameter passing mechanism, and this is the default. β but here's the catch: if you explicitly specify it, you must also specify-fno-call-by-value. they come as a pair, they're matching friendship bracelets, don't separate them. π«Ά-fno-call-by-referenceβ do not pass parameters by reference. if you explicitly specify it, you must also specify-fcall-by-value. same deal, same pairing rule.-fcall-by-valueβ call by value parameter passing mechanism. if you explicitly specify it, you must also specify-fno-call-by-reference. see the pattern? it's giving β¨mutual exclusivityβ¨.-fno-call-by-valueβ do not pass parameters by value, and yes, this is the default. if you explicitly specify it, you must also specify-fcall-by-reference. again with the pairing. i told you, they're a set.-fhandle-mainβ this is the one that makesClifsimulate compiler-like behavior. the files on the command line and the included files get compiled. and then β important β themainfunction must be defined. if it's not, that's a whole problem. after the parsing pass, the generated code is executed, and themainfunction is the beginning of execution. she starts atmain, like a normal C program, iconic behavior honestly π
π¦ DEBUGGING OPTIONS π¦
-gβ produce debugging information. the source lines are output during virtual machine code execution. so you can see where you are in your code while the VM is doing its thing. very "show me the receipts" of her.-dyβ dump debugging information during parsing, and it goes to standard error. so it's dumping while she's still reading, not while she's running. different moment, different tea. π
π₯ WARNING OPTIONS π₯
-wβ Inhibit all warning messages. like, all of them. every single one. she will not be telling you anything. (bold choice, bestie, but do you.) π-Wcommentβ Warn when a comment-start sequence/*appears in a comment. yes. inside a comment. because that's how you end up with chaos.-Wformatβ Check calls toprintf,scanf, etc., to make sure that the arguments supplied have types appropriate to the specified format string. this one is genuinely so helpful, she's doing the type-checking so you don't have to find out at runtime. π-Wimplicitβ Warn if a function or parameter is implicitly declared. (the "you never told me what this is, so i'm guessing" warning.)-Wreturn-typeβ Warn if thereturnstatement is without a return value in a non-void function, or with a value in avoidfunction. so both directions of wrong get flagged. equal opportunity warning. π-Wtrigraphsβ Warn about trigraphs usage.-Wuninitializedβ An automatic variable is used without first being initialized. this is the "girl where did that value even come from" warning and honestly she's right to be suspicious. π-Wallβ All of the above warnings. every warning in this list, all together, the whole squad. β¨-Wβ Print extra warning messages. extra. more than the above. yes she's greedy, she wants you to know everything. π-Waggregate-returnβ Warn if any functions that return structures or unions are defined or called.-Wunusedβ Warn whenever a variable is unused aside from its declaration. (she sees your unused variable and she is going to say something.)
π FILES π
file.ciβClifsource fileclif.iniβ Initialization file
π SEE ALSO π
cc(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
also: The Interpreter Clif. Programmer's Guide., by L. Koren and T. Hruz. π
π BUGS π
There are many, for sure. (she said it, not me. π) but please β help make this software better and report them to Ludovit Koren <koren@vm.stuba.sk>. for instructions on reporting bugs, see the Interpreter Clif Programmer's Guide.
bestie if you find a bug, tell her. don't just sit there. she wants to know. it's giving community. π«Ά
π COPYING π
Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.
π AUTHORS π
See the Interpreter Clif Programmer's Guide for the contributors to Clif.
and that's the whole page, bestie!! π
sending you off with the official sign-off: this manual page is part of the GNU Tools collection, dated 2000/04/09. so like, she's been iconic since Y2K. mwah. πβ¨
go compile something cute. π¦πΈ
π¦ where this page comes from
- ubuntu jammy: clif 0.93-9.1build2
- Copyright (c) 1998, 1999, 2000 Free Software Foundation -*-Text-*-
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms