⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asn_grammar.y

📁 pwlib源码库
💻 Y
📖 第 1 页 / 共 4 页
字号:
*/  | ObjectIdentifierValue  | OctetStringValue  | RealValue   | SequenceValue /*!!!!   | SequenceOfValue*//*| SetValue	      synonym to SequenceValue *//*| SetOfValue	      synonym to SequenceOfValue *//*| TaggedValue	      synonym to Value */  ;DefinedValue  : ExternalValueReference      {	$$ = new DefinedValue($1);      }  | IDENTIFIER      {	$$ = new DefinedValue($1);      }  | ParameterizedValue  ;ExternalValueReference  : MODULEREFERENCE '.' IDENTIFIER      {	*$1 += *$3;	delete $3;      }  ;ObjectIdentifierValue  : OID_BRACE      {        IdentifierTokenContext = OID_IDENTIFIER;      }    ObjIdComponentList '}'      {	$$ = new ObjectIdentifierValue($3);	IdentifierTokenContext = IDENTIFIER;      }/*!!!  | '{' DefinedValue_OID ObjIdComponentList '}'      {	$$ = new ObjectIdentifierValue($2);      }*/  ;ObjIdComponentList  : ObjIdComponent      {	$$ = new PStringList;	$$->Append($1);      }  | ObjIdComponent ObjIdComponentList      {	$2->InsertAt(0, $1);	$$ = $2;      }  ;ObjIdComponent  : OID_IDENTIFIER  | INTEGER      {	$$ = new PString(PString::Unsigned, (int)$1);      }  | OID_IDENTIFIER '(' NumberForm ')'      {	delete $1;	$$ = $3;      }  ;NumberForm  : INTEGER      {	$$ = new PString(PString::Unsigned, (int)$1);      }  | ExternalValueReference  | OID_IDENTIFIER  ;OctetStringValue  : OS_BSTRING      {	$$ = new OctetStringValue($1);      }  | OS_HSTRING      {	$$ = new OctetStringValue($1);      }  ;BitStringValue  : BS_BSTRING      {	$$ = new BitStringValue($1);      }  | BS_HSTRING      {	$$ = new BitStringValue($1);      }  | BITSTRING_BRACE BitIdentifierList '}'       {	$$ = new BitStringValue($2);      }  | BITSTRING_BRACE  '}'      {	$$ = new BitStringValue;      }  ;BitIdentifierList  : BIT_IDENTIFIER      {	$$ = new PStringList;      }  | BitIdentifierList ',' BIT_IDENTIFIER      {	// Look up $3	$1->SetAt($1->GetSize(), 0);      }  ;BooleanValue  : TRUE_t      {	$$ = new BooleanValue(TRUE);      }  | FALSE_t      {	$$ = new BooleanValue(FALSE);      }  ;CharacterStringValue  : RestrictedCharacterStringValue/*!!!  | UnrestrictedCharacterStringValue*/  ;RestrictedCharacterStringValue  : CSTRING      {	$$ = new CharacterStringValue($1);      }  | CharacterStringList  | Quadruple  | Tuple  ;CharacterStringList  : STRING_BRACE CharSyms '}'      {	$$ = new CharacterStringValue($2);      }  ;CharSyms  : CharsDefn      {	$$ = new PStringList;	$$->Append($1);      }  | CharSyms ',' CharsDefn      {	$1->Append($3);      }  ;CharsDefn  : CSTRING   | DefinedValue      {	PError << StdError(Warning) << "DefinedValue in string unsupported" << endl;      }  ;Quadruple  :  STRING_BRACE  INTEGER  ','  INTEGER  ','  INTEGER  ','  INTEGER '}'      {	if ($2 != 0 || $4 != 0 || $6 > 255 || $8 > 255)	  PError << StdError(Warning) << "Illegal value in Character Quadruple" << endl;	$$ = new CharacterValue((BYTE)$2, (BYTE)$4, (BYTE)$6, (BYTE)$8);      }  ;Tuple  :  STRING_BRACE INTEGER ',' INTEGER '}'      {	if ($2 > 255 || $4 > 255)	  PError << StdError(Warning) << "Illegal value in Character Tuple" << endl;	$$ = new CharacterValue((BYTE)$2, (BYTE)$4);      }  ;ChoiceValue  : IDENTIFIER ':' Value      {	$3->SetValueName($1);	$$ = $3;      }  ;NullValue  : NULL_VALUE      {	$$ = new NullValue;      }  ;RealValue  : NumericRealValue   | SpecialRealValue  ;NumericRealValue  :  '0'      {	$$ = new RealValue(0);      }/*!!!  | SequenceValue*/  ;SpecialRealValue  : PLUS_INFINITY      {	$$ = new RealValue(0);      }  | MINUS_INFINITY      {	$$ = new RealValue(0);      }  ;SequenceValue  : '{' ComponentValueList '}'       {	$$ = new SequenceValue($2);      }  | '{'  '}'      {	$$ = new SequenceValue;      }  ;ComponentValueList  : NamedValue      {	$$ = new ValuesList;	$$->Append($1);      }  | ComponentValueList ',' NamedValue      {	$1->Append($3);      }  ;NamedValue  : IDENTIFIER Value      {	$2->SetValueName($1);	$$ = $2;      }  ;/*!!!! SequenceOfValue  : '{' ValueList '}'       {	$$ = NULL;      }  | '{'  '}'      {	$$ = NULL;      }  ;ValueList  : Value      { }  | ValueList ',' Value      { }  ;*/ /*!!!ObjectClassFieldValue  : OpenTypeFieldVal  | Value  ;OpenTypeFieldVal  : Type ':' Value  ;*/ReferencedValue  : DefinedValue/*!!!!  | ValueFromObject*/  ;/*!!!!ValueFromObject  : ReferencedObjects '.' FieldName    { }  ;*/ParameterizedValue  : SimpleDefinedValue ActualParameterList    { }  ;SimpleDefinedValue  : ExternalValueReference  | IDENTIFIER  ;/********/ValueSet  : '{' ElementSetSpecs '}'  ;/********/MacroDefinition  : TYPEREFERENCE MACRO ASSIGNMENT MacroSubstance      {	PError << StdError(Warning) << "MACRO unsupported" << endl;      }  ;MacroSubstance  : BEGIN_t      {	InMacroContext = TRUE;      }    MacroBody END      {	InMacroContext = FALSE;      }  | TYPEREFERENCE      {}  | TYPEREFERENCE '.' TYPEREFERENCE      {}  ;MacroBody  : TypeProduction ValueProduction /*SupportingProductions*/  ;TypeProduction  : TYPE_t NOTATION ASSIGNMENT MacroAlternativeList  ;ValueProduction  : VALUE NOTATION ASSIGNMENT MacroAlternativeList  ;/*SupportingProductions  : ProductionList  | /* empty *//*  ;ProductionList  : Production  | ProductionList Production  ;Production  : TYPEREFERENCE ASSIGNMENT MacroAlternativeList  ;*/MacroAlternativeList  : MacroAlternative  | MacroAlternative '|' MacroAlternativeList  ;MacroAlternative  : SymbolElement  | SymbolElement MacroAlternative  ;SymbolElement  : SymbolDefn  | EmbeddedDefinitions  ;SymbolDefn  : CSTRING      {}  | TYPEREFERENCE      {}  | TYPEREFERENCE ASSIGNMENT      {}  | string_t  | identifier_t  | number_t  | empty_t  | type_t  | type_t '(' TYPE_t TYPEREFERENCE ')'  | value_t '(' Type ')'  | value_t '(' IDENTIFIER Type ')'  | value_t '(' VALUE Type ')'  ;EmbeddedDefinitions  : '<' EmbeddedDefinitionList '>'  ;EmbeddedDefinitionList  : EmbeddedDefinition  | EmbeddedDefinitionList EmbeddedDefinition  ;EmbeddedDefinition  : LocalTypeAssignment  | LocalValueAssignment  ;LocalTypeAssignment  : TYPEREFERENCE ASSIGNMENT Type      {}  ;LocalValueAssignment  : IDENTIFIER Type ASSIGNMENT Value      {}  ;/********/ObjectTypeDefinition  : IDENTIFIER OBJECT_TYPE      {	InMIBContext = TRUE;      }    SYNTAX Type    ACCESS ObjectTypeAccess    STATUS ObjectTypeStatus    MibDescrPart    MibReferPart    MibIndexPart    MibDefValPart      {	IdentifierTokenContext = OID_IDENTIFIER;      }    ASSIGNMENT Value      {	Module->AddMIB(new MibObject($1, $5, (MibObject::Access)$7, (MibObject::Status)$9, $10, $11, $12, $13, $16));	InMIBContext = FALSE;	IdentifierTokenContext = IDENTIFIER;      }  ;ObjectTypeAccess  : read_only_t      {	$$ = MibObject::read_only;      }  | read_write_t      {	$$ = MibObject::read_write;      }  | write_only_t      {	$$ = MibObject::write_only;      }  | not_accessible_t      {	$$ = MibObject::not_accessible;      }  ;ObjectTypeStatus  : mandatory_t      {	$$ = MibObject::mandatory;      }  | optional_t      {	$$ = MibObject::optional;      }  | obsolete_t      {	$$ = MibObject::obsolete;      }  | deprecated_t      {	$$ = MibObject::deprecated;      }  ;MibDescrPart  : DESCRIPTION_t CSTRING      {	$$ = $2;      }  | /* empty */      {	$$ = NULL;      }  ;MibReferPart  : REFERENCE_t CSTRING      {	$$ = $2;      }  | /* empty */      {	$$ = NULL;      }  ;MibIndexPart  : INDEX_t '{' MibIndexTypes '}'      {	$$ = $3;      }  | /* empty */      {	$$ = NULL;      }  ;MibIndexTypes  : MibIndexType      {	$$ = new PStringList;	$$->Append($1);      }  | MibIndexTypes ',' MibIndexType      {	$1->Append($3);      }  ;MibIndexType  : IDENTIFIER  | TYPEREFERENCE  ;MibDefValPart  : DEFVAL_t '{' Value '}'      {	$$ = $3;      }  | /* empty */      {	$$ = NULL;      }  ;TrapTypeDefinition  : IDENTIFIER TRAP_TYPE      {	InMIBContext = TRUE;	IdentifierTokenContext = OID_IDENTIFIER;      }    ENTERPRISE Value    MibVarPart    MibDescrPart    MibReferPart    ASSIGNMENT Value      {	Module->AddMIB(new MibTrap($1, $5, $6, $7, $8, $10));	IdentifierTokenContext = IDENTIFIER;	InMIBContext = FALSE;      }  ;MibVarPart  : VARIABLES '{' MibVarTypes '}'      {	$$ = $3;      }  | /* empty */      {	$$ = NULL;      }  ;MibVarTypes  : Value      {	$$ = new ValuesList;	$$->Append($1);      }  | MibVarTypes ',' Value      {	$1->Append($3);      }  ;/********//*!!! Not actually referenced by any other part of grammarAbsoluteReference  : '@' GlobalModuleReference '.' ItemSpec  ;ItemSpec  : TYPEREFERENCE  |  ItemId '.' ComponentId  ;ItemId  : ItemSpec  ;ComponentId   : IDENTIFIER  | INTEGER  | '*'  ;*/Reference  : TYPEREFERENCE  | IDENTIFIER   | OBJECTCLASSREFERENCE  | OBJECTREFERENCE  | OBJECTSETREFERENCE  ;ParameterizedReference  : Reference '{' '}'      {	$$ = new ImportedType($1, TRUE);      }  ;NamedNumberList  : NamedNumber		      {	$$ = new NamedNumberList;	$$->Append($1);      }  | NamedNumberList ',' NamedNumber      {	$1->Append($3);      }  ;NamedNumber  : IDENTIFIER '(' SignedNumber ')'	      {	$$ = new NamedNumber($1, (int)$3);      }  | IDENTIFIER '(' DefinedValue ')'      {	$$ = new NamedNumber($1, ((DefinedValue*)$3)->GetReference());	delete $3;      }  ;SignedNumber  :  INTEGER   | '-' INTEGER      {	$$ = -$2;      }  ;/** End of File ****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -