diff --git a/src/verilog.y b/src/verilog.y index db555d064..a7ca89d87 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -259,8 +259,27 @@ class AstSenTree; %token yVL_TRACING_OFF "/*verilator tracing_off*/" %token yVL_TRACING_ON "/*verilator tracing_on*/" +%token yP_OROR "||" +%token yP_ANDAND "&&" +%token yP_NOR "~|" +%token yP_XNOR "^~" +%token yP_NAND "~&" +%token yP_EQUAL "==" +%token yP_NOTEQUAL "!=" +%token yP_CASEEQUAL "===" +%token yP_CASENOTEQUAL "!==" +%token yP_WILDEQUAL "==?" +%token yP_WILDNOTEQUAL "!=?" +%token yP_GTE ">=" +%token yP_LTE "<=" +%token yP_SLEFT "<<" +%token yP_SRIGHT ">>" +%token yP_SSRIGHT ">>>" +%token yP_POW "**" + %token yP_PLUSCOLON "+:" %token yP_MINUSCOLON "-:" +%token yP_MINUSGT "->" %token yP_MINUSGTGT "->>" %token yP_EQGT "=>" %token yP_ASTGT "*>" @@ -272,6 +291,8 @@ class AstSenTree; %token yP_COLONCOLON "::" %token yP_COLONEQ ":=" %token yP_COLONDIV ":/" +%token yP_ORMINUSGT "|->" +%token yP_OREQGT "|=>" %token yP_PLUSEQ "+=" %token yP_MINUSEQ "-=" @@ -287,8 +308,34 @@ class AstSenTree; %token yPSL_BRA "{" %token yPSL_KET "}" +%token yP_LOGIFF -%token ';' '=' ',' '(' '.' '!' '~' '[' '@' '#' +%token '!' +%token '#' +%token '%' +%token '&' +%token '(' +%token ')' +%token '*' +%token '+' +%token ',' +%token '-' +%token '.' +%token '/' +%token ':' +%token ';' +%token '<' +%token '=' +%token '>' +%token '?' +%token '@' +%token '[' +%token ']' +%token '^' +%token '{' +%token '|' +%token '}' +%token '~' // [* is not a operator, as "[ * ]" is legal // [= and [-> could be repitition operators, but to match [* we don't add them. @@ -297,29 +344,29 @@ class AstSenTree; //******************** // PSL op precedence -%right yP_MINUSGT yP_LOGIFF /* MinusGT == -> == PSL LogIf operator */ -%right yP_ORMINUSGT yP_OREQGT -%left prPSLCLK +%right yP_MINUSGT yP_LOGIFF +%right yP_ORMINUSGT yP_OREQGT +%left prPSLCLK // Verilog op precedence -%left ':' -%left '?' -%left yP_OROR -%left yP_ANDAND -%left '|' yP_NOR -%left '^' -%left yP_XNOR -%left '&' yP_NAND -%left yP_EQUAL yP_NOTEQUAL yP_CASEEQUAL yP_CASENOTEQUAL yP_WILDEQUAL yP_WILDNOTEQUAL -%left '>' '<' yP_GTE yP_LTE -%left yP_SLEFT yP_SRIGHT yP_SSRIGHT -%left '+' '-' -%left '*' '/' '%' -%left yP_POW -%left '{' '}' -%left prUNARYARITH -%left prREDUCTION -%left prNEGATION +%left ':' +%left '?' +%left yP_OROR +%left yP_ANDAND +%left '|' yP_NOR +%left '^' +%left yP_XNOR +%left '&' yP_NAND +%left yP_EQUAL yP_NOTEQUAL yP_CASEEQUAL yP_CASENOTEQUAL yP_WILDEQUAL yP_WILDNOTEQUAL +%left '>' '<' yP_GTE yP_LTE +%left yP_SLEFT yP_SRIGHT yP_SSRIGHT +%left '+' '-' +%left '*' '/' '%' +%left yP_POW +%left '{' '}' +%left prUNARYARITH +%left prREDUCTION +%left prNEGATION %nonassoc prLOWER_THAN_ELSE %nonassoc yELSE @@ -1167,6 +1214,7 @@ specifyJunk: dlyTerm {} /* ignored */ | '[' {} | ']' {} | '|' {} | '~' {} + | '@' {} | yIF {} | yNEGEDGE {}