Adding various new tokens
This commit is contained in:
parent
238b00098a
commit
00a021ea01
88
src/lt.c
88
src/lt.c
|
@ -56,7 +56,9 @@ char *LT_TkNames[] = {
|
||||||
"TOK_ShR", "TOK_CmpGT", "TOK_CmpLE", "TOK_ShL", "TOK_CmpNE", "TOK_CmpLT",
|
"TOK_ShR", "TOK_CmpGT", "TOK_CmpLE", "TOK_ShL", "TOK_CmpNE", "TOK_CmpLT",
|
||||||
"TOK_CmpEQ", "TOK_Equal", "TOK_Not", "TOK_OrI2", "TOK_OrI", "TOK_OrX2",
|
"TOK_CmpEQ", "TOK_Equal", "TOK_Not", "TOK_OrI2", "TOK_OrI", "TOK_OrX2",
|
||||||
"TOK_OrX", "TOK_Sub2", "TOK_Sub", "TOK_String", "TOK_Charac", "TOK_Number",
|
"TOK_OrX", "TOK_Sub2", "TOK_Sub", "TOK_String", "TOK_Charac", "TOK_Number",
|
||||||
"TOK_Identi", "TOK_EOF", "TOK_ChrSeq"
|
"TOK_Identi", "TOK_EOF", "TOK_ChrSeq", "TOK_Comment","TOK_Period", "TOK_Arrow",
|
||||||
|
"TOK_Sigil", "TOK_Hash", "TOK_BlkCmtO","TOK_BlkCmtC","TOK_Exp", "TOK_NstCmtO",
|
||||||
|
"TOK_NstCmtC"
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -475,11 +477,12 @@ LT_Token LT_GetToken()
|
||||||
|
|
||||||
switch(c)
|
switch(c)
|
||||||
{
|
{
|
||||||
|
case '$': tk.token = LT_TkNames[TOK_Sigil]; return tk;
|
||||||
|
case '#': tk.token = LT_TkNames[TOK_Hash]; return tk;
|
||||||
|
case '.': tk.token = LT_TkNames[TOK_Period]; return tk;
|
||||||
case ':': tk.token = LT_TkNames[TOK_Colon]; return tk;
|
case ':': tk.token = LT_TkNames[TOK_Colon]; return tk;
|
||||||
case ',': tk.token = LT_TkNames[TOK_Comma]; return tk;
|
case ',': tk.token = LT_TkNames[TOK_Comma]; return tk;
|
||||||
case '/': tk.token = LT_TkNames[TOK_Div]; return tk;
|
|
||||||
case '%': tk.token = LT_TkNames[TOK_Mod]; return tk;
|
case '%': tk.token = LT_TkNames[TOK_Mod]; return tk;
|
||||||
case '*': tk.token = LT_TkNames[TOK_Mul]; return tk;
|
|
||||||
case '?': tk.token = LT_TkNames[TOK_Query]; return tk;
|
case '?': tk.token = LT_TkNames[TOK_Query]; return tk;
|
||||||
case '{': tk.token = LT_TkNames[TOK_BraceO]; return tk;
|
case '{': tk.token = LT_TkNames[TOK_BraceO]; return tk;
|
||||||
case '}': tk.token = LT_TkNames[TOK_BraceC]; return tk;
|
case '}': tk.token = LT_TkNames[TOK_BraceC]; return tk;
|
||||||
|
@ -507,8 +510,6 @@ LT_Token LT_GetToken()
|
||||||
\
|
\
|
||||||
return tk;
|
return tk;
|
||||||
|
|
||||||
DoubleTokDef('+', TOK_Add, TOK_Add2);
|
|
||||||
DoubleTokDef('-', TOK_Sub, TOK_Sub2);
|
|
||||||
DoubleTokDef('&', TOK_And, TOK_And2);
|
DoubleTokDef('&', TOK_And, TOK_And2);
|
||||||
DoubleTokDef('=', TOK_Equal, TOK_CmpEQ);
|
DoubleTokDef('=', TOK_Equal, TOK_CmpEQ);
|
||||||
DoubleTokDef('^', TOK_OrX, TOK_OrX2);
|
DoubleTokDef('^', TOK_OrX, TOK_OrX2);
|
||||||
|
@ -584,6 +585,83 @@ LT_Token LT_GetToken()
|
||||||
LT_Assert(true, "LT_GetToken: Syntax error"); // [marrub] Yet more error checking that was forgotten before.
|
LT_Assert(true, "LT_GetToken: Syntax error"); // [marrub] Yet more error checking that was forgotten before.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return tk;
|
||||||
|
// [zombie] extra tokens
|
||||||
|
case '/':
|
||||||
|
fread(&c, 1, 1, parseFile);
|
||||||
|
|
||||||
|
if(c == '/')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Comment];
|
||||||
|
}
|
||||||
|
else if(c == '*')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_BlkCmtO];
|
||||||
|
}
|
||||||
|
else if(c == '+')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_NstCmtO];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Div];
|
||||||
|
fseek(parseFile, -1, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tk;
|
||||||
|
case '*':
|
||||||
|
fread(&c, 1, 1, parseFile);
|
||||||
|
|
||||||
|
if(c == '/')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_BlkCmtC];
|
||||||
|
}
|
||||||
|
else if(c == '*')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Exp];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Mul];
|
||||||
|
fseek(parseFile, -1, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tk;
|
||||||
|
case '-':
|
||||||
|
fread(&c, 1, 1, parseFile);
|
||||||
|
|
||||||
|
if(c == '-')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Sub2];
|
||||||
|
}
|
||||||
|
else if (c == '>')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Arrow];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Sub];
|
||||||
|
fseek(parseFile, -1, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tk;
|
||||||
|
case '+':
|
||||||
|
fread(&c, 1, 1, parseFile);
|
||||||
|
|
||||||
|
if (c == '/')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_NstCmtC];
|
||||||
|
}
|
||||||
|
else if (c == '+')
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Add2];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tk.token = LT_TkNames[TOK_Add];
|
||||||
|
fseek(parseFile, -1, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
return tk;
|
return tk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
src/lt.h
4
src/lt.h
|
@ -52,7 +52,9 @@ enum
|
||||||
TOK_CmpLE, TOK_ShL, TOK_CmpNE, TOK_CmpLT, TOK_CmpEQ,
|
TOK_CmpLE, TOK_ShL, TOK_CmpNE, TOK_CmpLT, TOK_CmpEQ,
|
||||||
TOK_Equal, TOK_Not, TOK_OrI2, TOK_OrI, TOK_OrX2,
|
TOK_Equal, TOK_Not, TOK_OrI2, TOK_OrI, TOK_OrX2,
|
||||||
TOK_OrX, TOK_Sub2, TOK_Sub, TOK_String, TOK_Charac,
|
TOK_OrX, TOK_Sub2, TOK_Sub, TOK_String, TOK_Charac,
|
||||||
TOK_Number, TOK_Identi, TOK_EOF, TOK_ChrSeq
|
TOK_Number, TOK_Identi, TOK_EOF, TOK_ChrSeq, TOK_Comment,
|
||||||
|
TOK_Period, TOK_Arrow, TOK_Sigil, TOK_Hash, TOK_BlkCmtO,
|
||||||
|
TOK_BlkCmtC,TOK_Exp, TOK_NstCmtO,TOK_NstCmtC
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
Reference in New Issue
Block a user