59 lines
1.2 KiB
C
59 lines
1.2 KiB
C
|
|
#include <stdint.h>
|
|
typedef int8_t S8;
|
|
typedef int16_t S16;
|
|
typedef int32_t S32;
|
|
typedef int64_t S64;
|
|
typedef uint8_t U8;
|
|
typedef uint16_t U16;
|
|
typedef uint32_t U32;
|
|
typedef uint64_t U64;
|
|
typedef S8 B8;
|
|
typedef S16 B16;
|
|
typedef S32 B32;
|
|
typedef S64 B64;
|
|
typedef U64 SizeU;
|
|
typedef S64 SizeS;
|
|
typedef float F32;
|
|
typedef double F64;
|
|
typedef S32 Bool;
|
|
|
|
typedef struct String{
|
|
U8 *str;
|
|
S64 len;
|
|
}String;
|
|
#define LIT(x) (String){.str=(U8 *)x, .len=sizeof(x)-1}
|
|
|
|
void entry();
|
|
int main(){
|
|
entry();
|
|
}
|
|
|
|
void do_something(U32 val);
|
|
typedef struct Token{
|
|
U8 *str;
|
|
S64 len;
|
|
}Token;
|
|
Bool is_numeric(U8 c){
|
|
Bool result = ((c>=48)&&(c<=57));
|
|
return result;
|
|
}
|
|
void entry(){
|
|
String string_to_lex = LIT("Identifier 2425525 Not_Number");
|
|
Token token_array[32];
|
|
U32 token_count;
|
|
do_something(32);
|
|
Token t;
|
|
for(S64 i = 0;(i<string_to_lex.len);(i+=1)){
|
|
if(is_numeric((string_to_lex.str[i]))){
|
|
(t.str=(&(string_to_lex.str[i])));
|
|
(t.len=i);
|
|
for(;is_numeric((string_to_lex.str[i]));){
|
|
(i+=1);
|
|
}
|
|
(t.len=(i-t.len));
|
|
((token_array[(token_count++)])=t);
|
|
(token_count+=1);
|
|
}
|
|
}
|
|
} |