|
|
1.1 root 1: /* yacc.y - yacc ASN.1 parser */
2:
3: %token DEFINITIONS CCE BGIN END ID MODULEREFERENCE DOT
4: TYPEREFERENCE VALUEREFERENCE IDENTIFIER BOOLEAN TRUE
5: FALSE INTEGER LBRACE RBRACE COMMA LBRACKET RBRACKET
6: NUMBER MINUS BIT STRING BSTRING HSTRING OCTET NIL
7: SEQUENCE OPTIONAL DEFAULT COMPONENTS OF SET CHOICE
8: LANGLE IMPLICIT UNIVERSAL APPLICATION PRIVATE ANY
9: OBJECT LPAREN RPAREN CSTRING MACROREFERENCE MACRO TYPE
10: NOTATION VALUE PRODUCTIONREFERENCE BAR ASTRING QSTRING
11: QIDENTIFIER QNUMBER QEMPTY LOCALTYPEREFERENCE
12: LOCALVALUEREFERENCE VVALUE RANGLE
13:
14: %%
15:
16: ModuleDefinition: MODULEREFERENCE
17: DEFINITIONS CCE
18: BGIN
19: ModuleBody
20: END
21: ;
22:
23: ModuleBody: AssignmentList
24: | empty
25: ;
26:
27: AssignmentList: Assignment AssignmentList
28: | Assignment
29: ;
30:
31: Assignment: Typeassignment
32: | Valueassignment
33: ;
34:
35: Externaltypereference: MODULEREFERENCE DOT TYPEREFERENCE
36: ;
37:
38: Externalvaluereference: MODULEREFERENCE DOT VALUEREFERENCE
39: ;
40:
41: DefinedType: Externaltypereference
42: | TYPEREFERENCE
43: ;
44:
45: DefinedValue: Externalvaluereference
46: | VALUEREFERENCE
47: ;
48:
49: Typeassignment: TYPEREFERENCE CCE Type
50: ;
51:
52: Valueassignment: VALUEREFERENCE Type CCE Value
53: ;
54:
55: Type: BuiltinType
56: | DefinedType
57: ;
58:
59: BuiltinType: BooleanType
60: | IntegerType
61: | BitStringType
62: | OctetStringType
63: | NullType
64: | SequenceType
65: | SequenceOfType
66: | SetType
67: | SetOfType
68: | ChoiceType
69: | SelectionType
70: | TaggedType
71: | AnyType
72: | ObjectIdentifierType
73: /* | CharacterStringType
74: | UsefulType */
75: ;
76:
77: NamedType: IDENTIFIER Type
78: | Type
79: | SelectionType
80: ;
81:
82: Value: BuiltinValue
83: | DefinedValue
84: ;
85:
86: BuiltinValue: BooleanValue
87: | IntegerValue
88: | BitStringValue
89: | OctetStringValue
90: | NullValue
91: | SequenceValue
92: | SequenceOfValue
93: | SetValue
94: | SetOfValue
95: | ChoiceValue
96: | SelectionValue
97: | TaggedValue
98: | AnyValue
99: | ObjectIdentifierValue
100: /* | CharacterStringValue */
101: ;
102:
103: NamedValue: IDENTIFIER Value
104: | Value
105: ;
106:
107: BooleanType: BOOLEAN
108: ;
109:
110: BooleanValue: TRUE
111: | FALSE
112: ;
113:
114: IntegerType: INTEGER
115: | INTEGER LBRACE NamedNumberList RBRACE
116: ;
117:
118: NamedNumberList: NamedNumber
119: | NamedNumberList COMMA NamedNumber
120: ;
121:
122: NamedNumber: IDENTIFIER LPAREN SignedNumber RPAREN
123: | IDENTIFIER LPAREN DefinedValue RPAREN
124: ;
125:
126: SignedNumber: NUMBER
127: | MINUS NUMBER
128: ;
129:
130: IntegerValue: SignedNumber
131: | IDENTIFIER
132: ;
133:
134: BitStringType: BIT STRING
135: | BIT STRING LBRACE NamedBitList RBRACE
136: ;
137:
138: NamedBitList: NamedBit
139: | NamedBitList COMMA NamedBit
140: ;
141:
142: NamedBit: IDENTIFIER LPAREN NUMBER RPAREN
143: | IDENTIFIER LPAREN DefinedValue RPAREN
144: ;
145:
146: BitStringValue: BSTRING
147: | HSTRING
148: | LBRACE IdentifierList RBRACE
149: | LBRACE RBRACE
150: ;
151:
152: IdentifierList: IDENTIFIER
153: | IdentifierList COMMA IDENTIFIER
154: ;
155:
156: OctetStringType: OCTET STRING
157: ;
158:
159: OctetStringValue: BSTRING
160: | HSTRING
161: ;
162:
163: NullType: NIL
164: ;
165:
166: NullValue: NIL
167: ;
168:
169: SequenceType: SEQUENCE LBRACE ElementTypeList RBRACE
170: | SEQUENCE LBRACE RBRACE
171: ;
172:
173: ElementTypeList: ElementType
174: | ElementTypeList COMMA ElementType
175: ;
176:
177: ElementType: NamedType
178: | NamedType OPTIONAL
179: | NamedType DEFAULT Value
180: | COMPONENTS OF Type
181: ;
182:
183: SequenceValue: LBRACE ElementValueList RBRACE
184: | LBRACE RBRACE
185: ;
186:
187: ElementValueList: NamedValue
188: | ElementValueList COMMA NamedValue
189: ;
190:
191: SequenceOfType: SEQUENCE OF Type
192: | SEQUENCE
193: ;
194:
195: SequenceOfValue: LBRACE ValueList RBRACE
196: | LBRACE RBRACE
197: ;
198:
199: ValueList: Value
200: | ValueList COMMA Value
201: ;
202:
203: SetType: SET LBRACE ElementTypeList RBRACE
204: | SET LBRACE RBRACE
205: ;
206:
207: SetValue: LBRACE ElementValueList RBRACE
208: | LBRACE RBRACE
209: ;
210:
211: SetOfType: SET OF Type
212: | SET
213: ;
214:
215: SetOfValue: LBRACE ValueList RBRACE
216: | LBRACE RBRACE
217: ;
218:
219: ChoiceType: CHOICE LBRACE AlternativeTypeList RBRACE
220: ;
221:
222: AlternativeTypeList: NamedType
223: | AlternativeTypeList COMMA NamedType
224: ;
225:
226: ChoiceValue: NamedValue
227: ;
228:
229: SelectionType: IDENTIFIER LANGLE Type
230: ;
231:
232: SelectionValue: NamedValue
233: ;
234:
235: TaggedType: Tag Type
236: | Tag IMPLICIT Type
237: ;
238:
239: Tag: LBRACKET Class ClassNumber RBRACKET
240: ;
241:
242: ClassNumber: NUMBER
243: | DefinedValue
244: ;
245:
246: Class: UNIVERSAL
247: | APPLICATION
248: | PRIVATE
249: | empty
250: ;
251:
252: TaggedValue: Value
253: ;
254:
255: AnyType: ANY
256: ;
257:
258: AnyValue: Type Value
259: ;
260:
261: ObjectIdentifierType: OBJECT IDENTIFIER
262: ;
263:
264: ObjectIdentifierValue: LBRACE ObjIdComponentList RBRACE
265: | LBRACE DefinedValue ObjIdComponentList RBRACE
266: ;
267:
268: ObjIdComponentList: ObjIdComponent
269: | ObjIdComponent ObjIdComponentList
270: ;
271:
272: ObjIdComponent: NameForm
273: | NumberForm
274: | NameAndNumberForm
275: ;
276:
277: NameForm: IDENTIFIER
278: ;
279:
280: NumberForm: NUMBER
281: | DefinedValue
282: ;
283:
284: NameAndNumberForm: IDENTIFIER LPAREN NumberForm RPAREN
285: ;
286:
287: /* CharacterStringType: TYPEREFERENCE
288: ;
289:
290: CharacterStringValue: CSTRING
291: ;
292:
293: UsefulType: TYPEREFERENCE
294: ;
295: */
296: empty: /* empty */
297: ;
298:
299:
300: /* Macro stuff */
301:
302: MacroDefinition: MACROREFERENCE
303: MACRO CCE
304: BGIN
305: MacroBody
306: END
307: ;
308:
309: MacroBody: TypeProduction
310: | ValueProduction
311: | SupportingProductions
312: ;
313:
314: TypeProduction: TYPE NOTATION
315: CCE
316: MacroAlternativeList
317: ;
318:
319: ValueProduction: VALUE NOTATION
320: CCE
321: MacroAlternativeList
322: ;
323:
324: SupportingProductions: ProductionList
325: | empty
326: ;
327:
328: ProductionList: Production
329: | ProductionList Production
330: ;
331:
332: Production: PRODUCTIONREFERENCE
333: CCE
334: MacroAlternativeList
335: ;
336:
337: MacroAlternativeList: MacroAlternative
338: | MacroAlternativeList BAR MacroAlternative
339: ;
340:
341: MacroAlternative: SymbolList
342: ;
343:
344: SymbolList: SymbolElement
345: | SymbolList SymbolElement
346: ;
347:
348: SymbolElement: SymbolDefn
349: | EmbeddedDefinitions
350: ;
351:
352: SymbolDefn: ASTRING
353: | PRODUCTIONREFERENCE
354: | QSTRING
355: | QIDENTIFIER
356: | QNUMBER
357: | QEMPTY
358: | TYPE
359: | TYPE LPAREN LOCALTYPEREFERENCE RPAREN
360: | VALUE LPAREN MacroType RPAREN
361: | VALUE LPAREN LOCALVALUEREFERENCE RPAREN
362: | VALUE LPAREN VVALUE MacroType RPAREN
363: ;
364:
365: MacroType: LOCALVALUEREFERENCE
366: | Type
367: ;
368:
369: EmbeddedDefinitions: RANGLE EmbeddedDefinitionList LANGLE
370: ;
371:
372: EmbeddedDefinitionList: EmbeddedDefinition
373: | EmbeddedDefinitionList EmbeddedDefinition
374: ;
375:
376: EmbeddedDefinition: LocalTypeAssignment
377: | LocalValueAssignment
378: ;
379:
380: LocalTypeAssignment: LOCALTYPEREFERENCE CCE MacroType
381: ;
382:
383: LocalValueAssignment: LOCALVALUEREFERENCE MacroType CCE MacroValue
384: ;
385:
386: MacroValue: Value
387: | LOCALVALUEREFERENCE
388: ;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.