diff options
| author | Jimmy Kwa <[email protected]> | 2010-10-28 12:07:29 -0800 |
|---|---|---|
| committer | Jimmy Kwa <[email protected]> | 2010-10-28 12:07:29 -0800 |
| commit | 0586c55d7688f492d5264cb9299cf00ff73d3df7 (patch) | |
| tree | ef1ecc58933398e333f16dc56915bdffc64ef422 /decuda_to_ptxplus/header.l | |
| parent | 0efd3c00f5611bfa82b01d87d175122388d621cc (diff) | |
used p4 integrate to copy decuda_to_ptxplus into the distribtion folder. Edited baseline_ptxplus.config so the ptxplus regression runs properly.
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7942]
Diffstat (limited to 'decuda_to_ptxplus/header.l')
| -rw-r--r-- | decuda_to_ptxplus/header.l | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/decuda_to_ptxplus/header.l b/decuda_to_ptxplus/header.l new file mode 100644 index 0000000..848c189 --- /dev/null +++ b/decuda_to_ptxplus/header.l @@ -0,0 +1,95 @@ +%option noyywrap +%option yylineno +%option prefix="header_" +%{ +#include <iostream> +#include "headerParser.hpp" +#include <string.h> + +/* not sure if this is needed*/ +#define YY_NEVER_INTERACTIVE 1 + +void header_error(const char*); +extern void output(const char * text); +%} + + +/*Regular expresions go here*/ +alpha [a-zA-Z] +numeric [0-9] +hexalpha [A-Fa-f] +alphanum ({alpha}|{numeric}) +hexdigit ({numeric}|{hexalpha}) +whitespace [ \t] +newline [\n] +anycharbutnewline [^\n] +anychar ({newline}|{anycharbutnewline}) +anycharbutrightbrace [^"}"] + +identifier ({alpha}({alphanum}|["_$"])*)|([_$%]({alphanum}|["_$"])+) +hexliteral 0[xX]{hexdigit}+U? +octliteral 0[0-7]+U? +binliteral 0[bB][01]+U? +decliteral ([1-9][0-9]*U?)|0U? + +%% + /*Translation rules*/ + + /*Compiler directives*/ +\.version return DOTVERSION; +\.target return DOTTARGET; +\.entry return DOTENTRY; + + /*State spaces*/ +\.param return DOTPARAM; + + /*operand types*/ +\.u64 return DOTU64; +\.u32 return DOTU32; +\.u16 return DOTU16; +\.b32 return DOTB32; +\.f32 return DOTF32; + + + /*identifier + literals*/ +{identifier} header_lval.string_value = strdup(yytext); return IDENTIFER; +{decliteral} header_lval.string_value = strdup(yytext); return DECLITERAL; //change to int later? + + /*braces and parenthesis*/ +\( return LEFTPAREN; +\) return RIGHTPAREN; + + /*discard newline*/ +{newline}+ + + + /*discard commas and periods*/ +\, +\. + /*discard whitespace*/ +{whitespace}+ + /*discard comments*/ +"//"{anycharbutnewline}*{newline} + + /*discard other header stuff*/ +\.file{anycharbutnewline}*{newline} +\.extern{anycharbutnewline}*{newline} + + /*discard kernel body*/ +\{{anycharbutrightbrace}*\} + + /*reached end of file*/ +<<EOF>> return 0; + + /*None of the rules matched. Throw error*/ +. header_error("Invalid token"); + +%% + +void header_error(const char* message) +{ + output(" "); output(message); output(" near \""); output(header_text); output("\""); + output(" on line "); + char line[5]; sprintf(line, "%i", header_lineno); output(line); + output("\n"); +} |
