added signs to integer

removed linebrakes
added floats as "real"
changed Keyword for single symbol Operators
This commit is contained in:
Felix Müller 2024-04-16 19:54:09 +02:00
parent 0740dcc237
commit 74befb4edd
2 changed files with 18 additions and 37 deletions

View File

@ -4,24 +4,22 @@
int yyLineNumber = 1; int yyLineNumber = 1;
int yylex(); int yylex();
%} %}
%% %%
"\n" yyLineNumber++; "\n" yyLineNumber++;
":" return(':'); ":" return(':');
"=" return('='); "=" return('=');
"|" return('|');
"!" return('!');
"+" return('+'); "+" return('+');
"-" return('-'); "-" return('-');
"*" return('*'); "*" return('*');
"/" return('/'); "/" return('/');
"," return(',');
";" return(';');
"." return('.');
"#" return('#');
"(" return('('); "(" return('(');
")" return(')'); ")" return(')');
@ -32,50 +30,38 @@
">" return('>'); ">" return('>');
"<" return('<'); "<" return('<');
"int" return(KeyInt); "int" return(KeyInt);
"float" return(KeyFloat); "float" return(KeyFloat);
"as" return (KeyAs); "as" return (KeyAs);
"short" return(KeyShort); "short" return(KeyShort);
"long" return(KeyLong); "long" return(KeyLong);
"half" return(KeyHalf); "half" return(KeyHalf);
"double" return(KeyDouble); "double" return(KeyDouble);
"signed" return(KeySigned); "signed" return(KeySigned);
"unsigned" return(Keyunsigned); "unsigned" return(Keyunsigned);
"ref" return(KeyRef); "ref" return(KeyRef);
"type" return(KeyType); "type" return(KeyType);
"local" return(KeyLocal); "local" return(KeyLocal);
"global" return(KeyGlobal); "global" return(KeyGlobal);
"static" return(KeyStatic); "static" return(KeyStatic);
"if" return(KeyIf); "if" return(KeyIf);
"else" return(KeyElse); "else" return(KeyElse);
"while" return(KeyWhile); "while" return(KeyWhile);
"in" return(KeyIn); "in" return(KeyIn);
"out" return(KeyOut); "out" return(KeyOut);
"fun" return(KeyFun); "fun" return(KeyFun);
"," return(',');
";" return(';');
"==" return(OpEquals); "==" return(OpEquals);
"&&" return(OpAnd); "&&" return(OpAnd);
"||" return(OpOr); "||" return(OpOr);
"!!" return(OpNot); "!!" return(OpNot);
"^^" return(OpXor); "^^" return(OpXor);
"&" return('&'); "&" return(OpBitand);
"^" return('^'); "|" return(OpBitor);
"." return('.'); "!" return(OpBitnot);
"^" return(OpBitxor);
"import" return(KeyImport); "import" return(KeyImport);
"silent" return(KeySilent); "silent" return(KeySilent);
"box" return(KeyBox); "box" return(KeyBox);
"#" return('#');
"typeof" return(FunTypeof); "typeof" return(FunTypeof);
"sizeof" return(FunSizeof); "sizeof" return(FunSizeof);
"filename" return(FunFilename); "filename" return(FunFilename);
@ -83,11 +69,10 @@
"lineno" return(FunLineno); "lineno" return(FunLineno);
"extsupport" return(FunExtsupport); "extsupport" return(FunExtsupport);
[a-zA-Z_]+ { yylval.string = strdup(yytext); return(Ident); }; [a-zA-Z_]+ { yylval.string = strdup(yytext); return(Ident); };
[0-9]+ { yylval.num = atoi(yytext); return(ValInt); }; [-+]?[0-9]+ { yylval.num = atoi(yytext); return(ValInt); };
\"([^\"\n])*\" {yylval.string = strdup(yytext); return(ValStr);}; \"([^\"\n])*\" {yylval.string = strdup(yytext); return(ValStr);};
\"\"\"([^\"\n]|\\\n)*\"\"\" {yylval.string = strdup(yytext); return(ValMultistr);}; \"\"\"([^\"\n]|\\\n)*\"\"\" {yylval.string = strdup(yytext); return(ValMultistr);};
[-+]?[0-9]*\.[0-9]+ {yylval.real = atof(yytext); return(ValFloat);};
.; .;
%% %%

View File

@ -9,34 +9,31 @@
%union { %union {
char *string; char *string;
int num; int num;
float real;
} }
%token KeyInt %token KeyInt
%token KeyFloat %token KeyFloat
%token KeyAs %token KeyAs
%token <num> ValInt %token <num> ValInt
%token <string> Ident %token <string> Ident
%token <real> ValFloat
%token <string> ValStr
%token <string> ValMultistr
%token KeyShort %token KeyShort
%token KeyLong %token KeyLong
%token KeyHalf %token KeyHalf
%token KeyDouble %token KeyDouble
%token KeySigned %token KeySigned
%token Keyunsigned %token Keyunsigned
%token KeyRef %token KeyRef
%token KeyType %token KeyType
%token KeyLocal %token KeyLocal
%token KeyGlobal %token KeyGlobal
%token KeyStatic %token KeyStatic
%token KeyIf %token KeyIf
%token KeyElse %token KeyElse
%token KeyWhile %token KeyWhile
%token KeyIn %token KeyIn
%token KeyOut %token KeyOut
%token KeyFun %token KeyFun
@ -45,8 +42,10 @@
%token OpOr %token OpOr
%token OpNot %token OpNot
%token OpXor %token OpXor
%token OpBitand
%token OpBitor
%token OpBitnot
%token OpBitxor
%token KeyImport %token KeyImport
%token KeySilent %token KeySilent
%token KeyBox %token KeyBox
@ -56,9 +55,6 @@
%token FunFunname %token FunFunname
%token FunLineno %token FunLineno
%token FunExtsupport %token FunExtsupport
%token ValStr
%token ValMultistr
%% %%
program: ; program: ;