upatet code to use latest kerep version
This commit is contained in:
parent
fb88ef9de3
commit
a5a20f07ec
2
kerep
2
kerep
@ -1 +1 @@
|
|||||||
Subproject commit d9b0daf543a6df2860074087b7a970feb8540e15
|
Subproject commit 3c132e12ea67c9b9c599153a2117e8fd7573d15e
|
||||||
@ -1,6 +1,12 @@
|
|||||||
#include "cb2c.h"
|
#include "cb2c.h"
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
// kerep type system
|
||||||
|
ktDescriptors_beginInit();
|
||||||
|
ktDescriptors_initKerepTypes();
|
||||||
|
ktDescriptors_initCbLexerTypes();
|
||||||
|
ktDescriptors_endInit();
|
||||||
|
// keywords search tree
|
||||||
init_keywordsSearchTree();
|
init_keywordsSearchTree();
|
||||||
printf("keywordsSearchTree: %p\n", keywordsSearchTree);
|
printf("keywordsSearchTree: %p\n", keywordsSearchTree);
|
||||||
STNode_free(keywordsSearchTree);
|
STNode_free(keywordsSearchTree);
|
||||||
|
|||||||
8
src/lexer/init.c
Normal file
8
src/lexer/init.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "lexer.h"
|
||||||
|
|
||||||
|
void ktDescriptors_initCbLexerTypes(){
|
||||||
|
kt_register(Token, ktId_Token, NULL, NULL);
|
||||||
|
kt_register(Token*, ktId_TokenPtr, NULL, NULL);
|
||||||
|
kt_register(Autoarr_Token, ktId_AutoarrToken, ____Autoarr_free_Token, NULL);
|
||||||
|
kt_register(Autoarr_Token*, ktId_AutoarrTokenPtr, ____Autoarr_free_Token, NULL);
|
||||||
|
}
|
||||||
@ -46,9 +46,9 @@ void _addTok_ifnext(char next, TokenId yes, TokenId no, SharedLexerData* sld){
|
|||||||
// adds <label> to <tokens> as tok_label or tok_number
|
// adds <label> to <tokens> as tok_label or tok_number
|
||||||
void _tryAddLabel(SharedLexerData* sld){
|
void _tryAddLabel(SharedLexerData* sld){
|
||||||
if(label.length==0) return;
|
if(label.length==0) return;
|
||||||
Unitype fake_uni=ST_pullString(keywordsSearchTree,label);
|
Unitype uni=ST_pullString(keywordsSearchTree,label);
|
||||||
if(fake_uni.VoidPtr!=NULL) // built-in keyword
|
if(uni.VoidPtr!=NULL) // built-in keyword
|
||||||
Autoarr_add(tokens, *(Token*)(void*)&fake_uni);
|
Autoarr_add(tokens, *(Token*)uni.VoidPtr);
|
||||||
else { // user-defined label
|
else { // user-defined label
|
||||||
Token ut;
|
Token ut;
|
||||||
ut.value=string_extract(label);
|
ut.value=string_extract(label);
|
||||||
@ -80,7 +80,7 @@ Maybe _readString(char quotChar, SharedLexerData* sld){
|
|||||||
else { // "
|
else { // "
|
||||||
string str={srcFirst, source-srcFirst+1};
|
string str={srcFirst, source-srcFirst+1};
|
||||||
char* extracted=string_extract(str);
|
char* extracted=string_extract(str);
|
||||||
return SUCCESS(UniPtr(CharPtr, extracted));
|
return SUCCESS(UniHeap(ktId_CharPtr, extracted));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else prevIsBackslash= c=='\\' && !prevIsBackslash;
|
else prevIsBackslash= c=='\\' && !prevIsBackslash;
|
||||||
@ -255,7 +255,7 @@ Maybe _lexan(SharedLexerData* sld){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SUCCESS(UniPtr(AutoarrTokenPtr,tokens));
|
return SUCCESS(UniHeap(ktId_AutoarrTokenPtr,tokens));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
#include "tokens.h"
|
#include "tokens.h"
|
||||||
#include "context.h"
|
#include "context.h"
|
||||||
#include "my_type_ext.h"
|
|
||||||
|
|
||||||
//Autoarr(Token)*
|
//Autoarr(Token)*
|
||||||
Maybe lexan(char* source, char* filename);
|
Maybe lexan(char* source, char* filename);
|
||||||
|
|
||||||
|
void ktDescriptors_initCbLexerTypes();
|
||||||
@ -1,9 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "../../../kerep/src/base/base.h"
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum lexer_type{
|
|
||||||
TokenPtr=my_type_last+1,
|
|
||||||
AutoarrTokenPtr
|
|
||||||
} lexer_type;
|
|
||||||
@ -1,6 +1,11 @@
|
|||||||
#include "tokens.h"
|
#include "tokens.h"
|
||||||
|
|
||||||
|
ktId_define(ktId_Token);
|
||||||
|
ktId_define(ktId_TokenPtr);
|
||||||
|
|
||||||
Autoarr_define(Token)
|
Autoarr_define(Token)
|
||||||
|
ktId_define(ktId_AutoarrToken);
|
||||||
|
ktId_define(ktId_AutoarrTokenPtr);
|
||||||
|
|
||||||
|
|
||||||
STNode* keywordsSearchTree=NULL;
|
STNode* keywordsSearchTree=NULL;
|
||||||
@ -8,7 +13,7 @@ void init_keywordsSearchTree(){
|
|||||||
keywordsSearchTree=STNode_create();
|
keywordsSearchTree=STNode_create();
|
||||||
for(TokenId keywordId=0; keywordId<=tok_typeof; keywordId++){
|
for(TokenId keywordId=0; keywordId<=tok_typeof; keywordId++){
|
||||||
const Token* keywordptr=&default_tokens[keywordId];
|
const Token* keywordptr=&default_tokens[keywordId];
|
||||||
Unitype uni=UniPtr(Int64, keywordptr);
|
Unitype uni=UniStack(ktId_TokenPtr, keywordptr);
|
||||||
ST_push(keywordsSearchTree, keywordptr->value, uni);
|
ST_push(keywordsSearchTree, keywordptr->value, uni);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
#include "../../../kerep/src/Autoarr/Autoarr.h"
|
#include "../../../kerep/src/Autoarr/Autoarr.h"
|
||||||
#include "../../../kerep/src/SearchTree/SearchTree.h"
|
#include "../../../kerep/src/SearchTree/SearchTree.h"
|
||||||
#include "my_type_ext.h"
|
|
||||||
|
|
||||||
typedef enum TokenId{
|
typedef enum TokenId{
|
||||||
// base types
|
// base types
|
||||||
@ -104,6 +103,12 @@ typedef struct Token{
|
|||||||
char* value;
|
char* value;
|
||||||
TokenId id;
|
TokenId id;
|
||||||
} Token;
|
} Token;
|
||||||
|
ktId_declare(ktId_Token);
|
||||||
|
ktId_declare(ktId_TokenPtr);
|
||||||
|
|
||||||
|
Autoarr_declare(Token)
|
||||||
|
ktId_declare(ktId_AutoarrToken);
|
||||||
|
ktId_declare(ktId_AutoarrTokenPtr);
|
||||||
|
|
||||||
extern STNode* keywordsSearchTree;
|
extern STNode* keywordsSearchTree;
|
||||||
// dont forget to free it
|
// dont forget to free it
|
||||||
@ -199,5 +204,3 @@ static const Token default_tokens[]={
|
|||||||
{"$", tok_dollar},
|
{"$", tok_dollar},
|
||||||
{"@", tok_at}
|
{"@", tok_at}
|
||||||
};
|
};
|
||||||
|
|
||||||
Autoarr_declare(Token)
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd kerep
|
cd kerep
|
||||||
make $KEREP_BUILD_TARGET
|
make $KEREP_BUILD_TASK
|
||||||
cp bin/kerep.a ../obj/
|
cp bin/kerep.a ../obj/
|
||||||
printf "${GREEN}copied ${CYAN}kerep.a\n"
|
printf "${GREEN}copied ${CYAN}kerep.a\n"
|
||||||
cd ..
|
cd ..
|
||||||
Loading…
Reference in New Issue
Block a user