Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

39 Commits

Repository files navigation

C Preprocessor

C Preprocessor is a preprocessor created with Node.js only and running like a C preprocessor with # directives.
It was originally designed for Javascript but you can use it with any language you want.
See changelog here.

Installation

For local installation, run the following command:

npm install c-preprocessor --save

For global installation, run the following command:

npm install -g c-preprocessor

Compile a file/text

In command line

If you have installed this package in global, you can run c-preprocessor and pass your main file and output file in arguments.

c-preprocessor mainFile.js outputFile.js

Additionally you can specify a configuration file (see below for it's format):

c-preprocessor --config configFile.js mainFile.js outputFile.js

With require()

varcompiler=require("c-preprocessor");// To compile a filecompiler.compileFile(fileName,[options,]function(err,result){if(err)returnconsole.log(err);console.log(result);});// To compile a textcompiler.compile(code,[options,]function(err,result){// ...});// Or use Compiler classvarc=newcompiler.Compiler([options]);c.on('success',/* ... */)c.on('error',/* ... */)c.compile(code);// orc.compileFile(fileName);

Customize options

This are the defaults options. You can modify them by passing an option object.

varoptions={// Predefined constants (ex: { "MY_CONST": "42" })constants: {},// Predefined macros (ex: { "MACRO": "(a,b) a+b" })macros: {},// End of line characternewLine: '\n',// Escape '//#' & '/*#' comments (see extra/comments)commentEscape: true,// Empty lines to add between code and included filesincludeSpaces: 0,// Limit of empty following lines (0 = no limit)emptyLinesLimit: 0,// Base path for including filesbasePath: './',// Stop the compiler when an error ocurred ?stopOnError: true,// Must constants in #enum directive be in hexadecimal ?enumInHex: true};

Usage

Like a C preprocessor

Include
#include"file.js"

Include and parse a file.

Define
// Define a constant#defineMY_CONST 42
// Define a macro#defineSUM(a,b) a + b

Create a constant or a macro.

Undefine
#undef MY_CONST

Delete a constant or a macro.

Condition
#ifA+B==5&& defined(MY_CONST)
// Do stuff#elif"MY_CONST2"=="House"// Do other stuff#else// Do other stuff#endif#ifndefMY_CONST3// Do stuff#endif

C like conditions.
#if condition is evaluated in JS so you must add " between string constants.
Note: #ifdef C and #ifndef C are faster than #if defined(C) and #if !defined(C).

Pragma once
#pragma once

Include the current file once.

Error
#error This is an error

Stop the compiler and log the message given after the directive.

Extra

Compiler constants
__TIME__// Current time__DATE__// Current date__LINE__// Current line (where this constant is used).__FILE__// Current file (where this constant is used).

This constants are predefined by the compiler.

Comments
//# One line comment/*#Multi-lines comment#*/

This comments will be deleted in the compiled file.
Note: options.commentEscape must be true.

Enumeration
// Here A=0, ..., D=3#enumA, B, C, D#endenum// With options, so Car=5, .., Truck=25#enum start=5, step=10
Car, Bike, Truck#endenum

C like enumeration.
You can use this directive for creating a lot of constants.

About

This is a C like preprocessor for Javascript, using Node.js

Resources

Stars

35 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages