1%option prefix="asm_" 2%option outfile="lex.yy.c" 3%option noyywrap 4%option nounput 5%option noinput 6 7D [0-9] 8H [0-9a-fA-F_] 9L [a-zA-Z_] 10T [0-9a-zA-Z_] 11IDENTIFIER {L}+{T}* 12 13%{ 14 15#include <stdio.h> 16#include "tokenizer.h" 17%} 18 19%x comment 20%x string_literal 21 22%% 23"auto" { return(TOKENIZER_TYPE); } 24"bool" { return(TOKENIZER_TYPE); } 25"char" { return(TOKENIZER_TYPE); } 26"class" { return(TOKENIZER_TYPE); } 27"const" { return(TOKENIZER_TYPE); } 28"double" { return(TOKENIZER_TYPE); } 29"enum" { return(TOKENIZER_TYPE); } 30"extern" { return(TOKENIZER_TYPE); } 31"explicit" { return(TOKENIZER_TYPE); } 32"float" { return(TOKENIZER_TYPE); } 33"friend" { return(TOKENIZER_TYPE); } 34"inline" { return(TOKENIZER_TYPE); } 35"int" { return(TOKENIZER_TYPE); } 36"long" { return(TOKENIZER_TYPE); } 37"mutable" { return(TOKENIZER_TYPE); } 38"namespace" { return(TOKENIZER_TYPE); } 39"register" { return(TOKENIZER_TYPE); } 40"short" { return(TOKENIZER_TYPE); } 41"signed" { return(TOKENIZER_TYPE); } 42"static" { return(TOKENIZER_TYPE); } 43"struct" { return(TOKENIZER_TYPE); } 44"union" { return(TOKENIZER_TYPE); } 45"unsigned" { return(TOKENIZER_TYPE); } 46"virtual" { return(TOKENIZER_TYPE); } 47"void" { return(TOKENIZER_TYPE); } 48"volatile" { return(TOKENIZER_TYPE); } 49"wchar_t" { return(TOKENIZER_TYPE); } 50 51"and" { return(TOKENIZER_KEYWORD); } 52"and_eq" { return(TOKENIZER_KEYWORD); } 53"asm" { return(TOKENIZER_KEYWORD); } 54"bitand" { return(TOKENIZER_KEYWORD); } 55"bitor" { return(TOKENIZER_KEYWORD); } 56"break" { return(TOKENIZER_KEYWORD); } 57"case" { return(TOKENIZER_KEYWORD); } 58"catch" { return(TOKENIZER_KEYWORD); } 59"compl" { return(TOKENIZER_KEYWORD); } 60"const_cast" { return(TOKENIZER_KEYWORD); } 61"continue" { return(TOKENIZER_KEYWORD); } 62"default" { return(TOKENIZER_KEYWORD); } 63"delete" { return(TOKENIZER_KEYWORD); } 64"do" { return(TOKENIZER_KEYWORD); } 65"dynamic_cast" { return(TOKENIZER_KEYWORD); } 66"else" { return(TOKENIZER_KEYWORD); } 67"export" { return(TOKENIZER_KEYWORD); } 68"false" { return(TOKENIZER_KEYWORD); } 69"for" { return(TOKENIZER_KEYWORD); } 70"goto" { return(TOKENIZER_KEYWORD); } 71"if" { return(TOKENIZER_KEYWORD); } 72"new" { return(TOKENIZER_KEYWORD); } 73"not" { return(TOKENIZER_KEYWORD); } 74"not_eq" { return(TOKENIZER_KEYWORD); } 75"operator" { return(TOKENIZER_KEYWORD); } 76"or" { return(TOKENIZER_KEYWORD); } 77"or_eq" { return(TOKENIZER_KEYWORD); } 78"private" { return(TOKENIZER_KEYWORD); } 79"protected" { return(TOKENIZER_KEYWORD); } 80"public" { return(TOKENIZER_KEYWORD); } 81"reinterpret_cast" { return(TOKENIZER_KEYWORD); } 82"return" { return(TOKENIZER_KEYWORD); } 83"sizeof" { return(TOKENIZER_KEYWORD); } 84"static_cast" { return(TOKENIZER_KEYWORD); } 85"switch" { return(TOKENIZER_KEYWORD); } 86"template" { return(TOKENIZER_KEYWORD); } 87"this" { return(TOKENIZER_KEYWORD); } 88"throw" { return(TOKENIZER_KEYWORD); } 89"true" { return(TOKENIZER_KEYWORD); } 90"try" { return(TOKENIZER_KEYWORD); } 91"typedef" { return(TOKENIZER_KEYWORD); } 92"typeid" { return(TOKENIZER_KEYWORD); } 93"typename" { return(TOKENIZER_KEYWORD); } 94"using" { return(TOKENIZER_KEYWORD); } 95"while" { return(TOKENIZER_KEYWORD); } 96"xor" { return(TOKENIZER_KEYWORD); } 97"xor_eq" { return(TOKENIZER_KEYWORD); } 98 99"QWORD" { return(TOKENIZER_KEYWORD); } 100"XMMWORD" { return(TOKENIZER_KEYWORD); } 101"DWORD" { return(TOKENIZER_KEYWORD); } 102"WORD" { return(TOKENIZER_KEYWORD); } 103"BYTE" { return(TOKENIZER_KEYWORD); } 104"PTR" { return(TOKENIZER_KEYWORD); } 105 106"/*" { BEGIN(comment); return(TOKENIZER_COMMENT); } 107<comment>[^*\r\n]* { return(TOKENIZER_COMMENT); } 108<comment>"*"+[^*/\r\n]* { return(TOKENIZER_COMMENT); } 109<comment>\n { return(TOKENIZER_NEWLINE); } 110<comment>\r { return(TOKENIZER_NEWLINE); } 111<comment>\r\n { return(TOKENIZER_NEWLINE); } 112<comment>"*"+"/" { BEGIN(INITIAL); return(TOKENIZER_COMMENT); } 113 114\/\/[^\r\n]* { return(TOKENIZER_COMMENT); } 115 116#{L}+ { return(TOKENIZER_DIRECTIVE); } 117 118\" { BEGIN(string_literal); return(TOKENIZER_LITERAL); } 119<string_literal>(\\[^\r\n]|[^\\"\r\n])* { return(TOKENIZER_LITERAL); } 120<string_literal>\n { return(TOKENIZER_NEWLINE); } 121<string_literal>\r { return(TOKENIZER_NEWLINE); } 122<string_literal>\r\n { return(TOKENIZER_NEWLINE); } 123<string_literal>\" { BEGIN(INITIAL); return(TOKENIZER_LITERAL); } 124 125 126{D}+ { return(TOKENIZER_LITERAL); } 127{D}+[lL] { return(TOKENIZER_LITERAL); } 128{D}+[uU] { return(TOKENIZER_LITERAL); } 129{D}+[lL][lL] { return(TOKENIZER_LITERAL); } 130{D}+[uU][lL] { return(TOKENIZER_LITERAL); } 131{D}+[uU][lL][lL] { return(TOKENIZER_LITERAL); } 132{D}+[lL][uU] { return(TOKENIZER_LITERAL); } 133{D}+[lL][lL][uU] { return(TOKENIZER_LITERAL); } 1340x{H}+ { return(TOKENIZER_LITERAL); } 1350x{H}+[lL] { return(TOKENIZER_LITERAL); } 1360x{H}+[uU] { return(TOKENIZER_LITERAL); } 1370x{H}+[lL][lL] { return(TOKENIZER_LITERAL); } 1380x{H}+[uU][lL] { return(TOKENIZER_LITERAL); } 1390x{H}+[uU][lL][lL] { return(TOKENIZER_LITERAL); } 1400x{H}+[lL][uU] { return(TOKENIZER_LITERAL); } 1410x{H}+[lL][lL][uU] { return(TOKENIZER_LITERAL); } 142 143{D}*\.?{D}+([eE][-+]?{D}+)? { return(TOKENIZER_LITERAL); } 144{D}+\.?({D})?+[fF] { return(TOKENIZER_LITERAL); } 145\.{D}+[fF] { return(TOKENIZER_LITERAL); } 146 147'.' { return(TOKENIZER_LITERAL); } 148'\\.' { return(TOKENIZER_LITERAL); } 149 150\n { return(TOKENIZER_NEWLINE); } 151\r\n { return(TOKENIZER_NEWLINE); } 152\r { return(TOKENIZER_NEWLINE); } 153[ \t\v\f] { return(TOKENIZER_TEXT); } 154{IDENTIFIER} { return(TOKENIZER_TEXT); } 155. { return(TOKENIZER_TEXT); } 156 157%% 158