diff --git a/src/src/net/sourceforge/veditor/actions/VhdlFormatAction.java b/src/src/net/sourceforge/veditor/actions/VhdlFormatAction.java index 73bf272..9815e03 100644 --- a/src/src/net/sourceforge/veditor/actions/VhdlFormatAction.java +++ b/src/src/net/sourceforge/veditor/actions/VhdlFormatAction.java @@ -536,6 +536,12 @@ private String addSpacePadding(String text) { case VhdlParserCoreTokenManager.LE: case VhdlParserCoreTokenManager.GT: case VhdlParserCoreTokenManager.LO: + case VhdlParserCoreTokenManager.MEQ: + case VhdlParserCoreTokenManager.MNEQ: + case VhdlParserCoreTokenManager.MGE: + case VhdlParserCoreTokenManager.MLE: + case VhdlParserCoreTokenManager.MGT: + case VhdlParserCoreTokenManager.MLO: case VhdlParserCoreTokenManager.COLON: case VhdlParserCoreTokenManager.ASSIGN: case VhdlParserCoreTokenManager.RARROW: diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTarchitecture_body.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTarchitecture_body.java index 28caae2..9a255b8 100644 --- a/src/src/net/sourceforge/veditor/parser/vhdl/ASTarchitecture_body.java +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTarchitecture_body.java @@ -41,7 +41,7 @@ public void Check() int i = jjtGetNumChildren()-1; if (jjtGetChild(i).toString() == "identifier") { - if ( s1.compareTo( ((ASTidentifier)jjtGetChild(i)).name) != 0) + if ( s1.compareToIgnoreCase( ((ASTidentifier)jjtGetChild(i)).name) != 0) getErrorHandler().Error("identifiers don't match: " +s1+"/="+((ASTidentifier)jjtGetChild(i)).name,null); } diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTcase_generate_alternative.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTcase_generate_alternative.java new file mode 100644 index 0000000..dbf3d13 --- /dev/null +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTcase_generate_alternative.java @@ -0,0 +1,11 @@ +/* Generated By:JJTree: Do not edit this line. ASTcase_generate_alternative.java Version 6.0 */ +/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package net.sourceforge.veditor.parser.vhdl; + +public +class ASTcase_generate_alternative extends SimpleNode { + public ASTcase_generate_alternative(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=ebe7c3dac841b7d7e410591e077e71d2 (do not edit this line) */ diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTcase_generate_statement.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTcase_generate_statement.java new file mode 100644 index 0000000..0af9c1e --- /dev/null +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTcase_generate_statement.java @@ -0,0 +1,11 @@ +/* Generated By:JJTree: Do not edit this line. ASTcase_generate_statement.java Version 6.0 */ +/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package net.sourceforge.veditor.parser.vhdl; + +public +class ASTcase_generate_statement extends SimpleNode { + public ASTcase_generate_statement(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=7512e8118b8f3eee00d7aca9ac9d12f1 (do not edit this line) */ diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTentity_declaration.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTentity_declaration.java index 087d29c..4ac12c8 100644 --- a/src/src/net/sourceforge/veditor/parser/vhdl/ASTentity_declaration.java +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTentity_declaration.java @@ -35,7 +35,7 @@ public void Check() int i = jjtGetNumChildren()-1; if (jjtGetChild(i).toString() == "identifier") { - if ( s1.compareTo( ((ASTidentifier)jjtGetChild(i)).name) != 0) + if ( s1.compareToIgnoreCase( ((ASTidentifier)jjtGetChild(i)).name) != 0) getErrorHandler().Error("identifiers don't match",null); } diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTfor_generate_statement.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTfor_generate_statement.java new file mode 100644 index 0000000..6768fa7 --- /dev/null +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTfor_generate_statement.java @@ -0,0 +1,11 @@ +/* Generated By:JJTree: Do not edit this line. ASTfor_generate_statement.java Version 6.0 */ +/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package net.sourceforge.veditor.parser.vhdl; + +public +class ASTfor_generate_statement extends SimpleNode { + public ASTfor_generate_statement(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=e2325ee89263c71b9edf0f98ed718326 (do not edit this line) */ diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTif_generate_statement.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTif_generate_statement.java new file mode 100644 index 0000000..5e979f5 --- /dev/null +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTif_generate_statement.java @@ -0,0 +1,11 @@ +/* Generated By:JJTree: Do not edit this line. ASTif_generate_statement.java Version 6.0 */ +/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package net.sourceforge.veditor.parser.vhdl; + +public +class ASTif_generate_statement extends SimpleNode { + public ASTif_generate_statement(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=82a2dcdb419dfc624864d5015bc2336d (do not edit this line) */ diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTpackage_instantiation_declaration.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTpackage_instantiation_declaration.java new file mode 100644 index 0000000..f4b840e --- /dev/null +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTpackage_instantiation_declaration.java @@ -0,0 +1,11 @@ +/* Generated By:JJTree: Do not edit this line. ASTpackage_instantiation_declaration.java Version 6.0 */ +/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=false,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package net.sourceforge.veditor.parser.vhdl; + +public +class ASTpackage_instantiation_declaration extends SimpleNode { + public ASTpackage_instantiation_declaration(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=290e7eae4da2eee7630c16866f39c572 (do not edit this line) */ diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/ASTprocess_statement.java b/src/src/net/sourceforge/veditor/parser/vhdl/ASTprocess_statement.java index 2567ebe..838ed64 100644 --- a/src/src/net/sourceforge/veditor/parser/vhdl/ASTprocess_statement.java +++ b/src/src/net/sourceforge/veditor/parser/vhdl/ASTprocess_statement.java @@ -37,7 +37,7 @@ public void Check() int i = jjtGetNumChildren()-1; if (jjtGetChild(i).toString() == "identifier") { - if ( s1.compareTo(((ASTidentifier)jjtGetChild(i)).name) != 0) + if ( s1.compareToIgnoreCase(((ASTidentifier)jjtGetChild(i)).name) != 0) getErrorHandler().Error("identifiers don't match: "+s1+"/="+ ((ASTidentifier)jjtGetChild(i)).name,null); } diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/VhdlParserCoreTreeConstants.java b/src/src/net/sourceforge/veditor/parser/vhdl/VhdlParserCoreTreeConstants.java index 37ab773..bb2106c 100644 --- a/src/src/net/sourceforge/veditor/parser/vhdl/VhdlParserCoreTreeConstants.java +++ b/src/src/net/sourceforge/veditor/parser/vhdl/VhdlParserCoreTreeConstants.java @@ -124,71 +124,72 @@ public interface VhdlParserCoreTreeConstants public int JJTPACKAGE_BODY_DECLARATIVE_PART = 118; public int JJTPACKAGE_DECLARATION = 119; public int JJTPACKAGE_DECLARATIVE_PART = 120; - public int JJTPARAMETER_SPECIFICATION = 121; - public int JJTPHYSICAL_LITERAL = 122; - public int JJTPHYSICAL_TYPE_DEFINITION = 123; - public int JJTPORT_CLAUSE = 124; - public int JJTPORT_MAP_ASPECT = 125; - public int JJTPREFIX = 126; - public int JJTPROCEDURE_CALL = 127; - public int JJTPROCEDURE_CALL_STATEMENT = 128; - public int JJTPROCESS_DECLARATIVE_PART = 129; - public int JJTPROCESS_STATEMENT = 130; - public int JJTPROCESS_STATEMENT_PART = 131; - public int JJTQUALIFIED_EXPRESSION = 132; - public int JJTRANGE = 133; - public int JJTRECORD_NATURE_DEFINITION = 134; - public int JJTRECORD_TYPE_DEFINITION = 135; - public int JJTSHIFT_EXPRESSION = 136; - public int JJTREPORT_STATEMENT = 137; - public int JJTRETURN_STATEMENT = 138; - public int JJTSCALAR_NATURE_DEFINITION = 139; - public int JJTSECONDARY_UNIT_DECLARATION = 140; - public int JJTSELECTED_NAME = 141; - public int JJTSELECTED_SIGNAL_ASSIGNMENT = 142; - public int JJTSELECTED_WAVEFORMS = 143; - public int JJTSENSITIVITY_LIST = 144; - public int JJTSEQUENCE_OF_STATEMENTS = 145; - public int JJTSIMPLE_EXPRESSION = 146; - public int JJTSIGN = 147; - public int JJTSIGNAL_ASSIGNMENT_STATEMENT = 148; - public int JJTSIGNAL_DECLARATION = 149; - public int JJTSIGNAL_KIND = 150; - public int JJTSIGNAL_LIST = 151; - public int JJTSIGNATURE = 152; - public int JJTTERM = 153; - public int JJTSLICE_NAME = 154; - public int JJTSUBPROGRAM_BODY = 155; - public int JJTSUBPROGRAM_DECLARATIVE_PART = 156; - public int JJTSUBPROGRAM_SPECIFICATION = 157; - public int JJTSUBPROGRAM_STATEMENT_PART = 158; - public int JJTSUBTYPE_DECLARATION = 159; - public int JJTSUBTYPE_INDICATION = 160; - public int JJTFREE_QUANTITY_DECLARATION = 161; - public int JJTBRANCH_QUANTITY_DECLARATION = 162; - public int JJTSOURCE_QUANTITY_DECLARATION = 163; - public int JJTACROSS_ASPECT = 164; - public int JJTTHROUGH_ASPECT = 165; - public int JJTSOURCE_ASPECT = 166; - public int JJTTYPE_CONVERSION = 167; - public int JJTUNCONSTRAINED_ARRAY_DEFINITION = 168; - public int JJTUSE_CLAUSE = 169; - public int JJTVARIABLE_ASSIGNMENT_STATEMENT = 170; - public int JJTVARIABLE_DECLARATION = 171; - public int JJTWAIT_STATEMENT = 172; - public int JJTWAVEFORM = 173; - public int JJTWAVEFORM_ELEMENT = 174; - public int JJTSIMULTANEOUS_STATEMENT_PART = 175; - public int JJTSIMPLE_SIMULTANEOUS_STATEMENT = 176; - public int JJTSIMULTANEOUS_IF_STATEMENT = 177; - public int JJTSIMULTANEOUS_CASE_STATEMENT = 178; - public int JJTSIMULTANEOUS_ALTERNATIVE = 179; - public int JJTSIMULTANEOUS_PROCEDURAL_STATEMENT = 180; - public int JJTPROCEDURAL_DECLARATIVE_PART = 181; - public int JJTPROCEDURAL_STATEMENT_PART = 182; - public int JJTSIMULTANEOUS_NULL_STATEMENT = 183; - public int JJTSHARED_VARIABLE_DECLARATION = 184; - public int JJTERROR_SKIPTO = 185; + public int JJTPACKAGE_INSTANTIATION_DECLARATION = 121; + public int JJTPARAMETER_SPECIFICATION = 122; + public int JJTPHYSICAL_LITERAL = 123; + public int JJTPHYSICAL_TYPE_DEFINITION = 124; + public int JJTPORT_CLAUSE = 125; + public int JJTPORT_MAP_ASPECT = 126; + public int JJTPREFIX = 127; + public int JJTPROCEDURE_CALL = 128; + public int JJTPROCEDURE_CALL_STATEMENT = 129; + public int JJTPROCESS_DECLARATIVE_PART = 130; + public int JJTPROCESS_STATEMENT = 131; + public int JJTPROCESS_STATEMENT_PART = 132; + public int JJTQUALIFIED_EXPRESSION = 133; + public int JJTRANGE = 134; + public int JJTRECORD_NATURE_DEFINITION = 135; + public int JJTRECORD_TYPE_DEFINITION = 136; + public int JJTSHIFT_EXPRESSION = 137; + public int JJTREPORT_STATEMENT = 138; + public int JJTRETURN_STATEMENT = 139; + public int JJTSCALAR_NATURE_DEFINITION = 140; + public int JJTSECONDARY_UNIT_DECLARATION = 141; + public int JJTSELECTED_NAME = 142; + public int JJTSELECTED_SIGNAL_ASSIGNMENT = 143; + public int JJTSELECTED_WAVEFORMS = 144; + public int JJTSENSITIVITY_LIST = 145; + public int JJTSEQUENCE_OF_STATEMENTS = 146; + public int JJTSIMPLE_EXPRESSION = 147; + public int JJTSIGN = 148; + public int JJTSIGNAL_ASSIGNMENT_STATEMENT = 149; + public int JJTSIGNAL_DECLARATION = 150; + public int JJTSIGNAL_KIND = 151; + public int JJTSIGNAL_LIST = 152; + public int JJTSIGNATURE = 153; + public int JJTTERM = 154; + public int JJTSLICE_NAME = 155; + public int JJTSUBPROGRAM_BODY = 156; + public int JJTSUBPROGRAM_DECLARATIVE_PART = 157; + public int JJTSUBPROGRAM_SPECIFICATION = 158; + public int JJTSUBPROGRAM_STATEMENT_PART = 159; + public int JJTSUBTYPE_DECLARATION = 160; + public int JJTSUBTYPE_INDICATION = 161; + public int JJTFREE_QUANTITY_DECLARATION = 162; + public int JJTBRANCH_QUANTITY_DECLARATION = 163; + public int JJTSOURCE_QUANTITY_DECLARATION = 164; + public int JJTACROSS_ASPECT = 165; + public int JJTTHROUGH_ASPECT = 166; + public int JJTSOURCE_ASPECT = 167; + public int JJTTYPE_CONVERSION = 168; + public int JJTUNCONSTRAINED_ARRAY_DEFINITION = 169; + public int JJTUSE_CLAUSE = 170; + public int JJTVARIABLE_ASSIGNMENT_STATEMENT = 171; + public int JJTVARIABLE_DECLARATION = 172; + public int JJTWAIT_STATEMENT = 173; + public int JJTWAVEFORM = 174; + public int JJTWAVEFORM_ELEMENT = 175; + public int JJTSIMULTANEOUS_STATEMENT_PART = 176; + public int JJTSIMPLE_SIMULTANEOUS_STATEMENT = 177; + public int JJTSIMULTANEOUS_IF_STATEMENT = 178; + public int JJTSIMULTANEOUS_CASE_STATEMENT = 179; + public int JJTSIMULTANEOUS_ALTERNATIVE = 180; + public int JJTSIMULTANEOUS_PROCEDURAL_STATEMENT = 181; + public int JJTPROCEDURAL_DECLARATIVE_PART = 182; + public int JJTPROCEDURAL_STATEMENT_PART = 183; + public int JJTSIMULTANEOUS_NULL_STATEMENT = 184; + public int JJTSHARED_VARIABLE_DECLARATION = 185; + public int JJTERROR_SKIPTO = 186; public String[] jjtNodeName = { @@ -313,6 +314,7 @@ public interface VhdlParserCoreTreeConstants "package_body_declarative_part", "package_declaration", "package_declarative_part", + "package_instantiation_declaration", "parameter_specification", "physical_literal", "physical_type_definition", @@ -380,4 +382,4 @@ public interface VhdlParserCoreTreeConstants "error_skipto", }; } -/* JavaCC - OriginalChecksum=6a08b8a828aeb2581136b0ad42861a49 (do not edit this line) */ +/* JavaCC - OriginalChecksum=f7db7607442a7f09105462f64a5b2517 (do not edit this line) */ diff --git a/src/src/net/sourceforge/veditor/parser/vhdl/vhdl.jjt b/src/src/net/sourceforge/veditor/parser/vhdl/vhdl.jjt index d0e5951..8d33beb 100644 --- a/src/src/net/sourceforge/veditor/parser/vhdl/vhdl.jjt +++ b/src/src/net/sourceforge/veditor/parser/vhdl/vhdl.jjt @@ -231,8 +231,8 @@ TOKEN [IGNORE_CASE] : TOKEN : { - <#upper_case_letter: ["A"-"Z"]> - | <#lower_case_letter: ["a"-"z"]> + <#upper_case_letter: ["A"-"Z","À"-"ß"]> + | <#lower_case_letter: ["a"-"z","à"-"ÿ"]> | <#digit: ["0"-"9"]> | <#extended_digit: ["0"-"9","A"-"F","a"-"f"]> | <#special_character: ["#","&","'","(",")","*","+",",","-", @@ -241,10 +241,13 @@ TOKEN : | <#other_special_character: ["!","$","%","@","?","^","`","{","}","~", "\\"]> | <#format_effector: ["\n","\t"]> - | <#base_specifier: ["B","O","X","b","o","x"]> + | <#base_specifier_bin_oct_hex: ["B","O","X","b","o","x"]> + | <#base_specifier_dec: ["D","d"]> + | <#base_specifier_sign: ["S", "U", "s", "u"] > + | <#base_specifier:(()? )|> | <#underline: "_"> - | <#letter: ["a"-"z","A"-"Z"]> - | <#letter_or_digit: ["a"-"z","A"-"Z","0"-"9"]> + | <#letter: |> + | <#letter_or_digit: |> | <#integer: (("_")? )*> | <#base: > | <#based_integer: (("_")? )*> @@ -252,8 +255,8 @@ TOKEN : | <#basic_character: (|)> | <#basic_graphic_character: (["A"-"Z"]|||" ")> | ( ("_")? )*> - | "\"" "\""> - | <#bit_value: ( ("_")? )*> + | )? "\"" "\""> + | <#bit_value: ( ("_")? )*> | |"\"") "'"> | ( "." )? ( )?> | <#exponent: ("E" ("+")? ) | ("E" "-" )> @@ -275,6 +278,12 @@ TOKEN : | "> | + | + | + | "> + | ="> | | | external_pathname() ":" subtype_indication() ">>" +} + +void external_signal_name() #void : +{} +{ + "<<" external_pathname() ":" subtype_indication() ">>" +} + +void external_variable_name() #void : +{} +{ + "<<" external_pathname() ":" subtype_indication() ">>" +} + +void external_pathname() #void : +{} +{ + package_pathname() + | absolute_pathname() + | relative_pathname() +} + +void package_pathname() #void : +{} +{ + "@" logical_name() "." package_simple_name() "." ( LOOKAHEAD(package_simple_name() ".") package_simple_name() "." )* object_simple_name() +} + +void absolute_pathname() #void : +{} +{ + "." partial_pathname() +} + +void relative_pathname() #void : +{} +{ + ( "^" "." )* partial_pathname() +} + +void partial_pathname() #void : +{} +{ + ( LOOKAHEAD(pathname_element() ".") pathname_element() "." )* object_simple_name() +} + +void pathname_element() #void : +{} +{ + LOOKAHEAD(entity_simple_name()) + entity_simple_name() + | LOOKAHEAD(instantiation_label()) + instantiation_label() + | LOOKAHEAD(block_label()) + block_label() + | LOOKAHEAD(generate_statement_label()) + generate_statement_label() [ "(" static_expression() ")" ] + | package_simple_name() +} + /** * 4.8: Nature Declaration * 1076.1 extension @@ -1375,16 +1461,13 @@ void function_call() : /** - * Section 9.7 + * Section 11.8 in IEEE Std 1076-2008 */ void generate_statement() : {} { generate_label() ":" - generation_scheme() - [ LOOKAHEAD(2) ( block_declarative_item() )* ] - ( architecture_statement() )* - [ generate_label() ] ";" + generation_scheme() } /** 1076.1 extension: */ @@ -1398,10 +1481,47 @@ void concurrent_break_statement() : void generation_scheme() : {} { - generate_parameter_specification() - | condition() + for_generate_statement() + | if_generate_statement() + | case_generate_statement() +} + +void for_generate_statement() #void : +{} +{ + generate_parameter_specification() + [ LOOKAHEAD(2) ( block_declarative_item() )* ] + ( architecture_statement() )* + [ generate_label() ] ";" +} + +void if_generate_statement() #void : +{} +{ + condition() + [ LOOKAHEAD(2) ( block_declarative_item() )* ] + ( architecture_statement() )* + ( condition() + ( architecture_statement() )* )* + [ + ( architecture_statement() )* ] + [ generate_label() ] ";" } +void case_generate_statement() #void : +{} +{ + expression() + case_generate_alternative() + ( case_generate_alternative() )* + [ generate_label() ] ";" +} + +void case_generate_alternative() #void : +{} +{ + choices() "=>" ( architecture_statement() )* +} void generic_clause() : {} @@ -1673,9 +1793,11 @@ void literal() : { LOOKAHEAD( numeric_literal() ) numeric_literal() - | enumeration_literal() + | LOOKAHEAD(enumeration_literal()) + enumeration_literal() | - | + | LOOKAHEAD() + | } @@ -1758,7 +1880,7 @@ void name() : * * Kann ohne Linksrekursion wie folgt geschrieben werden: */ - ( simple_name() | operator_symbol() ) + ( simple_name() | operator_symbol() | external_name() ) [ LOOKAHEAD(name_extension()) name_extension() ] } @@ -1899,15 +2021,24 @@ void package_body_declarative_part() : } - +/** + * IEEE1076-2008 Section 4.7 Package declarations + */ void package_declaration() : {} { identifier() + package_header() package_declarative_part() [ ] [ package_simple_name() ] ";" } +void package_header() #void : +{} +{ + [ generic_clause() + [ generic_map_aspect() ";" ]] +} void package_declarative_item() #void : {} @@ -1948,6 +2079,13 @@ void package_declarative_part() : ( package_declarative_item() )* } +void package_instantiation_declaration() : +{} +{ + identifier() uninstantiated_package_name() + [ generic_map_aspect() ] ";" +} + void parameter_specification() : {} @@ -2032,12 +2170,16 @@ void primary() #void : } - +/* +* IEEE1076-2008 Section 13.1 Design units +*/ void primary_unit() #void : {} { entity_declaration() | configuration_declaration() + | LOOKAHEAD( identifier() ) + package_instantiation_declaration() | LOOKAHEAD( identifier()) package_declaration() } @@ -2241,6 +2383,12 @@ int relational_operator() #void : | { return LE; } | { return GT; } | { return GE; } + | { return MEQ; } + | { return MNEQ; } + | { return MLO; } + | { return MLE; } + | { return MGT; } + | { return MGE; } } @@ -3044,6 +3192,12 @@ void entity_simple_name() #void : simple_name() } +void object_simple_name() #void : +{} +{ + simple_name() +} + void package_simple_name() #void : {} { @@ -3145,6 +3299,12 @@ void type_name() #void: name() } +void uninstantiated_package_name() #void : +{} +{ + name() +} + // 1076.1 extension: void record_nature_simple_name() #void :