I have a large text file containing only function definitions in a pseudo programming language. A function definition looks like this (They can be as complex as they want though (deep bracketing etc.).):
foo1 = FUNCTION() {
body
}
I use a C
-program with regex.h
and grouped pattern matching. fgets()
reads in new lines in a while
-loop until the end of the file. Every time regexec()
matches foo1 = FUNCTION
in a line fgets()
read in I calculate foo1
from regmatch_t
, pass it to sprintf()
and open a new file with fopen(foo1, "wx")
. All the following lines will then be written into the newly opened file until regexec()
matches a new foon = FUNCTION() {}
and a new file is opened via sprintf()
and fopen()
. This is the part of the solution I would like to keep!
But the author of the file was sloppy in some parts and instead of putting the name of the function and it's definition-keyword FUNCTION
on the same line, he sometimes wrote:
foo2 =
FUNCTION() {
body
}
Currently I treat such functions as unnamed and assign the file they get written into a name of the form m_func
where n
is a running index. Now, the file previous to m_func
(m-1_func
) will also contain as the last line the actual name of m_func
. Given that m = 50
at least, copying and pasting seems a nuisance. So here is the question: Is there a way to achieve the same I achieved with functions defined on one line such that I can match the definition, then somehow get hold of the name one or two lines before and create a new file based upon the name of the function via fopen()
and sprintf()
?