go-analyzer/analyzers/test/test.l

134 lines
3.7 KiB
Plaintext

%{
#include <stdio.h>
#include <stdbool.h>
#include "test.tab.h"
%}
%option noyywrap
%option yylineno
DIGIT [0-9]
LETTER [a-zA-Z_]
HEX [0-9a-fA-F]
OCT [0-7]
BIN [0-1]
QUOTE ["']
%%
{QUOTE}{LETTER}*{QUOTE} {return STRING;}
{LETTER}({LETTER}|{DIGIT})* { return IDENT;}
{DIGIT}+ { yylval.num = atoi(yytext); return NUMBER; }
"break" { return BREAK; }
"switch" { return SWITCH; }
"case" { return CASE; }
"chan" { return CHAN; }
"const" { return CONST; }
"continue" { return CONTINUE; }
"default" { return DEFAULT; }
"defer" { return DEFER; }
"else" { return ELSE; }
"fallthrough" { return FALLTHROUGH; }
"for" { return FOR; }
"func" { return FUNC; }
"go" { return GO; }
"goto" { return GOTO; }
"if" { return IF; }
"import" { return IMPORT; }
"interface" { return INTERFACE; }
"map" { return MAP; }
"package" { return PACKAGE; }
"range" { return RANGE; }
"return" { return RETURN; }
"select" { return SELECT; }
"struct" { return STRUCT; }
"type" { return TYPE; }
"var" { return VAR; }
"uint8" { return UINT8; }
"uint16" { return UINT16; }
"uint32" { return UINT32; }
"uint64" { return UINT64; }
"int8" { return INT8; }
"int16" { return INT16; }
"int32" { return INT32; }
"int64" { return INT64; }
"float32" { return FLOAT32; }
"float64" { return FLOAT64; }
"complex64" { return COMPLEX64; }
"complex128" { return COMPLEX128; }
"byte" { return BYTE; }
"rune" { return RUNE; }
"uint" { return UINT; }
"int" { return INT; }
"uintptr" { return UINT_PTR; }
"string" { return STRING_LIT;}
"true" { yylval.bool_val = true; return BOOL_LIT; }
"false" { yylval.bool_val = false; return BOOL_LIT; }
"nil" { return NIL; }
"+" { return PLUS; }
"-" { return MINUS; }
"*" { return STAR; }
"/" { return DIV; }
"%" { return MOD; }
"&" { return AMPERSAND; }
"|" { return PIPE; }
"^" { return XOR; }
"<<" { return LSHIFT; }
">>" { return RSHIFT; }
"&^" { return AND_NOT; }
"+=" { return PLUS_EQ; }
"-=" { return MINUS_EQ; }
"*=" { return MUL_EQ; }
"/=" { return DIV_EQ; }
"%=" { return MOD_EQ; }
"&=" { return AMPERSAND_EQ; }
"|=" { return PIPE_EQ; }
"^=" { return XOR_EQ; }
"<<=" { return LSHIFT_EQ; }
">>=" { return RSHIFT_EQ; }
"&^=" { return AND_NOT_EQ; }
"++" { return INC; }
"--" { return DEC; }
"==" { return EQ; }
"&&" { return AND; }
"||" { return OR; }
"!" { return NOT; }
"!=" { return NEQ; }
"<-" { return ARROW; }
"<" { return LT; }
">" { return GT; }
"=" { return ASSIGN; }
"<=" { return LEQ; }
">=" { return GEQ; }
":=" { return SHORT_ASSIGN; }
"..." { return DOTS; }
":" { return COLON; }
";" { return SEMICOLON; }
"," { return COMMA; }
"." { return DOT; }
"(" { return LPAREN; }
")" { return RPAREN; }
"[" { return LBRACK; }
"]" { return RBRACK; }
"{" { return LBRACE; }
"}" { return RBRACE; }
"//".* { }
"/\*"(.|\n)*?"\*/" { }
[ \t\n\r]+ { }
. { fprintf(stderr, "Unexpected symbol: %s\n", yytext); }
%%