📄 verilog-lex
字号:
%{#include <string.h>#include "../classes/List.h"#include "../classes/IODecl.h"#include "../classes/Module.h"#include "../classes/Util.h"#include "../classes/BitVec.h"#include "verilog-y.tab.h"extern int yylineno;extern YYSTYPE yylval;void yy_char_ptr(char *string);%}Space [\n\r\t\b ]Alpha [a-zA-Z]AlphaU [a-zA-Z_]AlphaNum [a-zA-Z0-9]AlphaNumU [a-zA-Z0-9_]Digit [0-9]DigitU [0-9_]Number {Digit}{DigitU}*Decimal ({Number})?'[dD]{Number}Octal ({Number})?'[oO][0-7xXzZ?][0-7xXzZ?_]*Hexa ({Number})?'[hH][0-9a-fA-FxXzZ?][0-9a-fA-FxXzZ?_]*Binary ({Number})?'[bB][01xXzZ?][01xXzZ?_]*%%{Space}+ { continue; }"/*"(.|\n)*"*/" { continue; }"//"[^\n]*\n { continue; }">=" { return VL_GEQ; }"=<" { return VL_LEQ; }"&&" { return VL_LOGAND; }"||" { return VL_LOGOR; }"===" { return VL_CASEEQUALITY; }"==" { return VL_LOGEQUALITY; }"!==" { return VL_CASEINEQUALITY; }"!=" { return VL_LOGINEQUALITY; }"^~" { return VL_LOGXNOR; }"~^" { return VL_LOGXNOR; }"~&" { return VL_LOGNAND; }"~|" { return VL_LOGNOR; }"<<" { return VL_LSHIFT; }">>" { return VL_RSHIFT; }"?:" { return VL_CONDITIONAL; }\"[^"]*\" { return VL_STRING; }always { return VL_ALWAYS; }"*>" { return VL_ALLPATH; }and { return VL_AND; }assign { return VL_ASSIGN; }begin { return VL_BEGIN; }buf { return VL_BUF; }bufif0 { return VL_BUFIF0; }bufif1 { return VL_BUFIF1; }case { return VL_CASE; }casex { return VL_CASEX; }casez { return VL_CASEZ; }cmos { return VL_CMOS; }deassign { return VL_DEASSIGN; }default { return VL_DEFAULT; }defparam { return VL_DEFPARAM; }disable { return VL_DISABLE; }edge { return VL_EDGE; }else { return VL_ELSE; }end { return VL_END; }endcase { return VL_ENDCASE; }endfunction { return VL_ENDFUNCTION; }endmodule { return VL_ENDMODULE; }endprimitive { return VL_ENDPRIMITIVE; }endspecify { return VL_ENDSPECIFY; }endtask { return VL_ENDTASK; }event { return VL_EVENT; }for { return VL_FOR; }forever { return VL_FOREVER; }fork { return VL_FORK; }function { return VL_FUNCTION; }highz0 { return VL_HIGHZ0; }highz1 { return VL_HIGHZ1; }if { return VL_IF; }initial { return VL_INITIAL; }inout { return VL_INOUT; }input { return VL_INPUT; }integer { return VL_INTEGER; }join { return VL_JOIN; }large { return VL_LARGE; }"=>" { return VL_LEADTO; }macromodule { return VL_MACROMODULE; }medium { return VL_MEDIUM; }module { return VL_MODULE; }"<=" { return VL_NBASSIGN; }nand { return VL_NAND; }negedge { return VL_NEGEDGE; }nmos { return VL_NMOS; }nor { return VL_NOR; }not { return VL_NOT; }notif0 { return VL_NOTIF0; }notif1 { return VL_NOTIF1; }or { return VL_OR; }output { return VL_OUTPUT; }parameter { return VL_PARAMETER; }pmos { return VL_PMOS; }posedge { return VL_POSEDGE; }primitive { return VL_PRIMITIVE; }pull0 { return VL_PULL0; }pull1 { return VL_PULL1; }pulldown { return VL_PULLDOWN; }pullup { return VL_PULLUP; }rcmos { return VL_RCMOS; }real { return VL_REAL; }reg { return VL_REG; }repeat { return VL_REPEAT; }"->" { return VL_RIGHTARROW; }rnmos { return VL_RNMOS; }rpmos { return VL_RPMOS; }rtran { return VL_RTRAN; }rtranif0 { return VL_RTRANIF0; }rtranif1 { return VL_RTRANIF1; }scalered { return VL_SCALARED; }small { return VL_SMALL; }specify { return VL_SPECIFY; }specparam { return VL_SPECPARAM; }strong0 { return VL_STRONG0; }strong1 { return VL_STRONG1; }supply0 { return VL_SUPPLY0; }supply1 { return VL_SUPPLY1; }swire { return VL_SWIRE; }task { return VL_TASK; }time { return VL_TIME; }tran { return VL_TRAN; }tranif0 { return VL_TRANIF0; }tranif1 { return VL_TRANIF1; }tri { return VL_TRI; }tri0 { return VL_TRI0; }tri1 { return VL_TRI1; }triand { return VL_TRIAND; }trior { return VL_TRIOR; }vectored { return VL_VECTORED; }wait { return VL_WAIT; }wand { return VL_WAND; }weak0 { return VL_WEAK0; }weak1 { return VL_WEAK1; }while { return VL_WHILE; }wire { return VL_WIRE; }wor { return VL_WOR; }xnor { return VL_XNOR; }xor { return VL_XOR; }{AlphaU}{AlphaNumU}* { yy_char_ptr(yytext); return VL_ID; }{Number}*\.{Number}+ { yy_char_ptr(clean(yytext)); return VL_RNUMBER; }{Number}+\.{Number}* { yy_char_ptr(clean(yytext)); return VL_RNUMBER; }{Number} { yy_char_ptr(clean(yytext)); return VL_INUMBER; }{Binary} { yylval.char_ptr=binary(yytext); return VL_BNUMBER; }{Decimal} { yylval.char_ptr=decimal(yytext); return VL_DNUMBER; } {Octal} { yylval.char_ptr=octal(yytext); return VL_ONUMBER; }{Hexa} { yylval.char_ptr=hexa(yytext); return VL_HNUMBER; }. { return yytext[0]; }%%void yy_char_ptr(char *string){ yylval.char_ptr=(char*)calloc(strlen(string)+1,sizeof(char)); strcpy(yylval.char_ptr,string); yylval.char_ptr[strlen(string)]='\0';}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -