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

📄 asn_grammar.y

📁 pwlib源码库
💻 Y
📖 第 1 页 / 共 4 页
字号:
UpperEndpoint  : UpperEndValue  | '<' UpperEndValue      {	$$ = $2;      }  ;LowerEndValue  : Value   | MIN_t      {	$$ = new MinValue;      }  ;UpperEndValue  : Value   | MAX_t      {	$$ = new MaxValue;      }  ;PermittedAlphabet  : FROM Constraint      {	$$ = new FromConstraintElement($2);      }  ;ContainedSubtype  : INCLUDES Type      {	$$ = $2;      }/*| Type	 Actual grammar has INCLUDES keyword optional but this is		 horribly ambiguous, so only support  a few specific Type		 definitions */  | ConstrainedType  | BuiltinType  | DefinedType  | UsefulType  ;SizeConstraint  : SIZE_t Constraint      {	$$ = new SizeConstraintElement($2);      }  ;InnerTypeConstraints  : WITH COMPONENT Constraint      {	$$ = new WithComponentConstraintElement(NULL, $3, WithComponentConstraintElement::Default);      }  | WITH COMPONENTS MultipleTypeConstraints      {	$$ = $3;      }  ;MultipleTypeConstraints  : '{' TypeConstraints '}'			/* FullSpecification */      {	$$ = new InnerTypeConstraintElement($2, FALSE);      }  | '{'  '.' '.' '.' ',' TypeConstraints '}'	/* PartialSpecification */      {	$$ = new InnerTypeConstraintElement($6, TRUE);      }  ;TypeConstraints  : NamedConstraint      {	$$ = new ConstraintElementList;	$$->Append($1);      }  | NamedConstraint ',' TypeConstraints      {	$3->Append($1);	$$ = $3;      }  ;NamedConstraint  : IDENTIFIER PresenceConstraint      {	$$ = new WithComponentConstraintElement($1, NULL, (int)$2);      }  | IDENTIFIER Constraint PresenceConstraint       {	$$ = new WithComponentConstraintElement($1, $2, (int)$3);      }  ;PresenceConstraint  : PRESENT      {	$$ = WithComponentConstraintElement::Present;      }  | ABSENT       {	$$ = WithComponentConstraintElement::Absent;      }  | OPTIONAL_t      {	$$ = WithComponentConstraintElement::Optional;      }  | /* empty */      {	$$ = WithComponentConstraintElement::Default;      }  ;GeneralConstraint  : UserDefinedConstraint  | TableConstraint  ;UserDefinedConstraint  : CONSTRAINED BY '{' UserDefinedConstraintParameterList '}'    {      $$ = new Constraint($4);    }  ;UserDefinedConstraintParameterList  : /* empty */      {	$$ = new UserDefinedConstraintElement(NULL);      }  | UserDefinedConstraintParameters      {	$$ = new UserDefinedConstraintElement($1);      }  ; UserDefinedConstraintParameters  : UserDefinedConstraintParameter ',' UserDefinedConstraintParameters      {	$3->Append($1);	$$ = $3;      }  | UserDefinedConstraintParameter      {	$$ = new TypesList;	$$->Append($1);      }  ;UserDefinedConstraintParameter  : Governor ':' ActualParameter      {	$$ = $3;      }  | ActualParameter  ;TableConstraint  : ObjectSet /* SimpleTableConstraint */  | ComponentRelationConstraint  ;ComponentRelationConstraint  : '{' DefinedObjectSet '}' '{' AtNotations '}'    { $$ = NULL; }  ;AtNotations  : AtNotations ',' AtNotation  | AtNotation  ;AtNotation  : '@' ComponentIdList  | '@' '.' ComponentIdList  ;ComponentIdList  : ComponentIdList '.' IDENTIFIER  | IDENTIFIER  ;/********/ObjectClassAssignment  : OBJECTCLASSREFERENCE ASSIGNMENT ObjectClass    { }  ;ObjectAssignment  : OBJECTREFERENCE DefinedObjectClass ASSIGNMENT Object    { }  ;ObjectSetAssignment  : OBJECTSETREFERENCE DefinedObjectClass ASSIGNMENT ObjectSet    { }  ;ObjectClass  : DefinedObjectClass    { }  | ObjectClassDefn   | ParameterizedObjectClass  ;DefinedObjectClass  : ExternalObjectClassReference  | OBJECTCLASSREFERENCE  | UsefulObjectClassReference  ;ExternalObjectClassReference  : MODULEREFERENCE '.' OBJECTCLASSREFERENCE      {	$$ = ConcatNames($1, '.', $3);      }  ;UsefulObjectClassReference  : TYPE_IDENTIFIER      {	$$ = new PString("TYPE-IDENTIFIER");      }  | ABSTRACT_SYNTAX      {	$$ = new PString("ABSTRACT-SYNTAX");      }  ;ObjectClassDefn  : CLASS  '{'  FieldSpecs '}'  WithSyntaxSpec  ;FieldSpecs  : FieldSpecs ',' FieldSpec  | FieldSpec  ;FieldSpec  : TypeFieldSpec  | FixedTypeValueFieldSpec  | VariableTypeValueFieldSpec  | FixedTypeValueSetFieldSpec  | VariableTypeValueSetFieldSpec  | ObjectFieldSpec  | ObjectSetFieldSpec  ;TypeFieldSpec  : TYPEFIELDREFERENCE TypeOptionalitySpec    { }  ;TypeOptionalitySpec  : OPTIONAL_t  | DEFAULT Type  | /* empty */  ;FixedTypeValueFieldSpec  : VALUEFIELDREFERENCE Type Unique ValueOptionalitySpec    { }  ;Unique  : UNIQUE  | /* empty */  ;ValueOptionalitySpec  : OPTIONAL_t  | DEFAULT Value  | /* empty */  ;VariableTypeValueFieldSpec  : VALUEFIELDREFERENCE FieldName ValueOptionalitySpec    { }  ;FixedTypeValueSetFieldSpec  : VALUESETFIELDREFERENCE Type ValueSetOptionalitySpec    { }  ;ValueSetOptionalitySpec  : OPTIONAL_t  | DEFAULT ValueSet  | /* empty */  ;VariableTypeValueSetFieldSpec  : VALUESETFIELDREFERENCE FieldName ValueSetOptionalitySpec    { }  ;ObjectFieldSpec  : OBJECTFIELDREFERENCE DefinedObjectClass ObjectOptionalitySpec    { }  ;ObjectOptionalitySpec  : OPTIONAL_t  | DEFAULT Object  | /* empty */  ;ObjectSetFieldSpec  : OBJECTSETFIELDREFERENCE DefinedObjectClass ObjectSetOptionalitySpec    { }  ;ObjectSetOptionalitySpec  : OPTIONAL_t  | DEFAULT ObjectSet  | /* empty */  ;WithSyntaxSpec  : WITH SYNTAX SyntaxList  | /* empty */  ;SyntaxList  : '{' TokenOrGroupSpecs '}'  | '{' '}'  ;TokenOrGroupSpecs  : TokenOrGroupSpecs TokenOrGroupSpec  | TokenOrGroupSpec  ;TokenOrGroupSpec  : RequiredToken  | OptionalGroup  ;OptionalGroup  : '[' TokenOrGroupSpecs ']'  ;RequiredToken  : Literal  | PrimitiveFieldName    { }  ;Literal  : BIT  | BOOLEAN_t  | CHARACTER  | CHOICE  | EMBEDDED  | END  | ENUMERATED  | EXTERNAL  | FALSE_t  | INSTANCE  | INTEGER    { }  | INTERSECTION  | MINUS_INFINITY  | NULL_TYPE  | OBJECT  | OCTET  | PLUS_INFINITY  | REAL  | SEQUENCE  | SET  | TRUE_t  | UNION  | ','  ;DefinedObject  : ExternalObjectReference  | OBJECTREFERENCE    { }  ;ExternalObjectReference  : MODULEREFERENCE '.' OBJECTREFERENCE    { }  ;ParameterizedObjectClass  : DefinedObjectClass ActualParameterList    { }  ;DefinedObjectSet  : ExternalObjectSetReference    { }  | OBJECTSETREFERENCE    { }  ;ExternalObjectSetReference  : MODULEREFERENCE '.' OBJECTSETREFERENCE    { }  ;ParameterizedObjectSet  : DefinedObjectSet ActualParameterList  ;FieldName  : FieldName '.' PrimitiveFieldName      {	$$ = ConcatNames($1, '.', $3);      }  | PrimitiveFieldName  ;PrimitiveFieldName  : TYPEFIELDREFERENCE  | VALUEFIELDREFERENCE  | VALUESETFIELDREFERENCE  | OBJECTFIELDREFERENCE  | OBJECTSETFIELDREFERENCE  ;Object  : DefinedObject    { }/*!!!  | ObjectDefn    { }*/  | ObjectFromObject    { }  | ParameterizedObject    { }  ;/*!!!!ObjectDefn  : DefaultSyntax  | DefinedSyntax  ;DefaultSyntax  : '{' FieldSettings '}  : '{' '}  ;FieldSettings  : FieldSettings ',' FieldSetting  | FieldSetting  ;FieldSetting  : PrimitiveFieldName Setting  ;DefinedSyntax  : '{' DefinedSyntaxTokens '}'  'DefinedSyntaxTokens  : DefinedSyntaxTokens DefinedSyntaxToken  | /* empty *//*  ;DefinedSyntaxToken  : Literal  | Setting  ;Setting  : Type  | Value  | ValueSet  | Object  | ObjectSet  ;*/ObjectSet  : '{' ElementSetSpec '}'    { }  ;ObjectFromObject  : ReferencedObjects '.' FieldName  ;ObjectSetElements  : Object    { }  | DefinedObjectSet    { }/*!!!  | ObjectSetFromObjects*/  | ParameterizedObjectSet    { }  ;/*!!!ObjectSetFromObjects  : ReferencedObjects '.' FieldName  ;*//********/ParameterizedAssignment  : ParameterizedTypeAssignment  | ParameterizedValueAssignment  | ParameterizedValueSetTypeAssignment  | ParameterizedObjectClassAssignment  | ParameterizedObjectAssignment  | ParameterizedObjectSetAssignment  ;ParameterizedTypeAssignment  : TYPEREFERENCE ParameterList      {	DummyParameters = $2;      }    ASSIGNMENT Type      {	DummyParameters = NULL;	$5->SetName($1);	$5->SetParameters($2);	Module->AddType($5);      }  ;ParameterizedValueAssignment  : IDENTIFIER ParameterList Type ASSIGNMENT Value    { }  ;ParameterizedValueSetTypeAssignment  : TYPEREFERENCE ParameterList Type ASSIGNMENT ValueSet    { }  ;ParameterizedObjectClassAssignment  : OBJECTCLASSREFERENCE ParameterList ASSIGNMENT ObjectClass    { }  ;ParameterizedObjectAssignment  : OBJECTREFERENCE ParameterList DefinedObjectClass ASSIGNMENT Object    { }  ;ParameterizedObjectSetAssignment  : OBJECTSETREFERENCE ParameterList DefinedObjectClass ASSIGNMENT ObjectSet    { }  ;ParameterList  : '{' Parameters '}'      {	$$ = $2;      }  ;Parameters  : Parameters ',' Parameter      {	$$ = $1;	$$->Append($3);      }  | Parameter      {	$$ = new PStringList;	$$->Append($1);      }  ;Parameter  : Governor ':' Reference      {	$$ = $3;      }  | Reference  ;Governor  : Type    { }  | DefinedObjectClass    { }  ;ParameterizedType  : SimpleDefinedType ActualParameterList      {	$$ = new ParameterizedType($1, $2);      }  ;SimpleDefinedType  : ExternalTypeReference  | TYPEREFERENCE  ;ActualParameterList  : '{' ActualParameters '}'      {	$$ = $2;      }  ;ActualParameters  : ActualParameters ',' ActualParameter      {	$1->Append($3);	$$ = $1;      }  | ActualParameter      {	$$ = new TypesList;	$$->Append($1);      }  ;ActualParameter  : Type  | Value    { }  | ValueSet    { }  | DefinedObjectClass    { }/*!!!  | Object    { }  | ObjectSet*/  ;/********/ValueAssignment   : IDENTIFIER Type      {	IdentifierTokenContext = $2->GetIdentifierTokenContext();	BraceTokenContext = $2->GetBraceTokenContext();	NullTokenContext = NULL_VALUE;      }    ASSIGNMENT Value      {	$5->SetValueName($1);	Module->AddValue($5);	IdentifierTokenContext = IDENTIFIER;	BraceTokenContext = '{';	NullTokenContext = NULL_TYPE;      }  ;Value  : BuiltinValue  | ReferencedValue  ;BuiltinValue  : BitStringValue   | BooleanValue   | CharacterStringValue   | ChoiceValue /*| EmbeddedPDVValue  synonym to SequenceValue *//*| EnumeratedValue   synonym to IDENTIFIER    *//*| ExternalValue     synonym to SequenceValue *//*| InstanceOfValue   synonym to Value */  | SignedNumber      /* IntegerValue */      {	$$ = new IntegerValue($1);      }  | NullValue /*!!!  | ObjectClassFieldValue

⌨️ 快捷键说明

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