| /* |
| Copyright 2019 Alain Dargelas |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| lexer grammar SV3_1aLexer; |
| |
| // ################################## TOKENS ################################## |
| |
| channels { |
| WHITESPACES, |
| COMMENTS |
| } |
| |
| QMARK : '?' ; |
| |
| TICK_b0 : '\'b0' ; |
| |
| TICK_b1 : '\'b1' ; |
| |
| TICK_B0 : '\'B0' ; |
| |
| TICK_B1 : '\'B1' ; |
| |
| TICK_0 : '\'0' ; |
| |
| TICK_1 : '\'1' ; |
| |
| ONE_TICK_b0 : '1\'b0' ; |
| |
| ONE_TICK_b1 : '1\'b1' ; |
| |
| ONE_TICK_bx : '1\'bx' ; |
| |
| ONE_TICK_bX : '1\'bX' ; |
| |
| ONE_TICK_B0 : '1\'B0' ; |
| |
| ONE_TICK_B1 : '1\'B1' ; |
| |
| ONE_TICK_Bx : '1\'Bx' ; |
| |
| ONE_TICK_BX : '1\'BX' ; |
| |
| Pound_delay : '#' (' ')* [0-9] [0-9_.]* ; |
| |
| fragment |
| Non_zero_unsigned_number : '1'..'9' ( '_' | Decimal_digit )* ; |
| |
| fragment |
| Decimal_number |
| : Unsigned_number |
| | ( Non_zero_unsigned_number ' '* )? Decimal_base ' '* Unsigned_number |
| | ( Non_zero_unsigned_number ' '* )? Decimal_base ' '* X_digit ( '_' )* |
| | ( Non_zero_unsigned_number ' '* )? Decimal_base ' '* Z_digit ( '_' )* |
| ; |
| |
| /* binary_number ::= [ size ] binary_base binary_value */ |
| |
| fragment |
| Binary_number : ( Non_zero_unsigned_number ' '* )? Binary_base ' '* Binary_value ; |
| |
| /* octal_number ::= [ size ] octal_base octal_value */ |
| |
| fragment |
| Octal_number : ( Non_zero_unsigned_number ' '* )? Octal_base ' '* Octal_value ; |
| |
| /* hex_number ::= [ size ] hex_base hex_value */ |
| |
| fragment |
| Hex_number : ( Non_zero_unsigned_number ' '* )? Hex_base ' '* Hex_value ; |
| |
| Integral_number |
| : Decimal_number |
| | Octal_number |
| | Binary_number |
| | Hex_number |
| ; |
| |
| /* real_number ::= |
| fixed_point_number |
| | unsigned_number [ . unsigned_number ] exp [ sign ] unsigned_number */ |
| |
| Real_number |
| : Fixed_point_number |
| | Unsigned_number ( '.' Unsigned_number )? ('e'|'E') ( PLUS | MINUS )? Unsigned_number |
| ; |
| |
| /* fixed_point_number <<1>> ::= unsigned_number . unsigned_number */ |
| |
| fragment |
| Fixed_point_number : Unsigned_number DOT Unsigned_number ; |
| |
| /* unsigned_number <<1>> ::= decimal_digit { _ | decimal_digit } */ |
| |
| fragment |
| Unsigned_number : Decimal_digit ( '_' | Decimal_digit )* ; |
| |
| /* binary_value <<1>> ::= binary_digit { _ | binary_digit } */ |
| |
| fragment |
| Binary_value : ('_')* Binary_digit ( '_' | Binary_digit )* ; |
| |
| /* octal_value <<1>> ::= octal_digit { _ | octal_digit } */ |
| |
| fragment |
| Octal_value : ('_')* Octal_digit ( '_' | Octal_digit )* ; |
| |
| /* hex_value <<1>> ::= hex_digit { _ | hex_digit } */ |
| |
| fragment |
| Hex_value : ('_')* Hex_digit ( '_' | Hex_digit )* ; |
| |
| /* decimal_base <<1>> ::= [s|S]d | [s|S]D */ |
| |
| fragment |
| Decimal_base : '\'' ('s' | 'S')? ('d' | 'D') ; |
| |
| /* binary_base <<1>> ::= [s|S]b | [s|S]B */ |
| |
| fragment |
| Binary_base : '\'' ('s' | 'S')? ('b' | 'B') ; |
| |
| /* octal_base <<1>> ::= [s|S]o | [s|S]O */ |
| |
| fragment |
| Octal_base : '\'' ('s' | 'S')? ( 'o' | 'O') ; |
| |
| /* hex_base <<1>> ::ps [s|S]h | [s|S]H */ |
| |
| fragment |
| Hex_base : '\'' ('s' | 'S')? ('h' | 'H') ; |
| |
| |
| /* decimal_digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 */ |
| |
| fragment |
| Decimal_digit : '0'..'9' ; |
| |
| /* binary_digit ::= x_digit | z_digit | 0 | 1 */ |
| |
| fragment |
| Binary_digit : X_digit | Z_digit | ('0' | '1') ; |
| |
| /* octal_digit ::= x_digit | z_digit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 */ |
| |
| fragment |
| Octal_digit : X_digit | Z_digit | '0'..'7' ; |
| |
| /* hex_digit ::= x_digit | z_digit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f | A | B | C | D | E | F */ |
| |
| fragment |
| Hex_digit : X_digit | Z_digit | ('0'..'9' | 'a'..'f' | 'A'..'F') ; |
| |
| /* x_digit ::= x | X */ |
| |
| fragment |
| X_digit : ('x'| 'X') ; |
| |
| /* z_digit ::= z | Z | ? */ |
| |
| fragment |
| Z_digit : ('z'| 'Z' | QMARK) ; |
| |
| /* edge_descriptor */ |
| |
| /* z_or_x ::= x | X | z | Z */ |
| |
| // A.8.8 Strings |
| |
| String |
| : '"' // a opening quote |
| ( // start group |
| '\\' ~('\r') // an escaped char other than a line break char |
| | // OR |
| ~('\\' | '"'| '\r' | '\n') // any char other than '"', '\' and line breaks |
| )* // end group and repeat zero or more times |
| '"' // the closing quote |
| ; |
| |
| // A.9.2 Comments |
| |
| /* one_line_comment ::= // comment_text \n */ |
| |
| One_line_comment : '//' Comment_text '\r'? ('\n' | EOF) -> channel(COMMENTS); |
| |
| // block_comment ::= /* comment_text */ |
| |
| Block_comment : '/*' Comment_text '*/' -> channel(COMMENTS); |
| |
| /* comment_text ::= { Any_ASCII_character } */ |
| |
| fragment Comment_text : .*? ; |
| |
| ASSOCIATIVE_UNSPECIFIED : '[' [ ]* '*' [ ]* ']' ; |
| |
| ATSTAR : '@' ' '? '*' ; |
| |
| AT_PARENS_STAR : '@' ' '? '(' ' '? '*' ' '? ')' ; |
| |
| // 9.4 White space |
| |
| White_space : [ \t\n\r]+ -> channel(WHITESPACES) ; |
| |
| // ######################### LEXER RULES ################################ |
| |
| INCLUDE : 'include'; |
| |
| LIBRARY : 'library' ; |
| |
| INCDIR : '-incdir' ; |
| |
| COMMA : ',' ; |
| |
| SEMICOLUMN : ';' ; |
| |
| COLUMNCOLUMN : '::' ; |
| |
| COLUMN : ':' ; |
| |
| DESIGN : 'design' ; |
| |
| DOT : '.' ; |
| |
| DEFAULT : 'default' ; |
| |
| INSTANCE : 'instance' ; |
| |
| CELL : 'cell' ; |
| |
| LIBLIST : 'liblist' ; |
| |
| USE : 'use' ; |
| |
| MODULE : 'module'; |
| |
| ENDMODULE : 'endmodule' ; |
| |
| OPEN_PARENS : '(' ; |
| |
| CLOSE_PARENS : ')' ; |
| |
| STAR : '*' ; |
| |
| EXTERN : 'extern' ; |
| |
| MACROMODULE : 'macromodule' ; |
| |
| INTERFACE : 'interface' ; |
| |
| ENDINTERFACE : 'endinterface' ; |
| |
| PROGRAM : 'program' ; |
| |
| ENDPROGRAM : 'endprogram' ; |
| |
| VIRTUAL : 'virtual' ; |
| |
| CLASS : 'class' ; |
| |
| ENDCLASS : 'endclass' ; |
| |
| EXTENDS : 'extends' ; |
| |
| PACKAGE : 'package' ; |
| |
| ENDPACKAGE : 'endpackage' ; |
| |
| TIMEUNIT : 'timeunit' ; |
| |
| TIMEPRECISION : 'timeprecision' ; |
| |
| CHECKER : 'checker' ; |
| |
| ENDCHECKER : 'endchecker' ; |
| |
| CONFIG : 'config' ; |
| |
| ENDCONFIG : 'endconfig' ; |
| |
| TYPE : 'type' ; |
| |
| UNTYPED : 'untyped' ; |
| |
| INPUT : 'input' ; |
| |
| OUTPUT : 'output' ; |
| |
| INOUT : 'inout' ; |
| |
| REF : 'ref' ; |
| |
| CLOCKING : 'clocking' ; |
| |
| DEFPARAM : 'defparam' ; |
| |
| BIND : 'bind' ; |
| |
| FORKJOIN : 'forkjoin' ; |
| |
| CONST : 'const' ; |
| |
| FUNCTION : 'function' ; |
| |
| NEW : 'new' ; |
| |
| STATIC : 'static' ; |
| |
| PROTECTED : 'protected' ; |
| |
| LOCAL : 'local' ; |
| |
| RAND : 'rand' ; |
| |
| RANDC : 'randc' ; |
| |
| SUPER : 'super' ; |
| |
| ENDFUNCTION : 'endfunction' ; |
| |
| CONSTRAINT : 'constraint' ; |
| |
| OPEN_CURLY : '{' ; |
| |
| CLOSE_CURLY : '}' ; |
| |
| SOLVE : 'solve' ; |
| |
| BEFORE : 'before' ; |
| |
| IMPLY : '->' ; |
| |
| IF : 'if' ; |
| |
| ELSE : 'else'; |
| |
| FOREACH : 'foreach' ; |
| |
| ASSIGN_VALUE : ':=' ; |
| |
| /* Replaced by COLUMN DIV : ASSIGN_RANGE : ':/' ; */ |
| |
| AUTOMATIC : 'automatic' ; |
| |
| LOCALPARAM : 'localparam' ; |
| |
| PARAMETER : 'parameter' ; |
| |
| SPECPARAM : 'specparam' ; |
| |
| IMPORT : 'import' ; |
| |
| GENVAR : 'genvar' ; |
| |
| VECTORED : 'vectored' ; |
| |
| SCALARED : 'scalared' ; |
| |
| TYPEDEF : 'typedef' ; |
| |
| ENUM : 'enum'; |
| |
| STRUCT : 'struct' ; |
| |
| UNION : 'union' ; |
| |
| PACKED : 'packed' ; |
| |
| STRING : 'string' ; |
| |
| CHANDLE : 'chandle' ; |
| |
| EVENT : 'event' ; |
| |
| OPEN_BRACKET : '[' ; |
| |
| CLOSE_BRACKET : ']' ; |
| |
| BYTE : 'byte' ; |
| |
| SHORTINT : 'shortint'; |
| |
| INT : 'int' ; |
| |
| LONGINT : 'longint' ; |
| |
| INTEGER : 'integer' ; |
| |
| TIME : 'time' ; |
| |
| BIT : 'bit' ; |
| |
| LOGIC : 'logic' ; |
| |
| REG : 'reg' ; |
| |
| SHORTREAL : 'shortreal' ; |
| |
| REAL : 'real' ; |
| |
| REALTIME : 'realtime' ; |
| |
| NEXTTIME : 'nexttime' ; |
| |
| S_NEXTTIME : 's_nexttime' ; |
| |
| S_ALWAYS : 's_always' ; |
| |
| UNTIL_WITH : 'until_with' ; |
| |
| S_UNTIL_WITH : 's_until_with'; |
| |
| ACCEPT_ON : 'accept_on' ; |
| |
| REJECT_ON : 'reject_on' ; |
| |
| SYNC_ACCEPT_ON : 'sync_accept_on' ; |
| |
| SYNC_REJECT_ON : 'sync_reject_on' ; |
| |
| EVENTUALLY : 'eventually' ; |
| |
| S_EVENTUALLY : 's_eventually' ; |
| |
| SUPPLY0 : 'supply0' ; |
| |
| SUPPLY1 : 'supply1' ; |
| |
| TRI : 'tri' ; |
| |
| TRIAND : 'triand' ; |
| |
| TRIOR : 'trior' ; |
| |
| TRI0 : 'tri0' ; |
| |
| TRI1 : 'tri1' ; |
| |
| WIRE : 'wire' ; |
| |
| UWIRE : 'uwire' ; |
| |
| WAND : 'wand' ; |
| |
| WOR : 'wor' ; |
| |
| TRIREG : 'trireg' ; |
| |
| SIGNED : 'signed' ; |
| |
| UNSIGNED : 'unsigned' ; |
| |
| INTERCONNECT : 'interconnect' ; |
| |
| VAR : 'var' ; |
| |
| VOID : 'void' ; |
| |
| HIGHZ0 : 'highz0' ; |
| |
| HIGHZ1 : 'highz1' ; |
| |
| STRONG : 'strong' ; |
| |
| WEAK : 'weak' ; |
| |
| STRONG0 : 'strong0' ; |
| |
| PULL0 : 'pull0' ; |
| |
| WEAK0 : 'weak0' ; |
| |
| STRONG1 : 'strong1' ; |
| |
| PULL1 : 'pull1' ; |
| |
| WEAK1 : 'weak1' ; |
| |
| SMALL : '(small)'; |
| |
| MEDIUM : '(medium)' ; |
| |
| LARGE : '(large)' ; |
| |
| PATHPULSE : 'PATHPULSE' ; |
| |
| DOLLAR : '$' ; |
| |
| EXPORT : 'export' ; |
| |
| CONTEXT : 'context' ; |
| |
| PURE : 'pure' ; |
| |
| IMPLEMENTS : 'implements' ; |
| |
| ENDTASK : 'endtask' ; |
| |
| PLUSPLUS : '++' ; |
| |
| PLUS : '+' ; |
| |
| MINUSMINUS : '--' ; |
| |
| MINUS : '-' ; |
| |
| STARCOLUMNCOLUMNSTAR : '*::*' ; |
| |
| STARSTAR : '**' ; |
| |
| DIV : '/' ; |
| |
| PERCENT : '%' ; |
| |
| EQUIV : '==' ; |
| |
| NOTEQUAL : '!=' ; |
| |
| LESS : '<' ; |
| |
| LESS_EQUAL : '<=' ; |
| |
| GREATER : '>' ; |
| |
| EQUIVALENCE : '<->' ; |
| |
| GREATER_EQUAL : '>=' ; |
| |
| MODPORT : 'modport' ; |
| |
| DOLLAR_UNIT : DOLLAR 'unit' ; |
| |
| OPEN_PARENS_STAR : '(*' ; |
| |
| STAR_CLOSE_PARENS : '*)' ; |
| |
| ASSERT : 'assert' ; |
| |
| PROPERTY : 'property' ; |
| |
| ASSUME : 'assume' ; |
| |
| COVER : 'cover' ; |
| |
| EXPECT : 'expect' ; |
| |
| ENDPROPERTY : 'endproperty' ; |
| |
| DISABLE : 'disable' ; |
| |
| IFF : 'iff' ; |
| |
| OVERLAP_IMPLY : '|->' ; |
| |
| NON_OVERLAP_IMPLY : '|=>' ; |
| |
| NOT : 'not' ; |
| |
| OR : 'or' ; |
| |
| AND : 'and' ; |
| |
| SEQUENCE : 'sequence' ; |
| |
| ENDSEQUENCE : 'endsequence' ; |
| |
| INTERSECT : 'intersect' ; |
| |
| FIRST_MATCH : 'first_match' ; |
| |
| THROUGHOUT : 'throughout' ; |
| |
| WITHIN : 'within' ; |
| |
| POUNDPOUND : '##' ; |
| |
| OVERLAPPED : '#-#' ; |
| |
| NONOVERLAPPED : '#=#' ; |
| |
| POUND : '#' ; |
| |
| CONSECUTIVE_REP : '[*' ; |
| |
| NON_CONSECUTIVE_REP : '[=' ; |
| |
| GOTO_REP : '[->' ; |
| |
| DIST : 'dist' ; |
| |
| COVERGROUP : 'covergroup' ; |
| |
| ENDGROUP : 'endgroup' ; |
| |
| OPTION_DOT : 'option' DOT; |
| |
| TYPE_OPTION_DOT : 'type_option' DOT; |
| |
| ATAT : '@@' ; |
| |
| BEGIN : 'begin' ; |
| |
| END : 'end' ; |
| |
| WILDCARD : 'wildcard' ; |
| |
| BINS : 'bins'; |
| |
| ILLEGAL_BINS : 'illegal_bins' ; |
| |
| IGNORE_BINS : 'ignore_bins' ; |
| |
| TRANSITION_OP : '=>' ; |
| |
| BANG : '!' ; |
| |
| SOFT : 'soft' ; |
| |
| UNTIL : 'until' ; |
| |
| S_UNTIL : 's_until' ; |
| |
| IMPLIES : 'implies' ; |
| |
| LOGICAL_AND : '&&' ; |
| |
| LOGICAL_OR : '||' ; |
| |
| BINSOF : 'binsof' ; |
| |
| PULLDOWN : 'pulldown' ; |
| |
| PULLUP : 'pullup' ; |
| |
| CMOS : 'cmos' ; |
| |
| RCMOS : 'rcmos' ; |
| |
| BUFIF0 : 'bufif0' ; |
| |
| BUFIF1 : 'bufif1' ; |
| |
| NOTIF0 : 'notif0' ; |
| |
| NOTIF1 : 'notif1' ; |
| |
| NMOS : 'nmos' ; |
| |
| PMOS : 'pmos' ; |
| |
| RNMOS : 'rnmos' ; |
| |
| RPMOS : 'rpmos' ; |
| |
| NAND : 'nand' ; |
| |
| NOR : 'nor' ; |
| |
| XOR : 'xor' ; |
| |
| XNOR : 'xnor' ; |
| |
| BUF : 'buf' ; |
| |
| TRANIF0 : 'tranif0' ; |
| |
| TRANIF1 : 'tranif1' ; |
| |
| RTRANIF1 : 'rtranif1' ; |
| |
| RTRANIF0 : 'rtranif0' ; |
| |
| TRAN : 'tran' ; |
| |
| RTRAN : 'rtran' ; |
| |
| DOTSTAR : '.*' ; |
| |
| GENERATE : 'generate' ; |
| |
| ENDGENERATE : 'endgenerate' ; |
| |
| CASE : 'case' ; |
| |
| ENDCASE : 'endcase' ; |
| |
| FOR : 'for' ; |
| |
| GLOBAL : 'global' ; |
| |
| PRIMITIVE : 'primitive' ; |
| |
| ENDPRIMITIVE : 'endprimitive' ; |
| |
| TABLE : 'table' ; |
| |
| ENDTABLE : 'endtable' ; |
| |
| INITIAL : 'initial' ; |
| |
| ASSIGN : 'assign' ; |
| |
| ALIAS : 'alias' ; |
| |
| ALWAYS : 'always' ; |
| |
| ALWAYS_COMB : 'always_comb' ; |
| |
| ALWAYS_LATCH : 'always_latch' ; |
| |
| ALWAYS_FF : 'always_ff' ; |
| |
| ADD_ASSIGN : '+=' ; |
| |
| SUB_ASSIGN : '-=' ; |
| |
| MULT_ASSIGN : '*=' ; |
| |
| DIV_ASSIGN : '/=' ; |
| |
| MODULO_ASSIGN : '%=' ; |
| |
| BITW_AND_ASSIGN : '&=' ; |
| |
| BITW_OR_ASSIGN : '|=' ; |
| |
| BITW_XOR_ASSIGN : '^=' ; |
| |
| BITW_LEFT_SHIFT_ASSIGN : '<<=' ; |
| |
| BITW_RIGHT_SHIFT_ASSIGN : '>>=' ; |
| |
| DEASSIGN : 'deassign' ; |
| |
| FORCE : 'force' ; |
| |
| RELEASE : 'release' ; |
| |
| FORK : 'fork' ; |
| |
| JOIN : 'join' ; |
| |
| JOIN_ANY : 'join_any' ; |
| |
| JOIN_NONE : 'join_none' ; |
| |
| REPEAT : 'repeat' ; |
| |
| AT : '@' ; |
| |
| RETURN : 'return' ; |
| |
| BREAK : 'break' ; |
| |
| CONTINUE : 'continue' ; |
| |
| WAIT : 'wait' ; |
| |
| WAIT_ORDER : 'wait_order' ; |
| |
| UNIQUE : 'unique' ; |
| |
| UNIQUE0 : 'unique0' ; |
| |
| PRIORITY : 'priority' ; |
| |
| MATCHES : 'matches' ; |
| |
| CASEZ : 'casez' ; |
| |
| CASEX : 'casex' ; |
| |
| RANDCASE : 'randcase' ; |
| |
| TAGGED : 'tagged' ; |
| |
| FOREVER : 'forever' ; |
| |
| WHILE : 'while' ; |
| |
| DO : 'do' ; |
| |
| RESTRICT : 'restrict' ; |
| |
| LET : 'let' ; |
| |
| TICK : '\''; |
| |
| ENDCLOCKING : 'endclocking' ; |
| |
| RANDSEQUENCE : 'randsequence' ; |
| |
| SHIFT_RIGHT : '>>' ; |
| |
| SHIFT_LEFT : '<<' ; |
| |
| WITH : 'with' ; |
| |
| INC_PART_SELECT_OP : '+:' ; |
| |
| DEC_PART_SELECT_OP : '-:' ; |
| |
| INSIDE : 'inside' ; |
| |
| NULL_KEYWORD : 'null' ; |
| |
| THIS : 'this' ; |
| |
| DOLLAR_ROOT : DOLLAR 'root' ; |
| |
| RANDOMIZE : 'randomize' ; |
| |
| FINAL : 'final' ; |
| |
| TASK : 'task' ; |
| |
| COVERPOINT : 'coverpoint' ; |
| |
| CROSS : 'cross' ; |
| |
| POSEDGE : 'posedge' ; |
| |
| NEGEDGE : 'negedge' ; |
| |
| SPECIFY : 'specify' ; |
| |
| ENDSPECIFY : 'endspecify' ; |
| |
| PULSESTYLE_ONEVENT : 'pulsestyle_onevent' ; |
| |
| PULSESTYLE_ONDETECT : 'pulsestyle_ondetect' ; |
| |
| SHOWCANCELLED : 'showcancelled' ; |
| |
| NOSHOWCANCELLED : 'noshowcancelled' ; |
| |
| IFNONE : 'ifnone' ; |
| |
| SAMPLE : 'sample' ; |
| |
| EDGE : 'edge' ; |
| |
| NON_BLOCKING_TRIGGER_EVENT_OP : '->>' ; |
| |
| ARITH_SHIFT_RIGHT : '>>>' ; |
| |
| ARITH_SHIFT_LEFT : '<<<' ; |
| |
| ARITH_SHIFT_LEFT_ASSIGN : '<<<=' ; |
| |
| ARITH_SHIFT_RIGHT_ASSIGN : '>>>=' ; |
| |
| FOUR_STATE_LOGIC_EQUAL : '===' ; |
| |
| FOUR_STATE_LOGIC_NOTEQUAL : '!==' ; |
| |
| BINARY_WILDCARD_EQUAL : '==?' ; |
| |
| BINARY_WILDCARD_NOTEQUAL : '!=?' ; |
| |
| FULL_CONN_OP : '*>' ; |
| |
| COND_PRED_OP : '&&&' ; |
| |
| BITW_AND : '&' ; |
| |
| BITW_OR : '|' ; |
| |
| REDUCTION_NOR : '~|' ; |
| |
| REDUCTION_NAND : '~&' ; |
| |
| REDUCTION_XNOR1 : '^~' ; |
| |
| WILD_EQUAL_OP : '=?=' ; |
| |
| WILD_NOTEQUAL_OP : '!?=' ; |
| |
| ASSIGN_OP : '=' ; |
| |
| NETTYPE : 'nettype' ; |
| |
| // A.9.3 Identifiers |
| |
| /* escaped_identifier ::= \ {any_ASCII_character_except_white_space} white_space */ |
| /* Example: \`~!-_=+\|[]{};:'"",./<>? */ |
| |
| //Escaped_identifier : '^^^' [\\|+a-zA-Z0-9_$:,-/*{}()`~!=;'"<>?.]* '^^^' ; |
| |
| Escaped_identifier : '#~@' .*? '#~@' ; |
| |
| TILDA : '~' ; |
| |
| BITW_XOR : '^'; |
| |
| REDUCTION_XNOR2 : '~^' ; |
| |
| /* simple_identifier <<2>> ::= [ a-zA-Z_ ] { [ a-zA-Z0-9_$ ] } */ |
| |
| Simple_identifier : [a-zA-Z_] [a-zA-Z0-9_$]* ; |
| |
| TICK_LINE : '`line' ; |
| |
| TICK_TIMESCALE : '`timescale' ; |
| |
| TICK_BEGIN_KEYWORDS : '`begin_keywords' ; |
| |
| TICK_END_KEYWORDS : '`end_keywords' ; |
| |
| TICK_UNCONNECTED_DRIVE : '`unconnected_drive' ; |
| |
| TICK_NOUNCONNECTED_DRIVE : '`nounconnected_drive' ; |
| |
| TICK_CELLDEFINE : '`celldefine' ; |
| |
| TICK_ENDCELLDEFINE : '`endcelldefine' ; |
| |
| TICK_DEFAULT_NETTYPE : '`default_nettype' ; |
| |
| TICK_DEFAULT_DECAY_TIME : '`default_decay_time' ; |
| |
| TICK_DEFAULT_TRIREG_STRENGTH : '`default_trireg_strength' ; |
| |
| TICK_DELAY_MODE_DISTRIBUTED : '`delay_mode_distributed' ; |
| |
| TICK_DELAY_MODE_PATH : '`delay_mode_path' ; |
| |
| TICK_DELAY_MODE_UNIT : '`delay_mode_unit' ; |
| |
| TICK_DELAY_MODE_ZERO : '`delay_mode_zero' ; |
| |
| TICK_ACCELERATE : '`accelerate'; |
| |
| TICK_NOACCELERATE : '`noaccelerate'; |
| |
| TICK_PROTECT : '`protect' ; |
| |
| TICK_DISABLE_PORTFAULTS : '`disable_portfaults' ; |
| |
| TICK_ENABLE_PORTFAULTS : '`enable_portfaults' ; |
| |
| TICK_NOSUPPRESS_FAULTS : '`nosuppress_faults' ; |
| |
| TICK_SUPPRESS_FAULTS : '`suppress_faults' ; |
| |
| TICK_SIGNED : '`signed' ; |
| |
| TICK_UNSIGNED : '`unsigned' ; |
| |
| TICK_ENDPROTECT : '`endprotect' ; |
| |
| TICK_PROTECTED : '`protected' ; |
| |
| TICK_ENDPROTECTED : '`endprotected' ; |
| |
| TICK_EXPAND_VECTORNETS : '`expand_vectornets' ; |
| |
| TICK_NOEXPAND_VECTORNETS : '`noexpand_vectornets' ; |
| |
| TICK_AUTOEXPAND_VECTORNETS : '`autoexpand_vectornets' ; |
| |
| TICK_REMOVE_GATENAME : '`remove_gatename' ; |
| |
| TICK_NOREMOVE_GATENAMES : '`noremove_gatenames' ; |
| |
| TICK_REMOVE_NETNAME : '`remove_netname' ; |
| |
| TICK_NOREMOVE_NETNAMES : '`noremove_netnames' ; |
| |
| ONESTEP : '1step' ; |
| |
| TICK_USELIB : '`uselib' ; |
| |
| TICK_PRAGMA : '`pragma' ; |
| |
| BACK_TICK : '`' ; |
| |
| SURELOG_MACRO_NOT_DEFINED : 'SURELOG_MACRO_NOT_DEFINED:' Simple_identifier '!!!' ; |
| |