Age | Commit message (Collapse) | Author |
|
I've redid the compiler to use a FILE object pointer, which means that
we can leave error checking for FILES on the main program.
Furthermore, I've removed the use of the array_t type with a two pass
system. One pass is done for the number of lines (along with potentially
other diagnostics), another is done for the actual compilation. This
means at runtime we have an understanding about the size of the file and
can optimize for it. Also, we have a single memory block to assign to,
where we know the size of the array.
|
|
Uses the dynamic array to alleviate the burdens of computing specific
memory sizes. Terminates lines for parsing.
|
|
|
|
Doesn't work very well
|
|
Set compiled token recipes in the compiler.h file (easier to manage) and
let code handle the rest.
|
|
Similar to previous commit, make it more general and easier to adapt
through generalizing state and algorithms.
|
|
Make it a bit cleaner, uses a switch to setup general variables (tag
strings, lengths, etc) then a general algorithm that is guaranteed to
work for any single character markdown syntax if those variables are set.
|
|
|
|
This will check if a given character is a valid plain text token (*, _).
This will allow me to abstract away and assess if some plain text needs
to be further processed
|
|
This algorithm looks for substrings in a big string, attempting to find
the index of the first occurence.
|
|
On converting, I would sometimes get the other tag missing. This was
both on the repl and the tests, and was quite annoying.
Each c-string should end in a null terminator, which I forgot about. So
this commit fixes that by setting the last character pointer on each
branch to the null terminator.
|
|
|
|
|
|
This checks if the first item is a hyphen, then generates a <li> tag
surrounding the content
|
|
This was because it wrote to the null character and thus was
inaccessible (I think).
|
|
|
|
|
|
This routine will handle asterisks and bullet points.
Works by checking characters at each step.
Also has diagnostics by checking for matching characters. If a matching
asterisk, for example, isn't found then present an error and quit.
|
|
compiler.h holds definitions necessary for compiling markdown,
compiler.c the implementations.
Moved implementation of compile_line to compiler.h and compiler.c respectively.
|