📄 vparselex.l
字号:
"cell" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "config" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "design" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "endconfig" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "incdir" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "include" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "instance" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "liblist" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "library" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config "use" { FL; VALTEXT; CALLBACK(keywordCb); return ygenKEYWORD; } // config} /* Verilog 2005 */<V05,S05>{ /* Keywords */ "uwire" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; }} /* System Verilog 2005 */<S05>{ /* System Tasks */ "$root" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ROOT; } "$unit" { FL; VALTEXT; CALLBACK(keywordCb); return yD_UNIT; } /* Keywords */ "alias" { FL; VALTEXT; CALLBACK(keywordCb); return yALIAS; } "always_comb" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "always_ff" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "always_latch" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } "assert" { FL; VALTEXT; CALLBACK(keywordCb); return yASSERT; } "assume" { FL; VALTEXT; CALLBACK(keywordCb); return yASSUME; } "before" { FL; VALTEXT; CALLBACK(keywordCb); return yBEFORE; } "bind" { FL; VALTEXT; CALLBACK(keywordCb); return yBIND; } "bins" { FL; VALTEXT; CALLBACK(keywordCb); return yBINS; } "binsof" { FL; VALTEXT; CALLBACK(keywordCb); return yBINSOF; } "bit" { FL; VALTEXT; CALLBACK(keywordCb); return yBIT; } "break" { FL; VALTEXT; CALLBACK(keywordCb); return yBREAK; } "byte" { FL; VALTEXT; CALLBACK(keywordCb); return yBYTE; } "chandle" { FL; VALTEXT; CALLBACK(keywordCb); return yCHANDLE; } "class" { FL; VALTEXT; CALLBACK(keywordCb); return yCLASS; } "clocking" { FL; VALTEXT; CALLBACK(keywordCb); return yCLOCKING; } "const" { FL; VALTEXT; CALLBACK(keywordCb); return yCONST; } "constraint" { FL; VALTEXT; CALLBACK(keywordCb); return yCONSTRAINT; } "context" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTEXT; } "continue" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTINUE; } "cover" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVER; } "covergroup" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERGROUP; } "coverpoint" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERPOINT; } "cross" { FL; VALTEXT; CALLBACK(keywordCb); return yCROSS; } "dist" { FL; VALTEXT; CALLBACK(keywordCb); return yDIST; } "do" { FL; VALTEXT; CALLBACK(keywordCb); return yDO; } "endclass" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLASS; } "endclocking" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLOCKING; } "endgroup" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGROUP; } "endinterface" { FL; VALTEXT; CALLBACK(keywordCb); return yENDINTERFACE; } "endpackage" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPACKAGE; } "endprogram" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROGRAM; } "endproperty" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROPERTY; } "endsequence" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSEQUENCE; } "enum" { FL; VALTEXT; CALLBACK(keywordCb); return yENUM; } "expect" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPECT; } "export" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPORT; } "extends" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTENDS; } "extern" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTERN; } "final" { FL; VALTEXT; CALLBACK(keywordCb); return yFINAL; } "first_match" { FL; VALTEXT; CALLBACK(keywordCb); return yFIRST_MATCH; } "foreach" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREACH; } "forkjoin" { FL; VALTEXT; CALLBACK(keywordCb); return yFORKJOIN; } "iff" { FL; VALTEXT; CALLBACK(keywordCb); return yIFF; } "ignore_bins" { FL; VALTEXT; CALLBACK(keywordCb); return yIGNORE_BINS; } "illegal_bins" { FL; VALTEXT; CALLBACK(keywordCb); return yILLEGAL_BINS; } "import" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPORT; } "inside" { FL; VALTEXT; CALLBACK(keywordCb); return yINSIDE; } "int" { FL; VALTEXT; CALLBACK(keywordCb); return yINT; } "interface" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERFACE; } "intersect" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERSECT; } "join_any" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } "join_none" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } "local" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCAL; } "logic" { FL; VALTEXT; CALLBACK(keywordCb); return yLOGIC; } "longint" { FL; VALTEXT; CALLBACK(keywordCb); return yLONGINT; } "matches" { FL; VALTEXT; CALLBACK(keywordCb); return yMATCHES; } "modport" { FL; VALTEXT; CALLBACK(keywordCb); return yMODPORT; } "new" { FL; VALTEXT; CALLBACK(keywordCb); return yNEW; } "null" { FL; VALTEXT; CALLBACK(keywordCb); return yNULL; } "package" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKAGE; } "packed" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKED; } "priority" { FL; VALTEXT; CALLBACK(keywordCb); return yPRIORITY; } "program" { FL; VALTEXT; CALLBACK(keywordCb); return yPROGRAM; } "property" { FL; VALTEXT; CALLBACK(keywordCb); return yPROPERTY; } "protected" { FL; VALTEXT; CALLBACK(keywordCb); return yPROTECTED; } "pure" { FL; VALTEXT; CALLBACK(keywordCb); return yPURE; } "rand" { FL; VALTEXT; CALLBACK(keywordCb); return yRAND; } "randc" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDC; } "randcase" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDCASE; } "randomize" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDOMIZE; } "randsequence" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDSEQUENCE; } "ref" { FL; VALTEXT; CALLBACK(keywordCb); return yREF; } "return" { FL; VALTEXT; CALLBACK(keywordCb); return yRETURN; } "sequence" { FL; VALTEXT; CALLBACK(keywordCb); return ySEQUENCE; } "shortint" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTINT; } "shortreal" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTREAL; } "solve" { FL; VALTEXT; CALLBACK(keywordCb); return ySOLVE; } "static" { FL; VALTEXT; CALLBACK(keywordCb); return ySTATIC; } "string" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRING; } "struct" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRUCT; } "super" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPER; } "tagged" { FL; VALTEXT; CALLBACK(keywordCb); return yTAGGED; } "this" { FL; VALTEXT; CALLBACK(keywordCb); return yTHIS; } "throughout" { FL; VALTEXT; CALLBACK(keywordCb); return yTHROUGHOUT; } "timeprecision" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEPRECISION; } "timeunit" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEUNIT; } "type" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPE; } "typedef" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPEDEF; } "union" { FL; VALTEXT; CALLBACK(keywordCb); return yUNION; } "unique" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE; } "var" { FL; VALTEXT; CALLBACK(keywordCb); return yVAR; } "virtual" { FL; VALTEXT; CALLBACK(keywordCb); return yVIRTUAL; } "void" { FL; VALTEXT; CALLBACK(keywordCb); return yVOID; } "wait_order" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT_ORDER; } "wildcard" { FL; VALTEXT; CALLBACK(keywordCb); return yWILDCARD; } "with" { FL; VALTEXT; CALLBACK(keywordCb); return yWITH; } "within" { FL; VALTEXT; CALLBACK(keywordCb); return yWITHIN; }} /* Default PLI rule */<V95,V01,V05,S05>{ "$"[a-zA-Z_$][a-zA-Z0-9_$]* { FL; VALTEXT; CALLBACK(sysfuncCb); return ygenSYSCALL; }} /************************************************************************/ /* Single character operator thingies */<V95,V01,V05,S05>{ "!" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "#" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "$" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "%" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "&" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "(" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ")" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "*" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "+" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "," { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "-" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "." { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "/" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ":" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ";" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "<" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "=" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } ">" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "?" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "@" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "[" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "]" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "^" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "{" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "|" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "}" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } "~" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; }} /************************************************************************/ /* Operators and multi-character symbols */<V95,V01,V05,S05>{ "&&" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDAND; } "||" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OROR; } "<=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_LTE; } ">=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_GTE; } "<<" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } ">>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHT; } "==" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQUAL; } "!=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOTEQUAL; } "===" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASEEQUAL; } "!==" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASENOTEQUAL; } "^~" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } "~^" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } "~&" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NAND; } "~|" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOR; } "->" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGT; } "=>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQGT; } "*>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ASTGT; } "&&&" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDANDAND; }} /* Verilog 2001 Operators */<V01,V05,S05>{ "<<<" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } ">>>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHT; } "**" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POW; } "+:" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSCOLON; } "-:" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSCOLON; } ".*" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DOTSTAR; }} /* SystemVerilog Operators */<S05>{ "'" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICK; } "'{" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICKBRA; } "==?" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDEQUAL; } "!=?" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDNOTEQUAL; } "++" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSPLUS; } "--" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSMINUS; } "+=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSEQ; } "-=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSEQ; } "*=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TIMESEQ; } "/=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DIVEQ; } "%=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MODEQ; } "&=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDEQ; } "|=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQ; } "^=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XOREQ; } "<<=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } ">>=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHTEQ; } "<<<=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } ">>>=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHTEQ; } "->>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGTGT; } "##" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDPOUND; } "@@" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ATAT; } "::" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONCOLON; } ":=" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONEQ; } ":/"[^\/\*] { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONDIV; } /* : then comment is not ":/" */ "|->" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ORMINUSGT; } "|=>" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQGT; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -