mirror of https://gerrit.osmocom.org/asn1c
more distinction
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1073 59561ff5-6e30-0410-9f3c-9617f08c8826
This commit is contained in:
parent
808411da2f
commit
eeb3c51bc0
|
@ -264,11 +264,13 @@ ASN_MODULE_SOURCES+=BOOLEAN.c
|
||||||
ASN_MODULE_HEADERS+=ENUMERATED.h
|
ASN_MODULE_HEADERS+=ENUMERATED.h
|
||||||
ASN_MODULE_SOURCES+=ENUMERATED.c
|
ASN_MODULE_SOURCES+=ENUMERATED.c
|
||||||
ASN_MODULE_HEADERS+=INTEGER.h
|
ASN_MODULE_HEADERS+=INTEGER.h
|
||||||
|
ASN_MODULE_HEADERS+=NativeEnumerated.h
|
||||||
ASN_MODULE_HEADERS+=GeneralizedTime.h
|
ASN_MODULE_HEADERS+=GeneralizedTime.h
|
||||||
ASN_MODULE_SOURCES+=GeneralizedTime.c
|
ASN_MODULE_SOURCES+=GeneralizedTime.c
|
||||||
ASN_MODULE_HEADERS+=IA5String.h
|
ASN_MODULE_HEADERS+=IA5String.h
|
||||||
ASN_MODULE_SOURCES+=IA5String.c
|
ASN_MODULE_SOURCES+=IA5String.c
|
||||||
ASN_MODULE_SOURCES+=INTEGER.c
|
ASN_MODULE_SOURCES+=INTEGER.c
|
||||||
|
ASN_MODULE_SOURCES+=NativeEnumerated.c
|
||||||
ASN_MODULE_HEADERS+=NativeInteger.h
|
ASN_MODULE_HEADERS+=NativeInteger.h
|
||||||
ASN_MODULE_SOURCES+=NativeInteger.c
|
ASN_MODULE_SOURCES+=NativeInteger.c
|
||||||
ASN_MODULE_HEADERS+=NumericString.h
|
ASN_MODULE_HEADERS+=NumericString.h
|
||||||
|
@ -328,6 +330,10 @@ ASN_MODULE_HEADERS+=xer_decoder.h
|
||||||
ASN_MODULE_SOURCES+=xer_decoder.c
|
ASN_MODULE_SOURCES+=xer_decoder.c
|
||||||
ASN_MODULE_HEADERS+=xer_encoder.h
|
ASN_MODULE_HEADERS+=xer_encoder.h
|
||||||
ASN_MODULE_SOURCES+=xer_encoder.c
|
ASN_MODULE_SOURCES+=xer_encoder.c
|
||||||
|
ASN_MODULE_HEADERS+=per_support.h
|
||||||
|
ASN_MODULE_SOURCES+=per_support.c
|
||||||
|
ASN_MODULE_HEADERS+=per_decoder.h
|
||||||
|
ASN_MODULE_SOURCES+=per_decoder.c
|
||||||
|
|
||||||
|
|
||||||
lib_LTLIBRARIES=libsomething.la
|
lib_LTLIBRARIES=libsomething.la
|
||||||
|
|
|
@ -19,7 +19,9 @@ void
|
||||||
asn1p_wsyntx_chunk_free(asn1p_wsyntx_chunk_t *wc) {
|
asn1p_wsyntx_chunk_free(asn1p_wsyntx_chunk_t *wc) {
|
||||||
if(wc) {
|
if(wc) {
|
||||||
switch(wc->type) {
|
switch(wc->type) {
|
||||||
case WC_LITERAL: free(wc->content.token); break;
|
case WC_LITERAL:
|
||||||
|
case WC_WHITESPACE:
|
||||||
|
free(wc->content.token); break;
|
||||||
case WC_REFERENCE: asn1p_ref_free(wc->content.ref); break;
|
case WC_REFERENCE: asn1p_ref_free(wc->content.ref); break;
|
||||||
case WC_OPTIONALGROUP:
|
case WC_OPTIONALGROUP:
|
||||||
asn1p_wsyntx_free(wc->content.syntax);
|
asn1p_wsyntx_free(wc->content.syntax);
|
||||||
|
@ -35,8 +37,10 @@ asn1p_wsyntx_chunk_clone(asn1p_wsyntx_chunk_t *wc) {
|
||||||
|
|
||||||
nc = asn1p_wsyntx_chunk_new();
|
nc = asn1p_wsyntx_chunk_new();
|
||||||
if(nc) {
|
if(nc) {
|
||||||
|
nc->type = wc->type;
|
||||||
switch(wc->type) {
|
switch(wc->type) {
|
||||||
case WC_LITERAL:
|
case WC_LITERAL:
|
||||||
|
case WC_WHITESPACE:
|
||||||
nc->content.token = malloc(strlen(wc->content.token)+1);
|
nc->content.token = malloc(strlen(wc->content.token)+1);
|
||||||
strcpy(nc->content.token, wc->content.token);
|
strcpy(nc->content.token, wc->content.token);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -12,11 +12,13 @@
|
||||||
typedef struct asn1p_wsyntx_chunk_s {
|
typedef struct asn1p_wsyntx_chunk_s {
|
||||||
enum {
|
enum {
|
||||||
WC_LITERAL,
|
WC_LITERAL,
|
||||||
|
WC_WHITESPACE,
|
||||||
WC_REFERENCE,
|
WC_REFERENCE,
|
||||||
WC_OPTIONALGROUP
|
WC_OPTIONALGROUP
|
||||||
} type;
|
} type;
|
||||||
/*
|
/*
|
||||||
* WC_LITERAL -> {buf, len}
|
* WC_LITERAL -> {token}
|
||||||
|
* WC_WHITESPACE -> {token}
|
||||||
* WC_REFERENCE -> {ref}
|
* WC_REFERENCE -> {ref}
|
||||||
* WC_OPTIONALGROUP -> {syntax}
|
* WC_OPTIONALGROUP -> {syntax}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2946,7 +2946,7 @@ YY_RULE_SETUP
|
||||||
{
|
{
|
||||||
asn1p_lval.tv_opaque.buf = strdup(yytext);
|
asn1p_lval.tv_opaque.buf = strdup(yytext);
|
||||||
asn1p_lval.tv_opaque.len = yyleng;
|
asn1p_lval.tv_opaque.len = yyleng;
|
||||||
return TOK_opaque;
|
return TOK_whitespace;
|
||||||
}
|
}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 130:
|
case 130:
|
||||||
|
|
|
@ -413,7 +413,7 @@ WITH return TOK_WITH;
|
||||||
{WSP}+ {
|
{WSP}+ {
|
||||||
asn1p_lval.tv_opaque.buf = strdup(yytext);
|
asn1p_lval.tv_opaque.buf = strdup(yytext);
|
||||||
asn1p_lval.tv_opaque.len = yyleng;
|
asn1p_lval.tv_opaque.len = yyleng;
|
||||||
return TOK_opaque;
|
return TOK_whitespace;
|
||||||
}
|
}
|
||||||
|
|
||||||
"}" {
|
"}" {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -32,106 +32,107 @@ typedef union {
|
||||||
} tv_nametag;
|
} tv_nametag;
|
||||||
} YYSTYPE;
|
} YYSTYPE;
|
||||||
#define TOK_PPEQ 257
|
#define TOK_PPEQ 257
|
||||||
#define TOK_opaque 258
|
#define TOK_whitespace 258
|
||||||
#define TOK_bstring 259
|
#define TOK_opaque 259
|
||||||
#define TOK_cstring 260
|
#define TOK_bstring 260
|
||||||
#define TOK_hstring 261
|
#define TOK_cstring 261
|
||||||
#define TOK_identifier 262
|
#define TOK_hstring 262
|
||||||
#define TOK_number 263
|
#define TOK_identifier 263
|
||||||
#define TOK_tuple 264
|
#define TOK_number 264
|
||||||
#define TOK_quadruple 265
|
#define TOK_tuple 265
|
||||||
#define TOK_number_negative 266
|
#define TOK_quadruple 266
|
||||||
#define TOK_typereference 267
|
#define TOK_number_negative 267
|
||||||
#define TOK_capitalreference 268
|
#define TOK_typereference 268
|
||||||
#define TOK_typefieldreference 269
|
#define TOK_capitalreference 269
|
||||||
#define TOK_valuefieldreference 270
|
#define TOK_typefieldreference 270
|
||||||
#define TOK_Literal 271
|
#define TOK_valuefieldreference 271
|
||||||
#define TOK_ABSENT 272
|
#define TOK_Literal 272
|
||||||
#define TOK_ABSTRACT_SYNTAX 273
|
#define TOK_ABSENT 273
|
||||||
#define TOK_ALL 274
|
#define TOK_ABSTRACT_SYNTAX 274
|
||||||
#define TOK_ANY 275
|
#define TOK_ALL 275
|
||||||
#define TOK_APPLICATION 276
|
#define TOK_ANY 276
|
||||||
#define TOK_AUTOMATIC 277
|
#define TOK_APPLICATION 277
|
||||||
#define TOK_BEGIN 278
|
#define TOK_AUTOMATIC 278
|
||||||
#define TOK_BIT 279
|
#define TOK_BEGIN 279
|
||||||
#define TOK_BMPString 280
|
#define TOK_BIT 280
|
||||||
#define TOK_BOOLEAN 281
|
#define TOK_BMPString 281
|
||||||
#define TOK_BY 282
|
#define TOK_BOOLEAN 282
|
||||||
#define TOK_CHARACTER 283
|
#define TOK_BY 283
|
||||||
#define TOK_CHOICE 284
|
#define TOK_CHARACTER 284
|
||||||
#define TOK_CLASS 285
|
#define TOK_CHOICE 285
|
||||||
#define TOK_COMPONENT 286
|
#define TOK_CLASS 286
|
||||||
#define TOK_COMPONENTS 287
|
#define TOK_COMPONENT 287
|
||||||
#define TOK_CONSTRAINED 288
|
#define TOK_COMPONENTS 288
|
||||||
#define TOK_CONTAINING 289
|
#define TOK_CONSTRAINED 289
|
||||||
#define TOK_DEFAULT 290
|
#define TOK_CONTAINING 290
|
||||||
#define TOK_DEFINITIONS 291
|
#define TOK_DEFAULT 291
|
||||||
#define TOK_DEFINED 292
|
#define TOK_DEFINITIONS 292
|
||||||
#define TOK_EMBEDDED 293
|
#define TOK_DEFINED 293
|
||||||
#define TOK_ENCODED 294
|
#define TOK_EMBEDDED 294
|
||||||
#define TOK_ENCODING_CONTROL 295
|
#define TOK_ENCODED 295
|
||||||
#define TOK_END 296
|
#define TOK_ENCODING_CONTROL 296
|
||||||
#define TOK_ENUMERATED 297
|
#define TOK_END 297
|
||||||
#define TOK_EXPLICIT 298
|
#define TOK_ENUMERATED 298
|
||||||
#define TOK_EXPORTS 299
|
#define TOK_EXPLICIT 299
|
||||||
#define TOK_EXTENSIBILITY 300
|
#define TOK_EXPORTS 300
|
||||||
#define TOK_EXTERNAL 301
|
#define TOK_EXTENSIBILITY 301
|
||||||
#define TOK_FALSE 302
|
#define TOK_EXTERNAL 302
|
||||||
#define TOK_FROM 303
|
#define TOK_FALSE 303
|
||||||
#define TOK_GeneralizedTime 304
|
#define TOK_FROM 304
|
||||||
#define TOK_GeneralString 305
|
#define TOK_GeneralizedTime 305
|
||||||
#define TOK_GraphicString 306
|
#define TOK_GeneralString 306
|
||||||
#define TOK_IA5String 307
|
#define TOK_GraphicString 307
|
||||||
#define TOK_IDENTIFIER 308
|
#define TOK_IA5String 308
|
||||||
#define TOK_IMPLICIT 309
|
#define TOK_IDENTIFIER 309
|
||||||
#define TOK_IMPLIED 310
|
#define TOK_IMPLICIT 310
|
||||||
#define TOK_IMPORTS 311
|
#define TOK_IMPLIED 311
|
||||||
#define TOK_INCLUDES 312
|
#define TOK_IMPORTS 312
|
||||||
#define TOK_INSTANCE 313
|
#define TOK_INCLUDES 313
|
||||||
#define TOK_INSTRUCTIONS 314
|
#define TOK_INSTANCE 314
|
||||||
#define TOK_INTEGER 315
|
#define TOK_INSTRUCTIONS 315
|
||||||
#define TOK_ISO646String 316
|
#define TOK_INTEGER 316
|
||||||
#define TOK_MAX 317
|
#define TOK_ISO646String 317
|
||||||
#define TOK_MIN 318
|
#define TOK_MAX 318
|
||||||
#define TOK_MINUS_INFINITY 319
|
#define TOK_MIN 319
|
||||||
#define TOK_NULL 320
|
#define TOK_MINUS_INFINITY 320
|
||||||
#define TOK_NumericString 321
|
#define TOK_NULL 321
|
||||||
#define TOK_OBJECT 322
|
#define TOK_NumericString 322
|
||||||
#define TOK_ObjectDescriptor 323
|
#define TOK_OBJECT 323
|
||||||
#define TOK_OCTET 324
|
#define TOK_ObjectDescriptor 324
|
||||||
#define TOK_OF 325
|
#define TOK_OCTET 325
|
||||||
#define TOK_OPTIONAL 326
|
#define TOK_OF 326
|
||||||
#define TOK_PATTERN 327
|
#define TOK_OPTIONAL 327
|
||||||
#define TOK_PDV 328
|
#define TOK_PATTERN 328
|
||||||
#define TOK_PLUS_INFINITY 329
|
#define TOK_PDV 329
|
||||||
#define TOK_PRESENT 330
|
#define TOK_PLUS_INFINITY 330
|
||||||
#define TOK_PrintableString 331
|
#define TOK_PRESENT 331
|
||||||
#define TOK_PRIVATE 332
|
#define TOK_PrintableString 332
|
||||||
#define TOK_REAL 333
|
#define TOK_PRIVATE 333
|
||||||
#define TOK_RELATIVE_OID 334
|
#define TOK_REAL 334
|
||||||
#define TOK_SEQUENCE 335
|
#define TOK_RELATIVE_OID 335
|
||||||
#define TOK_SET 336
|
#define TOK_SEQUENCE 336
|
||||||
#define TOK_SIZE 337
|
#define TOK_SET 337
|
||||||
#define TOK_STRING 338
|
#define TOK_SIZE 338
|
||||||
#define TOK_SYNTAX 339
|
#define TOK_STRING 339
|
||||||
#define TOK_T61String 340
|
#define TOK_SYNTAX 340
|
||||||
#define TOK_TAGS 341
|
#define TOK_T61String 341
|
||||||
#define TOK_TeletexString 342
|
#define TOK_TAGS 342
|
||||||
#define TOK_TRUE 343
|
#define TOK_TeletexString 343
|
||||||
#define TOK_TYPE_IDENTIFIER 344
|
#define TOK_TRUE 344
|
||||||
#define TOK_UNIQUE 345
|
#define TOK_TYPE_IDENTIFIER 345
|
||||||
#define TOK_UNIVERSAL 346
|
#define TOK_UNIQUE 346
|
||||||
#define TOK_UniversalString 347
|
#define TOK_UNIVERSAL 347
|
||||||
#define TOK_UTCTime 348
|
#define TOK_UniversalString 348
|
||||||
#define TOK_UTF8String 349
|
#define TOK_UTCTime 349
|
||||||
#define TOK_VideotexString 350
|
#define TOK_UTF8String 350
|
||||||
#define TOK_VisibleString 351
|
#define TOK_VideotexString 351
|
||||||
#define TOK_WITH 352
|
#define TOK_VisibleString 352
|
||||||
#define TOK_EXCEPT 353
|
#define TOK_WITH 353
|
||||||
#define TOK_INTERSECTION 354
|
#define TOK_EXCEPT 354
|
||||||
#define TOK_UNION 355
|
#define TOK_INTERSECTION 355
|
||||||
#define TOK_TwoDots 356
|
#define TOK_UNION 356
|
||||||
#define TOK_ThreeDots 357
|
#define TOK_TwoDots 357
|
||||||
|
#define TOK_ThreeDots 358
|
||||||
|
|
||||||
|
|
||||||
extern YYSTYPE asn1p_lval;
|
extern YYSTYPE asn1p_lval;
|
||||||
|
|
|
@ -107,6 +107,7 @@ static void _fixup_anonymous_identifier(asn1p_expr_t *expr);
|
||||||
* Token types returned by scanner.
|
* Token types returned by scanner.
|
||||||
*/
|
*/
|
||||||
%token TOK_PPEQ /* "::=", Pseudo Pascal EQuality */
|
%token TOK_PPEQ /* "::=", Pseudo Pascal EQuality */
|
||||||
|
%token <tv_opaque> TOK_whitespace /* A span of whitespace */
|
||||||
%token <tv_opaque> TOK_opaque /* opaque data (driven from .y) */
|
%token <tv_opaque> TOK_opaque /* opaque data (driven from .y) */
|
||||||
%token <tv_str> TOK_bstring
|
%token <tv_str> TOK_bstring
|
||||||
%token <tv_opaque> TOK_cstring
|
%token <tv_opaque> TOK_cstring
|
||||||
|
@ -1073,8 +1074,9 @@ WithSyntaxList:
|
||||||
;
|
;
|
||||||
|
|
||||||
WithSyntaxToken:
|
WithSyntaxToken:
|
||||||
TOK_opaque {
|
TOK_whitespace {
|
||||||
$$ = asn1p_wsyntx_chunk_frombuf($1.buf, $1.len, 0);
|
$$ = asn1p_wsyntx_chunk_frombuf($1.buf, $1.len, 0);
|
||||||
|
$$->type = WC_WHITESPACE;
|
||||||
}
|
}
|
||||||
| TOK_Literal {
|
| TOK_Literal {
|
||||||
$$ = asn1p_wsyntx_chunk_frombuf($1, strlen($1), 0);
|
$$ = asn1p_wsyntx_chunk_frombuf($1, strlen($1), 0);
|
||||||
|
|
|
@ -415,6 +415,7 @@ asn1print_with_syntax(asn1p_wsyntx_t *wx, enum asn1print_flags flags) {
|
||||||
TQ_FOR(wc, &(wx->chunks), next) {
|
TQ_FOR(wc, &(wx->chunks), next) {
|
||||||
switch(wc->type) {
|
switch(wc->type) {
|
||||||
case WC_LITERAL:
|
case WC_LITERAL:
|
||||||
|
case WC_WHITESPACE:
|
||||||
printf("%s", wc->content.token);
|
printf("%s", wc->content.token);
|
||||||
break;
|
break;
|
||||||
case WC_REFERENCE:
|
case WC_REFERENCE:
|
||||||
|
|
Loading…
Reference in New Issue