lexer doc section setup
parent
4dc20d8fec
commit
bc7d558945
209
4coder_API.html
209
4coder_API.html
File diff suppressed because one or more lines are too long
|
@ -1,54 +0,0 @@
|
|||
/* "4cpp" Open C++ Parser v0.1: Clear Config
|
||||
no warranty implied; use at your own risk
|
||||
|
||||
NOTES ON USE:
|
||||
This file is used to clear options. The main use for this is for cases when you want
|
||||
it include different portions of the library with different settings. So that the compiler
|
||||
does not complain about redifintion, and so that you do not have to undef everything yourself
|
||||
this is provided to undef everything at once.
|
||||
*/
|
||||
|
||||
#ifdef FCPP_NO_CRT
|
||||
#undef FCPP_NO_CRT
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_NO_MALLOC
|
||||
#undef FCPP_NO_MALLOC
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_NO_ASSERT
|
||||
#undef FCPP_NO_ASSERT
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_NO_STRING
|
||||
#undef FCPP_NO_STRING
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_GET_MEMORY
|
||||
#undef FCPP_GET_MEMORY
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_FREE_MEMORY
|
||||
#undef FCPP_FREE_MEMORY
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_ASSERT
|
||||
#undef FCPP_ASSERT
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_MEM_COPY
|
||||
#undef FCPP_MEM_COPY
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_MEM_MOVE
|
||||
#undef FCPP_MEM_MOVE
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_LINK
|
||||
#undef FCPP_LINK
|
||||
#endif
|
||||
|
||||
#ifdef FCPP_EXTERN
|
||||
#undef FCPP_EXTERN
|
||||
#endif
|
||||
|
37
4cpp_lexer.h
37
4cpp_lexer.h
|
@ -12,7 +12,7 @@
|
|||
# define FCPP_LINK static
|
||||
#endif
|
||||
|
||||
#include "4coder_lexer_types.h"
|
||||
#include "4cpp_lexer_types.h"
|
||||
#include "4cpp_lexer_fsms.h"
|
||||
#include "4cpp_lexer_tables.c"
|
||||
|
||||
|
@ -297,48 +297,15 @@ cpp_pp_directive_to_state(Cpp_Token_Type type){
|
|||
return(result);
|
||||
}
|
||||
|
||||
#if 0
|
||||
FCPP_LINK Cpp_Token_Merge
|
||||
cpp_attempt_token_merge(Cpp_Token prev_token, Cpp_Token next_token){
|
||||
Cpp_Token_Merge result = {(Cpp_Token_Type)0};
|
||||
if (next_token.type == CPP_TOKEN_COMMENT && prev_token.type == CPP_TOKEN_COMMENT &&
|
||||
next_token.flags == prev_token.flags && next_token.state_flags == prev_token.state_flags){
|
||||
result.did_merge = 1;
|
||||
prev_token.size = next_token.start + next_token.size - prev_token.start;
|
||||
result.new_token = prev_token;
|
||||
}
|
||||
else if (next_token.type == CPP_TOKEN_JUNK && prev_token.type == CPP_TOKEN_JUNK &&
|
||||
next_token.flags == prev_token.flags && next_token.state_flags == prev_token.state_flags){
|
||||
result.did_merge = 1;
|
||||
prev_token.size = next_token.start + next_token.size - prev_token.start;
|
||||
result.new_token = prev_token;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
#endif
|
||||
|
||||
FCPP_LINK int32_t
|
||||
cpp_place_token_nonalloc(Cpp_Token *out_tokens, int32_t token_i, Cpp_Token token){
|
||||
//Cpp_Token_Merge merge = {(Cpp_Token_Type)0};
|
||||
Cpp_Token prev_token = {(Cpp_Token_Type)0};
|
||||
|
||||
if (token_i > 0){
|
||||
prev_token = out_tokens[token_i - 1];
|
||||
#if 0
|
||||
merge = cpp_attempt_token_merge(prev_token, token);
|
||||
if (merge.did_merge){
|
||||
out_tokens[token_i - 1] = merge.new_token;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (!merge.did_merge){
|
||||
out_tokens[token_i++] = token;
|
||||
}
|
||||
#else
|
||||
out_tokens[token_i++] = token;
|
||||
#endif
|
||||
|
||||
return(token_i);
|
||||
}
|
||||
|
@ -449,7 +416,7 @@ cpp_lex_nonalloc(Lex_Data *S_ptr,
|
|||
|
||||
S.token_start = S.pos;
|
||||
S.tb_pos = 0;
|
||||
S.fsm = zero_lex_fsm();
|
||||
S.fsm = null_lex_fsm;
|
||||
for(;;){
|
||||
{
|
||||
unsigned short *eq_classes = get_eq_classes[S.pp_state];
|
||||
|
|
|
@ -84,19 +84,11 @@ enum Lex_PP_State{
|
|||
|
||||
struct Lex_FSM{
|
||||
uint8_t state;
|
||||
union{
|
||||
uint8_t int_state;
|
||||
uint8_t directive_state;
|
||||
uint8_t sub_machine;
|
||||
};
|
||||
uint8_t emit_token;
|
||||
uint8_t multi_line;
|
||||
};
|
||||
inline Lex_FSM
|
||||
zero_lex_fsm(){
|
||||
Lex_FSM fsm = {0};
|
||||
return(fsm);
|
||||
}
|
||||
static Lex_FSM null_lex_fsm = {0};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
* Mr. 4th Dimention - Allen Webster
|
||||
*
|
||||
* 30.11.2015
|
||||
*
|
||||
* CPP preprocessor
|
||||
*
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
#define byte unsigned char
|
||||
|
||||
|
||||
|
||||
#undef byte
|
||||
|
||||
// BOTTOM
|
||||
|
103
4ed_metagen.cpp
103
4ed_metagen.cpp
|
@ -2193,10 +2193,40 @@ generate_custom_headers(){
|
|||
string_keys, ArrayCount(string_keys));
|
||||
|
||||
|
||||
// NOTE(allen): Parse the lexer library
|
||||
static char *lexer_types_files[] = {
|
||||
"4cpp_lexer_types.h",
|
||||
};
|
||||
|
||||
static Meta_Keywords lexer_types_keys[] = {
|
||||
{make_lit_string("typedef") , Item_Typedef } ,
|
||||
{make_lit_string("struct") , Item_Struct } ,
|
||||
{make_lit_string("union") , Item_Union } ,
|
||||
{make_lit_string("ENUM") , Item_Enum } ,
|
||||
};
|
||||
|
||||
Meta_Unit lexer_types_unit =
|
||||
compile_meta_unit(part, lexer_types_files, ArrayCount(lexer_types_files),
|
||||
lexer_types_keys, ArrayCount(lexer_types_keys));
|
||||
|
||||
static char *lexer_funcs_files[] = {
|
||||
"4cpp_lexer.h",
|
||||
};
|
||||
|
||||
static Meta_Keywords lexer_funcs_keys[] = {
|
||||
{make_lit_string("FCPP_LINK") , Item_Function } ,
|
||||
};
|
||||
|
||||
Meta_Unit lexer_funcs_unit =
|
||||
compile_meta_unit(part, lexer_funcs_files, ArrayCount(lexer_funcs_files),
|
||||
lexer_funcs_keys, ArrayCount(lexer_funcs_keys));
|
||||
|
||||
|
||||
|
||||
// NOTE(allen): Parse the customization API files
|
||||
static char *functions_files[] = {
|
||||
"4ed_api_implementation.cpp",
|
||||
"win32_api_impl.cpp"
|
||||
"win32_api_impl.cpp",
|
||||
};
|
||||
|
||||
static Meta_Keywords functions_keys[] = {
|
||||
|
@ -2225,11 +2255,9 @@ generate_custom_headers(){
|
|||
partition_align(part, 4);
|
||||
}
|
||||
|
||||
|
||||
// NOTE(allen): Parse the customization API types
|
||||
static char *type_files[] = {
|
||||
"4coder_types.h",
|
||||
"4coder_lexer_types.h",
|
||||
};
|
||||
|
||||
static Meta_Keywords type_keys[] = {
|
||||
|
@ -2242,7 +2270,6 @@ generate_custom_headers(){
|
|||
Meta_Unit unit = compile_meta_unit(part, type_files, ArrayCount(type_files),
|
||||
type_keys, ArrayCount(type_keys));
|
||||
|
||||
|
||||
// NOTE(allen): Output
|
||||
String out = str_alloc(part, 10 << 20);
|
||||
Out_Context context = {0};
|
||||
|
@ -2599,8 +2626,7 @@ generate_custom_headers(){
|
|||
"<body>"
|
||||
"<div style='font-family:Arial; margin: 0 auto; "
|
||||
"width: 800px; text-align: justify; line-height: 1.25;'>"
|
||||
"<h1 style='margin-top: 5mm; margin-bottom: 5mm;'>4coder API</h1>"
|
||||
);
|
||||
"<h1 style='margin-top: 5mm; margin-bottom: 5mm;'>4coder API</h1>");
|
||||
|
||||
struct Section{
|
||||
char *id_string;
|
||||
|
@ -2611,11 +2637,11 @@ generate_custom_headers(){
|
|||
{"introduction", "Introduction"},
|
||||
{"4coder_systems", "4coder Systems"},
|
||||
{"types_and_functions", "Types and Functions"},
|
||||
{"string_library", "String Library"}
|
||||
{"string_library", "String Library"},
|
||||
{"lexer_library", "Lexer Library"}
|
||||
};
|
||||
|
||||
append_sc(&out,
|
||||
"<h3 style='margin:0;'>Table of Contents</h3>""<ul>");
|
||||
append_sc(&out, "<h3 style='margin:0;'>Table of Contents</h3>""<ul>");
|
||||
|
||||
int32_t section_count = ArrayCount(sections);
|
||||
for (int32_t i = 0; i < section_count; ++i){
|
||||
|
@ -2745,7 +2771,7 @@ generate_custom_headers(){
|
|||
|
||||
append_sc(&out, "<ul>");
|
||||
for (int32_t i = 0; i < string_unit.set.count; ++i){
|
||||
print_item_in_list(&out, string_unit.set.items[i].name, "_str_doc");
|
||||
print_item_in_list(&out, string_unit.set.items[i].name, "_doc");
|
||||
}
|
||||
append_sc(&out, "</ul>");
|
||||
|
||||
|
@ -2755,9 +2781,64 @@ generate_custom_headers(){
|
|||
append_sc(&out, "<h3>§"SECTION" String Function Descriptions</h3>");
|
||||
|
||||
for (int32_t i = 0; i < string_unit.set.count; ++i){
|
||||
print_item(&out, part, string_unit.set.items+i, "_str_doc", "", SECTION, i+1);
|
||||
print_item(&out, part, string_unit.set.items+i, "_doc", "", SECTION, i+1);
|
||||
}
|
||||
|
||||
#undef MAJOR_SECTION
|
||||
#define MAJOR_SECTION "5"
|
||||
|
||||
append_sc(&out, "\n<h2 id='section_");
|
||||
append_sc(&out, sections[4].id_string);
|
||||
append_sc(&out, "'>§"MAJOR_SECTION" ");
|
||||
append_sc(&out, sections[4].display_string);
|
||||
append_sc(&out, "</h2>");
|
||||
|
||||
#undef SECTION
|
||||
#define SECTION MAJOR_SECTION".1"
|
||||
|
||||
append_sc(&out, "<h3>§"SECTION" Lexer Intro</h3>");
|
||||
|
||||
append_sc(&out, "<div><i>Coming Soon</i><div>");
|
||||
|
||||
#undef SECTION
|
||||
#define SECTION MAJOR_SECTION".2"
|
||||
|
||||
append_sc(&out, "<h3>§"SECTION" Lexer Function List</h3>");
|
||||
|
||||
append_sc(&out, "<ul>");
|
||||
for (int32_t i = 0; i < lexer_funcs_unit.set.count; ++i){
|
||||
print_item_in_list(&out, lexer_funcs_unit.set.items[i].name, "_doc");
|
||||
}
|
||||
append_sc(&out, "</ul>");
|
||||
|
||||
#undef SECTION
|
||||
#define SECTION MAJOR_SECTION".3"
|
||||
|
||||
append_sc(&out, "<h3>§"SECTION" Lexer Types List</h3>");
|
||||
|
||||
append_sc(&out, "<ul>");
|
||||
for (int32_t i = 0; i < lexer_types_unit.set.count; ++i){
|
||||
print_item_in_list(&out, lexer_types_unit.set.items[i].name, "_doc");
|
||||
}
|
||||
append_sc(&out, "</ul>");
|
||||
|
||||
#undef SECTION
|
||||
#define SECTION MAJOR_SECTION".4"
|
||||
|
||||
append_sc(&out, "<h3>§"SECTION" Lexer Function Descriptions</h3>");
|
||||
for (int32_t i = 0; i < lexer_funcs_unit.set.count; ++i){
|
||||
print_item(&out, part, lexer_funcs_unit.set.items+i, "_doc", "", SECTION, i+1);
|
||||
}
|
||||
|
||||
#undef SECTION
|
||||
#define SECTION MAJOR_SECTION".5"
|
||||
|
||||
append_sc(&out, "<h3>§"SECTION" Lexer Type Descriptions</h3>");
|
||||
for (int32_t i = 0; i < lexer_types_unit.set.count; ++i){
|
||||
print_item(&out, part, lexer_types_unit.set.items+i, "_doc", "", SECTION, i+1);
|
||||
}
|
||||
|
||||
|
||||
append_sc(&out, "</div></body></html>");
|
||||
end_file_out(context);
|
||||
}
|
||||
|
|
4
build.c
4
build.c
|
@ -445,7 +445,7 @@ init_build_line(Build_Line *line){
|
|||
"..\\foreign\\freetype.lib"
|
||||
|
||||
#define CL_ICON \
|
||||
"..\\foreign\\freetype.lib"
|
||||
"..\\res\\icon.res"
|
||||
|
||||
static void
|
||||
build_cl(uint32_t flags,
|
||||
|
@ -808,6 +808,8 @@ package(char *cdir){
|
|||
|
||||
copy_all ("4coder_*.h", PACK_SUPER_DIR);
|
||||
copy_all ("4coder_*.cpp", PACK_SUPER_DIR);
|
||||
copy_all ("4cpp_*.h", PACK_SUPER_DIR);
|
||||
copy_all ("4cpp_*.c", PACK_SUPER_DIR);
|
||||
copy_file(0, "buildsuper"BAT, PACK_SUPER_DIR, 0);
|
||||
|
||||
get_4coder_dist_name(&str, 0, "API", "html");
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#define Assert(n) do{ if (!(n)) { *(int*)0 = 0xA11E; } }while(0)
|
||||
#define ArrayCount(a) (sizeof(a)/sizeof(*a))
|
||||
|
||||
#include "4coder_lexer_types.h"
|
||||
#include "4cpp_lexer_types.h"
|
||||
#include "4cpp_lexer_fsms.h"
|
||||
#include "4ed_mem_ansi.c"
|
||||
|
||||
|
|
Loading…
Reference in New Issue