CCMT(3) Library Functions Manual CCMT(3)

ccmt - grep comments from c-lang srccode

#include "ccmt.h"
 
 
char* ccmt(void* src [, const char* mode] );
 
char* ccmt_v(void* src [, const char* mode] );
 
//needs free rtnptr
 
 
 
 

#include "ccmt.h"
int main(int argc, char** argv) {   const char* src = "//1.cmt\n 2."//nocmt"\n /*3.cmt\n *" "/\n";   char* p = ccmt(src);   puts(p); free(p); //: 1. (2.removed) 3.
  char* p = ccmt_v(src); //: grep -v   puts(p); free(p); //: (1.) 2. (3.)      p = ccmt(stdin, "fp"); //: ag1 == filepointer   free(p);   p = ccmt("mysrc.c", "file"); //: ag1 == filename   free(p);   return 0; } //~$ gcc src.c //~$ printf '//1\n 2\n' | ./a.out

ccmt greps c-lang cmt(// or /*..+/) using posix-ERE/BRE regex from src and rtn malloc()ed ptr. param is:
 
src
src str/fp/filename pointer. treat as strptr if ag2 isnt.
mode
optional. set ag1 pointer type with string.
 
"p"/"str"/noset >> src is literal string, cosnt char*
 
"fp" >> src is opened file pointer, FILE*
 
"file" >> src is filename. do open-read-close sequence.
 
ccmt_v() gets cmt removed string as 'grep -v XXX'.
 
ccmt assumes the src doesnt holds trigraphs ??X and long-line syntax \(\n).

malloc()ed pointer. rtn NULL + set errno if error.

posix-2001+

Copyright 2022 momi-g, GPLv3+

2022-03-16 v1.0.0 (2022-03-16 v1.0.0)

regex(3)
 
https://gcc.gnu.org/onlinedocs/gcc-3.2.3/cpp/Initial-processing.html
 
https://math.stackexchange.com/questions/2482191/how-do-you-draw-a-dfa-from-a-regular-expression
 
https://cs.stackexchange.com/questions/311/deriving-the-regular-expression-for-c-style-comments
 
https://cyberzhg.github.io/toolbox/nfa2dfa?regex=KChiKikoYWIpKGIqKSkq