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"
|
||||
|
||||
int main(){
|
||||
// kerep type system
|
||||
ktDescriptors_beginInit();
|
||||
ktDescriptors_initKerepTypes();
|
||||
ktDescriptors_initCbLexerTypes();
|
||||
ktDescriptors_endInit();
|
||||
// keywords search tree
|
||||
init_keywordsSearchTree();
|
||||
printf("keywordsSearchTree: %p\n", 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
|
||||
void _tryAddLabel(SharedLexerData* sld){
|
||||
if(label.length==0) return;
|
||||
Unitype fake_uni=ST_pullString(keywordsSearchTree,label);
|
||||
if(fake_uni.VoidPtr!=NULL) // built-in keyword
|
||||
Autoarr_add(tokens, *(Token*)(void*)&fake_uni);
|
||||
Unitype uni=ST_pullString(keywordsSearchTree,label);
|
||||
if(uni.VoidPtr!=NULL) // built-in keyword
|
||||
Autoarr_add(tokens, *(Token*)uni.VoidPtr);
|
||||
else { // user-defined label
|
||||
Token ut;
|
||||
ut.value=string_extract(label);
|
||||
@ -80,7 +80,7 @@ Maybe _readString(char quotChar, SharedLexerData* sld){
|
||||
else { // "
|
||||
string str={srcFirst, source-srcFirst+1};
|
||||
char* extracted=string_extract(str);
|
||||
return SUCCESS(UniPtr(CharPtr, extracted));
|
||||
return SUCCESS(UniHeap(ktId_CharPtr, extracted));
|
||||
}
|
||||
}
|
||||
else prevIsBackslash= c=='\\' && !prevIsBackslash;
|
||||
@ -255,7 +255,7 @@ Maybe _lexan(SharedLexerData* sld){
|
||||
break;
|
||||
}
|
||||
|
||||
return SUCCESS(UniPtr(AutoarrTokenPtr,tokens));
|
||||
return SUCCESS(UniHeap(ktId_AutoarrTokenPtr,tokens));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
|
||||
#include "tokens.h"
|
||||
#include "context.h"
|
||||
#include "my_type_ext.h"
|
||||
|
||||
//Autoarr(Token)*
|
||||
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"
|
||||
|
||||
ktId_define(ktId_Token);
|
||||
ktId_define(ktId_TokenPtr);
|
||||
|
||||
Autoarr_define(Token)
|
||||
ktId_define(ktId_AutoarrToken);
|
||||
ktId_define(ktId_AutoarrTokenPtr);
|
||||
|
||||
|
||||
STNode* keywordsSearchTree=NULL;
|
||||
@ -8,7 +13,7 @@ void init_keywordsSearchTree(){
|
||||
keywordsSearchTree=STNode_create();
|
||||
for(TokenId keywordId=0; keywordId<=tok_typeof; keywordId++){
|
||||
const Token* keywordptr=&default_tokens[keywordId];
|
||||
Unitype uni=UniPtr(Int64, keywordptr);
|
||||
Unitype uni=UniStack(ktId_TokenPtr, keywordptr);
|
||||
ST_push(keywordsSearchTree, keywordptr->value, uni);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
|
||||
#include "../../../kerep/src/Autoarr/Autoarr.h"
|
||||
#include "../../../kerep/src/SearchTree/SearchTree.h"
|
||||
#include "my_type_ext.h"
|
||||
|
||||
typedef enum TokenId{
|
||||
// base types
|
||||
@ -104,6 +103,12 @@ typedef struct Token{
|
||||
char* value;
|
||||
TokenId id;
|
||||
} Token;
|
||||
ktId_declare(ktId_Token);
|
||||
ktId_declare(ktId_TokenPtr);
|
||||
|
||||
Autoarr_declare(Token)
|
||||
ktId_declare(ktId_AutoarrToken);
|
||||
ktId_declare(ktId_AutoarrTokenPtr);
|
||||
|
||||
extern STNode* keywordsSearchTree;
|
||||
// dont forget to free it
|
||||
@ -199,5 +204,3 @@ static const Token default_tokens[]={
|
||||
{"$", tok_dollar},
|
||||
{"@", tok_at}
|
||||
};
|
||||
|
||||
Autoarr_declare(Token)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd kerep
|
||||
make $KEREP_BUILD_TARGET
|
||||
make $KEREP_BUILD_TASK
|
||||
cp bin/kerep.a ../obj/
|
||||
printf "${GREEN}copied ${CYAN}kerep.a\n"
|
||||
cd ..
|
||||
Loading…
Reference in New Issue
Block a user