Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
asn1c
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
asn1c
Commits
1a49ced9
Commit
1a49ced9
authored
Nov 06, 2017
by
Lev Walkin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use hash for name lookup
parent
a67d1106
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
453 additions
and
414 deletions
+453
-414
libasn1fix/asn1fix_cws.c
libasn1fix/asn1fix_cws.c
+7
-4
libasn1fix/asn1fix_internal.h
libasn1fix/asn1fix_internal.h
+1
-0
libasn1fix/asn1fix_retrieve.c
libasn1fix/asn1fix_retrieve.c
+35
-32
libasn1fix/check_fixer.c
libasn1fix/check_fixer.c
+2
-5
libasn1parser/asn1p_module.c
libasn1parser/asn1p_module.c
+31
-1
libasn1parser/asn1p_module.h
libasn1parser/asn1p_module.h
+8
-1
libasn1parser/asn1p_xports.c
libasn1parser/asn1p_xports.c
+2
-2
libasn1parser/asn1p_xports.h
libasn1parser/asn1p_xports.h
+1
-1
libasn1parser/asn1p_y.c
libasn1parser/asn1p_y.c
+348
-349
libasn1parser/asn1p_y.h
libasn1parser/asn1p_y.h
+1
-1
libasn1parser/asn1p_y.y
libasn1parser/asn1p_y.y
+17
-18
No files found.
libasn1fix/asn1fix_cws.c
View file @
1a49ced9
...
...
@@ -389,7 +389,6 @@ _asn1f_assign_cell_value(arg_t *arg, struct asn1p_ioc_cell_s *cell,
char
*
mivr
;
/* Most Immediate Value Representation */
int
new_ref
=
1
;
asn1p_t
*
asn
;
asn1p_module_t
*
mod
;
asn1p_expr_t
*
type_expr
=
(
asn1p_expr_t
*
)
NULL
;
int
i
,
ret
=
0
,
psize
;
char
*
pp
;
...
...
@@ -458,9 +457,13 @@ _asn1f_assign_cell_value(arg_t *arg, struct asn1p_ioc_cell_s *cell,
free
(
mivr
);
return
-
1
;
}
else
{
mod
=
TQ_FIRST
(
&
(
asn
->
modules
));
assert
(
mod
);
expr
=
TQ_REMOVE
(
&
(
mod
->
members
),
next
);
asn1p_module_t
*
mod
=
TQ_FIRST
(
&
(
asn
->
modules
));
assert
(
mod
);
/* This member removal is safe with respect to members hash since the
* entire asn module will be deleted down below.
*/
expr
=
TQ_REMOVE
(
&
(
mod
->
members
),
next
);
assert
(
expr
);
expr
->
parent_expr
=
NULL
;
...
...
libasn1fix/asn1fix_internal.h
View file @
1a49ced9
...
...
@@ -22,6 +22,7 @@
#include <asn1parser.h>
/* Our lovely ASN.1 parser module */
#include <asn1_namespace.h>
#include <genhash.h>
#include "asn1fix.h"
#ifdef _WIN32
...
...
libasn1fix/asn1fix_retrieve.c
View file @
1a49ced9
...
...
@@ -28,35 +28,44 @@ asn1f_lookup_child(asn1p_expr_t *tc, const char *name) {
return
NULL
;
}
static
asn1p_expr_t
*
asn1f_lookup_in_module
(
asn1p_module_t
*
mod
,
const
char
*
name
)
{
asn1p_expr_t
*
expr
=
genhash_get
(
mod
->
members_hash
,
name
);
if
(
!
expr
)
{
asn1p_expr_t
*
memb
;
TQ_FOR
(
memb
,
&
mod
->
members
,
next
)
{
if
(
memb
->
expr_type
==
ASN_BASIC_ENUMERATED
)
{
asn1p_expr_t
*
v
=
asn1f_lookup_child
(
memb
,
name
);
if
(
v
)
return
v
;
}
}
}
return
expr
;
}
asn1p_module_t
*
asn1f_lookup_in_imports
(
arg_t
*
arg
,
asn1p_module_t
*
mod
,
const
char
*
name
)
{
asn1p_xports_t
*
xp
;
asn1p_module_t
*
fromModule
;
asn1p_expr_t
*
tc
=
(
asn1p_expr_t
*
)
0
;
asn1p_expr_t
*
memb
=
(
asn1p_expr_t
*
)
0
;
asn1p_expr_t
*
v
=
(
asn1p_expr_t
*
)
0
;
/*
* Search in which exactly module this name is defined.
*/
TQ_FOR
(
xp
,
&
(
mod
->
imports
),
xp_next
)
{
fromModule
=
asn1f_lookup_module
(
arg
,
xp
->
fromModuleName
,
NULL
);
TQ_FOR
(
tc
,
&
(
xp
->
members
),
next
)
{
if
(
strcmp
(
name
,
tc
->
Identifier
)
==
0
)
asn1p_module_t
*
fromModule
=
asn1f_lookup_module
(
arg
,
xp
->
fromModuleName
,
NULL
);
asn1p_expr_t
*
tc
=
(
asn1p_expr_t
*
)
0
;
TQ_FOR
(
tc
,
&
(
xp
->
xp_members
),
next
)
{
if
(
strcmp
(
name
,
tc
->
Identifier
)
==
0
)
break
;
if
(
!
fromModule
)
continue
;
TQ_FOR
(
memb
,
&
(
fromModule
->
members
),
next
)
{
if
((
memb
->
expr_type
!=
ASN_BASIC_ENUMERATED
)
||
(
strcmp
(
memb
->
Identifier
,
tc
->
Identifier
)
!=
0
))
continue
;
v
=
asn1f_lookup_child
(
memb
,
name
);
if
(
v
)
break
;
}
if
(
v
)
break
;
asn1p_expr_t
*
v
=
v
=
asn1f_lookup_in_module
(
fromModule
,
tc
->
Identifier
);
if
(
v
)
break
;
}
if
(
tc
)
break
;
}
...
...
@@ -291,8 +300,6 @@ asn1f_lookup_symbol_impl(arg_t *arg, asn1p_expr_t *rhs_pspecs, const asn1p_ref_t
ns_item
--
)
{
struct
asn1_namespace_element_s
*
ns_el
=
&
my_namespace
->
elements
[
ns_item
];
asn1p_expr_t
*
ref_tc
;
/* Referenced tc */
asn1p_expr_t
*
v
=
(
asn1p_expr_t
*
)
0
;
switch
(
ns_el
->
selector
)
{
case
NAM_SYMBOL
:
...
...
@@ -312,22 +319,12 @@ asn1f_lookup_symbol_impl(arg_t *arg, asn1p_expr_t *rhs_pspecs, const asn1p_ref_t
DISPOSE_OF_MY_NAMESPACE
();
return
ns_el
->
u
.
symbol
.
resolution
;
}
case
NAM_SPACE
:
case
NAM_SPACE
:
{
asn1p_expr_t
*
ref_tc
;
/* Referenced tc */
/*
* Do a direct symbol search in the given module.
*/
TQ_FOR
(
ref_tc
,
&
(
ns_el
->
u
.
space
.
module
->
members
),
next
)
{
if
(
ref_tc
->
Identifier
)
if
(
strcmp
(
ref_tc
->
Identifier
,
identifier
)
==
0
)
break
;
if
(
ref_tc
->
expr_type
==
ASN_BASIC_ENUMERATED
)
{
v
=
asn1f_lookup_child
(
ref_tc
,
identifier
);
if
(
v
)
{
ref_tc
=
v
;
break
;
}
}
}
ref_tc
=
asn1f_lookup_in_module
(
ns_el
->
u
.
space
.
module
,
identifier
);
if
(
ref_tc
)
{
/* It is acceptable that we don't use input parameters */
if
(
rhs_pspecs
&&
!
ref_tc
->
lhs_params
)
{
...
...
@@ -355,6 +352,7 @@ asn1f_lookup_symbol_impl(arg_t *arg, asn1p_expr_t *rhs_pspecs, const asn1p_ref_t
DISPOSE_OF_MY_NAMESPACE
();
return
ref_tc
;
}
}
/*
if(!expr && !(arg->expr->_mark & TM_BROKEN)
...
...
@@ -479,6 +477,11 @@ asn1f_find_terminal_thing(arg_t *arg, asn1p_expr_t *expr, enum ftt_what what) {
ref
=
expr
->
reference
;
break
;
case
FTT_VALUE
:
DEBUG
(
"%s(%s->%s) meta %d for line %d"
,
"VALUE"
,
expr
->
Identifier
,
asn1f_printable_reference
(
ref
),
expr
->
meta_type
,
expr
->
_lineno
);
assert
(
expr
->
meta_type
==
AMT_VALUE
);
assert
(
expr
->
value
);
/* Expression may be a terminal type itself */
...
...
@@ -574,7 +577,7 @@ asn1f_compatible_with_exports(arg_t *arg, asn1p_module_t *mod, const char *name)
return
0
;
}
TQ_FOR
(
item
,
&
(
exports
->
members
),
next
)
{
TQ_FOR
(
item
,
&
(
exports
->
xp_
members
),
next
)
{
if
(
strcmp
(
item
->
Identifier
,
name
)
==
0
)
return
0
;
}
...
...
libasn1fix/check_fixer.c
View file @
1a49ced9
...
...
@@ -12,6 +12,7 @@
#include <errno.h>
#include <libgen.h>
#include "genhash.h"
#include "asn1fix.h"
#include "asn1_buffer.h"
#include "asn1_namespace.h"
...
...
@@ -340,11 +341,7 @@ post_fix_check_element(asn1p_module_t *mod, asn1p_expr_t *check_expr) {
/*
* Scan in search for the original.
*/
TQ_FOR
(
expr
,
&
(
mod
->
members
),
next
)
{
if
(
strcmp
(
expr
->
Identifier
,
name
)
==
0
)
break
;
}
expr
=
genhash_get
(
mod
->
members_hash
,
name
);
if
(
expr
==
NULL
)
{
fprintf
(
stderr
,
"CHECKER: Value
\"
%s
\"
requested by "
...
...
libasn1parser/asn1p_module.c
View file @
1a49ced9
#include <stdlib.h>
#include <string.h>
#include <genhash.h>
#include "asn1parser.h"
...
...
@@ -15,7 +16,10 @@ asn1p_module_new() {
TQ_INIT
(
&
(
mod
->
exports
));
TQ_INIT
(
&
(
mod
->
imports
));
TQ_INIT
(
&
(
mod
->
members
));
}
mod
->
members_hash
=
genhash_new
(
cmpf_string
,
hashf_string
,
NULL
,
NULL
);
assert
(
mod
->
members_hash
);
}
return
mod
;
}
...
...
@@ -42,6 +46,9 @@ asn1p_module_free(asn1p_module_t *mod) {
while
((
expr
=
TQ_REMOVE
(
&
(
mod
->
members
),
next
)))
asn1p_expr_free
(
expr
);
genhash_destroy
(
mod
->
members_hash
);
mod
->
members_hash
=
NULL
;
free
(
mod
);
}
}
...
...
@@ -66,3 +73,26 @@ asn1p_delete(asn1p_t *asn) {
free
(
asn
);
}
}
void
asn1p_module_move_members
(
asn1p_module_t
*
to
,
asn1p_module_t
*
from
)
{
if
(
from
)
{
while
(
TQ_FIRST
(
&
(
from
->
members
)))
{
asn1p_expr_t
*
expr
=
TQ_REMOVE
(
&
from
->
members
,
next
);
TQ_ADD
(
&
to
->
members
,
expr
,
next
);
genhash_add
(
to
->
members_hash
,
expr
->
Identifier
,
expr
);
}
assert
(
TQ_FIRST
(
&
from
->
members
)
==
0
);
genhash_empty
(
from
->
members_hash
,
0
,
0
);
}
}
void
asn1p_module_member_add
(
asn1p_module_t
*
mod
,
asn1p_expr_t
*
expr
)
{
if
(
expr
)
{
TQ_ADD
(
&
mod
->
members
,
expr
,
next
);
genhash_add
(
mod
->
members_hash
,
expr
->
Identifier
,
expr
);
}
}
libasn1parser/asn1p_module.h
View file @
1a49ced9
...
...
@@ -16,6 +16,8 @@ typedef struct asn1p_s {
asn1p_t
*
asn1p_new
(
void
);
void
asn1p_delete
(
asn1p_t
*
asn
);
struct
genhash_s
;
/* Forward declaration */
/*
* Flags specific to a module.
*/
...
...
@@ -75,7 +77,8 @@ typedef struct asn1p_module_s {
/*
* List of everything that this module defines itself.
*/
TQ_HEAD
(
struct
asn1p_expr_s
)
members
;
TQ_HEAD
(
struct
asn1p_expr_s
)
members
;
/* Do not access directly */
struct
genhash_s
*
members_hash
;
/*
* Next module in the list.
...
...
@@ -100,4 +103,8 @@ typedef struct asn1p_module_s {
asn1p_module_t
*
asn1p_module_new
(
void
);
void
asn1p_module_free
(
asn1p_module_t
*
mod
);
void
asn1p_module_move_members
(
asn1p_module_t
*
to
,
asn1p_module_t
*
from
);
void
asn1p_module_member_add
(
asn1p_module_t
*
mod
,
struct
asn1p_expr_s
*
expr
);
#endif
/* ASN1_PARSER_MODULE_H */
libasn1parser/asn1p_xports.c
View file @
1a49ced9
...
...
@@ -13,7 +13,7 @@ asn1p_xports_new() {
xp
=
calloc
(
1
,
sizeof
*
xp
);
if
(
xp
)
{
TQ_INIT
(
&
(
xp
->
members
));
TQ_INIT
(
&
(
xp
->
xp_
members
));
}
return
xp
;
...
...
@@ -30,7 +30,7 @@ asn1p_xports_free(asn1p_xports_t *xp) {
free
(
xp
->
fromModuleName
);
asn1p_oid_free
(
xp
->
identifier
.
oid
);
while
((
expr
=
TQ_REMOVE
(
&
(
xp
->
members
),
next
)))
while
((
expr
=
TQ_REMOVE
(
&
(
xp
->
xp_
members
),
next
)))
asn1p_expr_free
(
expr
);
free
(
xp
);
...
...
libasn1parser/asn1p_xports.h
View file @
1a49ced9
...
...
@@ -26,7 +26,7 @@ typedef struct asn1p_xports_s {
/*
* Number of entities to import.
*/
TQ_HEAD
(
struct
asn1p_expr_s
)
members
;
TQ_HEAD
(
struct
asn1p_expr_s
)
xp_
members
;
/*
* Pointer to the next xports structure in whatever list.
...
...
libasn1parser/asn1p_y.c
View file @
1a49ced9
...
...
@@ -394,15 +394,14 @@ static asn1p_module_t *currentModule;
#ifdef AL_IMPORT
#error AL_IMPORT DEFINED ELSEWHERE!
#endif
#define AL_IMPORT(to,where,from,field) do { \
if(!(from)) break; \
while(TQ_FIRST(&((from)->where))) { \
TQ_ADD(&((to)->where), \
TQ_REMOVE(&((from)->where), field), \
field); \
} \
assert(TQ_FIRST(&((from)->where)) == 0); \
} while(0)
#define AL_IMPORT(to, where, from, field) \
do { \
if(!(from)) break; \
while(TQ_FIRST(&((from)->where))) { \
TQ_ADD(&((to)->where), TQ_REMOVE(&((from)->where), field), field); \
} \
assert(TQ_FIRST(&((from)->where)) == 0); \
} while(0)
...
...
@@ -426,7 +425,7 @@ static asn1p_module_t *currentModule;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef
union
YYSTYPE
#line 11
6
"asn1p_y.y"
#line 11
5
"asn1p_y.y"
{
asn1p_t
*
a_grammar
;
asn1p_module_flags_e
a_module_flags
;
...
...
@@ -462,7 +461,7 @@ typedef union YYSTYPE
}
tv_nametag
;
}
/* Line 193 of yacc.c. */
#line 46
6
"asn1p_y.c"
#line 46
5
"asn1p_y.c"
YYSTYPE
;
# define yystype YYSTYPE
/* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
...
...
@@ -475,7 +474,7 @@ typedef union YYSTYPE
/* Line 216 of yacc.c. */
#line 47
9
"asn1p_y.c"
#line 47
8
"asn1p_y.c"
#ifdef short
# undef short
...
...
@@ -895,41 +894,41 @@ static const yytype_int16 yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static
const
yytype_uint16
yyrline
[]
=
{
0
,
41
5
,
415
,
418
,
424
,
429
,
446
,
446
,
475
,
476
,
4
80
,
483
,
489
,
495
,
504
,
508
,
512
,
522
,
523
,
532
,
53
5
,
544
,
547
,
550
,
553
,
557
,
578
,
579
,
588
,
601
,
60
4
,
621
,
628
,
642
,
650
,
649
,
663
,
676
,
677
,
680
,
6
90
,
696
,
697
,
700
,
705
,
712
,
713
,
717
,
728
,
733
,
7
40
,
746
,
752
,
762
,
763
,
775
,
778
,
781
,
789
,
794
,
80
1
,
807
,
813
,
822
,
825
,
845
,
855
,
875
,
881
,
897
,
90
3
,
911
,
920
,
931
,
935
,
943
,
951
,
959
,
970
,
975
,
98
2
,
983
,
991
,
999
,
1022
,
1023
,
1026
,
1031
,
1035
,
1043
,
10
50
,
1056
,
1063
,
1069
,
1074
,
1081
,
1086
,
1089
,
1096
,
1106
,
110
7
,
1111
,
1118
,
1128
,
1138
,
1149
,
1159
,
1170
,
1180
,
1191
,
120
3
,
1204
,
1211
,
1210
,
1219
,
1223
,
1230
,
1234
,
1237
,
1241
,
124
7
,
1255
,
1264
,
1275
,
1278
,
1285
,
1308
,
1331
,
1355
,
1362
,
138
1
,
1382
,
1385
,
1386
,
1392
,
1398
,
1404
,
1414
,
1424
,
1430
,
144
2
,
1457
,
1465
,
1473
,
1484
,
1495
,
1517
,
1525
,
1534
,
1538
,
154
3
,
1552
,
1557
,
1562
,
1570
,
1593
,
1603
,
1604
,
1605
,
1605
,
161
3
,
1618
,
1623
,
1628
,
1629
,
1630
,
1631
,
1635
,
1636
,
1654
,
165
8
,
1663
,
1671
,
1680
,
1695
,
1696
,
1702
,
1703
,
1704
,
1705
,
170
6
,
1707
,
1708
,
1709
,
1710
,
1711
,
1712
,
1713
,
1714
,
1721
,
172
2
,
1723
,
1727
,
1733
,
1738
,
1743
,
1748
,
1753
,
1762
,
1763
,
176
7
,
1771
,
1772
,
1773
,
1774
,
1775
,
1779
,
1780
,
1781
,
1782
,
178
6
,
1787
,
1794
,
1794
,
1795
,
1795
,
1799
,
1800
,
1804
,
1805
,
180
9
,
1810
,
1811
,
1815
,
1821
,
1822
,
1831
,
1831
,
1833
,
1836
,
18
40
,
1841
,
1847
,
1858
,
1859
,
1865
,
1866
,
1872
,
1873
,
1880
,
188
1
,
1887
,
1888
,
1899
,
1905
,
1911
,
1912
,
1914
,
1915
,
1916
,
192
1
,
1926
,
1931
,
1936
,
1948
,
1957
,
1958
,
1964
,
1965
,
1970
,
197
3
,
1978
,
1986
,
1992
,
2004
,
2007
,
2013
,
2014
,
2014
,
2015
,
201
7
,
2030
,
2035
,
2041
,
2055
,
2056
,
2060
,
2063
,
2066
,
2074
,
207
5
,
2076
,
2081
,
2080
,
2092
,
2101
,
2102
,
2103
,
2104
,
2107
,
21
10
,
2119
,
2135
,
2141
,
2147
,
2161
,
2172
,
2188
,
2191
,
2211
,
221
5
,
2219
,
2223
,
2230
,
2235
,
2241
,
2250
,
2255
,
2262
,
2270
,
22
80
,
2285
,
2292
,
2300
,
2310
,
2325
,
2330
,
2337
,
2344
,
2352
,
23
60
,
2367
,
2378
,
2382
,
2389
,
2420
,
2421
,
2425
,
2432
,
2438
,
243
9
,
2440
,
2441
,
2445
,
2446
,
2447
,
2451
,
2455
,
2463
,
2464
,
24
70
,
2477
,
2484
0
,
41
4
,
414
,
417
,
423
,
428
,
445
,
445
,
474
,
475
,
4
79
,
482
,
488
,
494
,
503
,
507
,
511
,
521
,
522
,
531
,
53
4
,
543
,
546
,
549
,
552
,
556
,
577
,
578
,
587
,
600
,
60
3
,
620
,
627
,
641
,
649
,
648
,
662
,
675
,
676
,
679
,
6
89
,
695
,
696
,
699
,
704
,
711
,
712
,
716
,
727
,
732
,
7
39
,
745
,
751
,
761
,
762
,
774
,
777
,
780
,
788
,
793
,
80
0
,
806
,
812
,
821
,
824
,
844
,
854
,
874
,
880
,
896
,
90
2
,
910
,
919
,
930
,
934
,
942
,
950
,
958
,
969
,
974
,
98
1
,
982
,
990
,
998
,
1021
,
1022
,
1025
,
1030
,
1034
,
1042
,
10
49
,
1055
,
1062
,
1068
,
1073
,
1080
,
1085
,
1088
,
1095
,
1105
,
110
6
,
1110
,
1117
,
1127
,
1137
,
1148
,
1158
,
1169
,
1179
,
1190
,
120
2
,
1203
,
1210
,
1209
,
1218
,
1222
,
1229
,
1233
,
1236
,
1240
,
124
6
,
1254
,
1263
,
1274
,
1277
,
1284
,
1307
,
1330
,
1354
,
1361
,
138
0
,
1381
,
1384
,
1385
,
1391
,
1397
,
1403
,
1413
,
1423
,
1429
,
144
1
,
1456
,
1464
,
1472
,
1483
,
1494
,
1516
,
1524
,
1533
,
1537
,
154
2
,
1551
,
1556
,
1561
,
1569
,
1592
,
1602
,
1603
,
1604
,
1604
,
161
2
,
1617
,
1622
,
1627
,
1628
,
1629
,
1630
,
1634
,
1635
,
1653
,
165
7
,
1662
,
1670
,
1679
,
1694
,
1695
,
1701
,
1702
,
1703
,
1704
,
170
5
,
1706
,
1707
,
1708
,
1709
,
1710
,
1711
,
1712
,
1713
,
1720
,
172
1
,
1722
,
1726
,
1732
,
1737
,
1742
,
1747
,
1752
,
1761
,
1762
,
176
6
,
1770
,
1771
,
1772
,
1773
,
1774
,
1778
,
1779
,
1780
,
1781
,
178
5
,
1786
,
1793
,
1793
,
1794
,
1794
,
1798
,
1799
,
1803
,
1804
,
180
8
,
1809
,
1810
,
1814
,
1820
,
1821
,
1830
,
1830
,
1832
,
1835
,
18
39
,
1840
,
1846
,
1857
,
1858
,
1864
,
1865
,
1871
,
1872
,
1879
,
188
0
,
1886
,
1887
,
1898
,
1904
,
1910
,
1911
,
1913
,
1914
,
1915
,
192
0
,
1925
,
1930
,
1935
,
1947
,
1956
,
1957
,
1963
,
1964
,
1969
,
197
2
,
1977
,
1985
,
1991
,
2003
,
2006
,
2012
,
2013
,
2013
,
2014
,
201
6
,
2029
,
2034
,
2040
,
2054
,
2055
,
2059
,
2062
,
2065
,
2073
,
207
4
,
2075
,
2080
,
2079
,
2091
,
2100
,
2101
,
2102
,
2103
,
2106
,
21
09
,
2118
,
2134
,
2140
,
2146
,
2160
,
2171
,
2187
,
2190
,
2210
,
221
4
,
2218
,
2222
,
2229
,
2234
,
2240
,
2249
,
2254
,
2261
,
2269
,
22
79
,
2284
,
2291
,
2299
,
2309
,
2324
,
2329
,
2336
,
2343
,
2351
,
23
59
,
2366
,
2377
,
2381
,
2388
,
2419
,
2420
,
2424
,
2431
,
2437
,
243
8
,
2439
,
2440
,
2444
,
2445
,
2446
,
2450
,
2454
,
2462
,
2463
,
24
69
,
2476
,
2483
};
#endif
...
...
@@ -2342,21 +2341,21 @@ yyreduce:
switch
(
yyn
)
{
case
2
:
#line 41
5
"asn1p_y.y"
#line 41
4
"asn1p_y.y"
{
*
(
void
**
)
param
=
(
yyvsp
[(
2
)
-
(
2
)].
a_grammar
);
}
break
;
case
3
:
#line 41
8
"asn1p_y.y"
#line 41
7
"asn1p_y.y"
{
*
(
void
**
)
param
=
(
yyvsp
[(
1
)
-
(
1
)].
a_grammar
);
}
break
;
case
4
:
#line 42
4
"asn1p_y.y"
#line 42
3
"asn1p_y.y"
{
(
yyval
.
a_grammar
)
=
asn1p_new
();
checkmem
((
yyval
.
a_grammar
));
...
...
@@ -2365,7 +2364,7 @@ yyreduce:
break
;
case
5
:
#line 42
9
"asn1p_y.y"
#line 42
8
"asn1p_y.y"
{
(
yyval
.
a_grammar
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_grammar
);
TQ_ADD
(
&
((
yyval
.
a_grammar
)
->
modules
),
(
yyvsp
[(
2
)
-
(
2
)].
a_module
),
mod_next
);
...
...
@@ -2373,12 +2372,12 @@ yyreduce:
break
;
case
6
:
#line 44
6
"asn1p_y.y"
#line 44
5
"asn1p_y.y"
{
currentModule
=
asn1p_module_new
();
}
break
;
case
7
:
#line 45
1
"asn1p_y.y"
#line 45
0
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
currentModule
;
...
...
@@ -2399,31 +2398,31 @@ yyreduce:
break
;
case
8
:
#line 47
5
"asn1p_y.y"
#line 47
4
"asn1p_y.y"
{
(
yyval
.
a_oid
)
=
0
;
}
break
;
case
9
:
#line 47
6
"asn1p_y.y"
#line 47
5
"asn1p_y.y"
{
(
yyval
.
a_oid
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_oid
);
}
break
;
case
10
:
#line 4
80
"asn1p_y.y"
#line 4
79
"asn1p_y.y"
{
(
yyval
.
a_oid
)
=
(
yyvsp
[(
2
)
-
(
3
)].
a_oid
);
}
break
;
case
11
:
#line 48
3
"asn1p_y.y"
#line 48
2
"asn1p_y.y"
{
(
yyval
.
a_oid
)
=
0
;
}
break
;
case
12
:
#line 48
9
"asn1p_y.y"
#line 48
8
"asn1p_y.y"
{
(
yyval
.
a_oid
)
=
asn1p_oid_new
();
asn1p_oid_add_arc
((
yyval
.
a_oid
),
&
(
yyvsp
[(
1
)
-
(
1
)].
a_oid_arc
));
...
...
@@ -2433,7 +2432,7 @@ yyreduce:
break
;
case
13
:
#line 49
5
"asn1p_y.y"
#line 49
4
"asn1p_y.y"
{
(
yyval
.
a_oid
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_oid
);
asn1p_oid_add_arc
((
yyval
.
a_oid
),
&
(
yyvsp
[(
2
)
-
(
2
)].
a_oid_arc
));
...
...
@@ -2443,7 +2442,7 @@ yyreduce:
break
;
case
14
:
#line 50
4
"asn1p_y.y"
#line 50
3
"asn1p_y.y"
{
/* iso */
(
yyval
.
a_oid_arc
).
name
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
(
yyval
.
a_oid_arc
).
number
=
-
1
;
...
...
@@ -2451,7 +2450,7 @@ yyreduce:
break
;
case
15
:
#line 50
8
"asn1p_y.y"
#line 50
7
"asn1p_y.y"
{
/* iso(1) */
(
yyval
.
a_oid_arc
).
name
=
(
yyvsp
[(
1
)
-
(
4
)].
tv_str
);
(
yyval
.
a_oid_arc
).
number
=
(
yyvsp
[(
3
)
-
(
4
)].
a_int
);
...
...
@@ -2459,7 +2458,7 @@ yyreduce:
break
;
case
16
:
#line 51
2
"asn1p_y.y"
#line 51
1
"asn1p_y.y"
{
/* 1 */
(
yyval
.
a_oid_arc
).
name
=
0
;
(
yyval
.
a_oid_arc
).
number
=
(
yyvsp
[(
1
)
-
(
1
)].
a_int
);
...
...
@@ -2467,61 +2466,61 @@ yyreduce:
break
;
case
17
:
#line 52
2
"asn1p_y.y"
#line 52
1
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
MSF_NOFLAGS
;
}
break
;
case
18
:
#line 52
3
"asn1p_y.y"
#line 52
2
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_module_flags
);
}
break
;
case
19
:
#line 53
2
"asn1p_y.y"
#line 53
1
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_module_flags
);
}
break
;
case
20
:
#line 53
5
"asn1p_y.y"
#line 53
4
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_module_flags
)
|
(
yyvsp
[(
2
)
-
(
2
)].
a_module_flags
);
}
break
;
case
21
:
#line 54
4
"asn1p_y.y"
#line 54
3
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
MSF_EXPLICIT_TAGS
;
}
break
;
case
22
:
#line 54
7
"asn1p_y.y"
#line 54
6
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
MSF_IMPLICIT_TAGS
;
}
break
;
case
23
:
#line 5
50
"asn1p_y.y"
#line 5
49
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
MSF_AUTOMATIC_TAGS
;
}
break
;
case
24
:
#line 55
3
"asn1p_y.y"
#line 55
2
"asn1p_y.y"
{
(
yyval
.
a_module_flags
)
=
MSF_EXTENSIBILITY_IMPLIED
;
}
break
;
case
25
:
#line 55
7
"asn1p_y.y"
#line 55
6
"asn1p_y.y"
{
/* X.680Amd1 specifies TAG and XER */
if
(
strcmp
((
yyvsp
[(
1
)
-
(
2
)].
tv_str
),
"TAG"
)
==
0
)
{
...
...
@@ -2540,24 +2539,24 @@ yyreduce:
break
;
case
26
:
#line 57
8
"asn1p_y.y"
#line 57
7
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
0
;
}
break
;
case
27
:
#line 57
9
"asn1p_y.y"
#line 57
8
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_module
);
}
break
;
case
28
:
#line 58
8
"asn1p_y.y"
#line 58
7
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
AL_IMPORT
((
yyval
.
a_module
),
exports
,
(
yyvsp
[(
1
)
-
(
3
)].
a_module
),
xp_next
);
AL_IMPORT
((
yyval
.
a_module
),
imports
,
(
yyvsp
[(
2
)
-
(
3
)].
a_module
),
xp_next
);
AL_IMPORT
((
yyval
.
a_module
),
members
,
(
yyvsp
[(
3
)
-
(
3
)].
a_module
),
next
);
asn1p_module_move_members
((
yyval
.
a_module
),
(
yyvsp
[(
3
)
-
(
3
)].
a_module
)
);
asn1p_module_free
((
yyvsp
[(
1
)
-
(
3
)].
a_module
));
asn1p_module_free
((
yyvsp
[(
2
)
-
(
3
)].
a_module
));
...
...
@@ -2566,14 +2565,14 @@ yyreduce:
break
;
case
29
:
#line 60
1
"asn1p_y.y"
#line 60
0
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_module
);
}
break
;
case
30
:
#line 60
4
"asn1p_y.y"
#line 60
3
"asn1p_y.y"
{
if
((
yyvsp
[(
1
)
-
(
2
)].
a_module
))
{
(
yyval
.
a_module
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_module
);
...
...
@@ -2581,51 +2580,51 @@ yyreduce:
(
yyval
.
a_module
)
=
(
yyvsp
[(
2
)
-
(
2
)].
a_module
);
break
;
}
AL_IMPORT
((
yyval
.
a_module
),
members
,
(
yyvsp
[(
2
)
-
(
2
)].
a_module
),
next
);
asn1p_module_move_members
((
yyval
.
a_module
),
(
yyvsp
[(
2
)
-
(
2
)].
a_module
)
);
asn1p_module_free
((
yyvsp
[(
2
)
-
(
2
)].
a_module
));
}
break
;
case
31
:
#line 62
1
"asn1p_y.y"
#line 62
0
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
checkmem
((
yyval
.
a_module
));
assert
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
->
expr_type
!=
A1TC_INVALID
);
assert
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
->
meta_type
!=
AMT_INVALID
);
TQ_ADD
(
&
((
yyval
.
a_module
)
->
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
asn1p_module_member_add
((
yyval
.
a_module
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
);
}
break
;
case
32
:
#line 62
8
"asn1p_y.y"
#line 62
7
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
checkmem
((
yyval
.
a_module
));
assert
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
->
expr_type
!=
A1TC_INVALID
);
assert
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
->
meta_type
!=
AMT_INVALID
);
TQ_ADD
(
&
((
yyval
.
a_module
)
->
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
asn1p_module_member_add
((
yyval
.
a_module
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
);
}
break
;
case
33
:
#line 64
2
"asn1p_y.y"
#line 64
1
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
checkmem
((
yyval
.
a_module
));
assert
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
->
expr_type
!=
A1TC_INVALID
);
assert
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
->
meta_type
!=
AMT_INVALID
);
TQ_ADD
(
&
((
yyval
.
a_module
)
->
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
asn1p_module_member_add
((
yyval
.
a_module
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
)
);
}
break
;
case
34
:
#line 6
50
"asn1p_y.y"
#line 6
49
"asn1p_y.y"
{
asn1p_lexer_hack_push_encoding_control
();
}
break
;
case
35
:
#line 65
1
"asn1p_y.y"
#line 65
0
"asn1p_y.y"
{
fprintf
(
stderr
,
"WARNING: ENCODING-CONTROL %s "
...
...
@@ -2637,7 +2636,7 @@ yyreduce:
break
;
case
36
:
#line 66
3
"asn1p_y.y"
#line 66
2
"asn1p_y.y"
{
return
yyerror
(
"Attempt to redefine a standard basic string type, "
...
...
@@ -2646,12 +2645,12 @@ yyreduce:
break
;
case
37
:
#line 67
6
"asn1p_y.y"
#line 67
5
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
0
;
}
break
;
case
39
:
#line 6
80
"asn1p_y.y"
#line 6
79
"asn1p_y.y"
{
if
(
!
saved_aid
&&
0
)
return
yyerror
(
"Unterminated IMPORTS FROM, "
...
...
@@ -2662,19 +2661,19 @@ yyreduce:
break
;
case
40
:
#line 6
90
"asn1p_y.y"
#line 6
89
"asn1p_y.y"
{
return
yyerror
(
"Empty IMPORTS list"
);
}
break
;
case
41
:
#line 69
6
"asn1p_y.y"
#line 69
5
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
}
break
;
case
43
:
#line
700
"asn1p_y.y"
#line
699
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
checkmem
((
yyval
.
a_module
));
...
...
@@ -2683,7 +2682,7 @@ yyreduce:
break
;
case
44
:
#line 70
5
"asn1p_y.y"
#line 70
4
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_module
);
TQ_ADD
(
&
((
yyval
.
a_module
)
->
imports
),
(
yyvsp
[(
2
)
-
(
2
)].
a_xports
),
xp_next
);
...
...
@@ -2691,17 +2690,17 @@ yyreduce:
break
;
case
45
:
#line 71
2
"asn1p_y.y"
#line 71
1
"asn1p_y.y"
{
memset
(
&
(
yyval
.
a_aid
),
0
,
sizeof
((
yyval
.
a_aid
)));
}
break
;
case
46
:
#line 71
3
"asn1p_y.y"
#line 71
2
"asn1p_y.y"
{
(
yyval
.
a_aid
).
oid
=
(
yyvsp
[(
1
)
-
(
1
)].
a_oid
);
}
break
;
case
47
:
#line 71
7
"asn1p_y.y"
#line 71
6
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
(
yyvsp
[(
1
)
-
(
4
)].
a_xports
);
(
yyval
.
a_xports
)
->
fromModuleName
=
(
yyvsp
[(
3
)
-
(
4
)].
tv_str
);
...
...
@@ -2713,24 +2712,24 @@ yyreduce:
break
;
case
48
:
#line 72
8
"asn1p_y.y"
#line 72
7
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
asn1p_xports_new
();
checkmem
((
yyval
.
a_xports
));
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
xp_
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
}
break
;
case
49
:
#line 73
3
"asn1p_y.y"
#line 73
2
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_xports
);
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
members
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
),
next
);
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
xp_
members
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
),
next
);
}
break
;
case
50
:
#line 7
40
"asn1p_y.y"
#line 7
39
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2740,7 +2739,7 @@ yyreduce:
break
;
case
51
:
#line 74
6
"asn1p_y.y"
#line 74
5
"asn1p_y.y"
{
/* Completely equivalent to above */
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2750,7 +2749,7 @@ yyreduce:
break
;
case
52
:
#line 75
2
"asn1p_y.y"
#line 75
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2760,12 +2759,12 @@ yyreduce:
break
;
case
53
:
#line 76
2
"asn1p_y.y"
#line 76
1
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
0
;
}
break
;
case
54
:
#line 76
3
"asn1p_y.y"
#line 76
2
"asn1p_y.y"
{
(
yyval
.
a_module
)
=
asn1p_module_new
();
checkmem
((
yyval
.
a_module
));
...
...
@@ -2778,21 +2777,21 @@ yyreduce:
break
;
case
55
:
#line 77
5
"asn1p_y.y"
#line 77
4
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
(
yyvsp
[(
2
)
-
(
3
)].
a_xports
);
}
break
;
case
56
:
#line 77
8
"asn1p_y.y"
#line 77
7
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
0
;
}
break
;
case
57
:
#line 78
1
"asn1p_y.y"
#line 78
0
"asn1p_y.y"
{
/* Empty EXPORTS clause effectively prohibits export. */
(
yyval
.
a_xports
)
=
asn1p_xports_new
();
...
...
@@ -2801,24 +2800,24 @@ yyreduce:
break
;
case
58
:
#line 78
9
"asn1p_y.y"
#line 78
8
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
asn1p_xports_new
();
assert
((
yyval
.
a_xports
));
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
xp_
members
),
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
),
next
);
}
break
;
case
59
:
#line 79
4
"asn1p_y.y"
#line 79
3
"asn1p_y.y"
{
(
yyval
.
a_xports
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_xports
);
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
members
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
),
next
);
TQ_ADD
(
&
((
yyval
.
a_xports
)
->
xp_
members
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
),
next
);
}
break
;
case
60
:
#line 80
1
"asn1p_y.y"
#line 80
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2828,7 +2827,7 @@ yyreduce:
break
;
case
61
:
#line 80
7
"asn1p_y.y"
#line 80
6
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2838,7 +2837,7 @@ yyreduce:
break
;
case
62
:
#line 81
3
"asn1p_y.y"
#line 81
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2848,12 +2847,12 @@ yyreduce:
break
;
case
63
:
#line 82
2
"asn1p_y.y"
#line 82
1
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
(
yyvsp
[(
2
)
-
(
3
)].
a_constr
);
}
break
;
case
64
:
#line 82
5
"asn1p_y.y"
#line 82
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
4
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
Identifier
==
0
);
...
...
@@ -2864,7 +2863,7 @@ yyreduce:
break
;
case
65
:
#line 84
5
"asn1p_y.y"
#line 84
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2875,7 +2874,7 @@ yyreduce:
break
;
case
66
:
#line 85
5
"asn1p_y.y"
#line 85
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -2887,7 +2886,7 @@ yyreduce:
break
;
case
67
:
#line 87
5
"asn1p_y.y"
#line 87
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
);
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
3
)].
tv_str
);
...
...
@@ -2897,7 +2896,7 @@ yyreduce:
break
;
case
68
:
#line 88
1
"asn1p_y.y"
#line 88
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
);
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
3
)].
tv_str
);
...
...
@@ -2907,7 +2906,7 @@ yyreduce:
break
;
case
69
:
#line 89
7
"asn1p_y.y"
#line 89
6
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
6
)
-
(
6
)].
a_expr
);
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
6
)].
tv_str
);
...
...
@@ -2916,7 +2915,7 @@ yyreduce:
break
;
case
70
:
#line 90
3
"asn1p_y.y"
#line 90
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
6
)
-
(
6
)].
a_expr
);
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
6
)].
tv_str
);
...
...
@@ -2925,7 +2924,7 @@ yyreduce:
break
;
case
71
:
#line 91
1
"asn1p_y.y"
#line 91
0
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_plist
)
=
asn1p_paramlist_new
(
yylineno
);
...
...
@@ -2938,7 +2937,7 @@ yyreduce:
break
;
case
72
:
#line 9
20
"asn1p_y.y"
#line 9
19
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_plist
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_plist
);
...
...
@@ -2950,7 +2949,7 @@ yyreduce:
break
;
case
73
:
#line 93
1
"asn1p_y.y"
#line 93
0
"asn1p_y.y"
{
(
yyval
.
a_parg
).
governor
=
NULL
;
(
yyval
.
a_parg
).
argument
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -2958,7 +2957,7 @@ yyreduce:
break
;
case
74
:
#line 93
5
"asn1p_y.y"
#line 93
4
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_parg
).
governor
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -2970,7 +2969,7 @@ yyreduce:
break
;
case
75
:
#line 94
3
"asn1p_y.y"
#line 94
2
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_parg
).
governor
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -2982,7 +2981,7 @@ yyreduce:
break
;
case
76
:
#line 95
1
"asn1p_y.y"
#line 95
0
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_parg
).
governor
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -2994,7 +2993,7 @@ yyreduce:
break
;
case
77
:
#line 95
9
"asn1p_y.y"
#line 95
8
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_parg
).
governor
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -3006,7 +3005,7 @@ yyreduce:
break
;
case
78
:
#line 9
70
"asn1p_y.y"
#line 9
69
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3015,7 +3014,7 @@ yyreduce:
break
;
case
79
:
#line 97
5
"asn1p_y.y"
#line 97
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -3023,7 +3022,7 @@ yyreduce:
break
;
case
81
:
#line 98
3
"asn1p_y.y"
#line 98
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3035,7 +3034,7 @@ yyreduce:
break
;
case
82
:
#line 99
1
"asn1p_y.y"
#line 99
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3047,7 +3046,7 @@ yyreduce:
break
;
case
83
:
#line 99
9
"asn1p_y.y"
#line 99
8
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
(
yyval
.
a_expr
)
->
expr_type
=
A1TC_VALUESET
;
...
...
@@ -3057,17 +3056,17 @@ yyreduce:
break
;
case
84
:
#line 102
2
"asn1p_y.y"
#line 102
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
}
break
;
case
85
:
#line 102
3
"asn1p_y.y"
#line 102
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
);
}
break
;
case
86
:
#line 102
6
"asn1p_y.y"
#line 102
5
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3076,7 +3075,7 @@ yyreduce:
break
;
case
87
:
#line 103
1
"asn1p_y.y"
#line 103
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -3084,7 +3083,7 @@ yyreduce:
break
;
case
88
:
#line 103
5
"asn1p_y.y"
#line 103
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
5
)].
a_expr
);
asn1p_expr_add_many
((
yyval
.
a_expr
),
(
yyvsp
[(
4
)
-
(
5
)].
a_expr
));
...
...
@@ -3093,7 +3092,7 @@ yyreduce:
break
;
case
89
:
#line 104
3
"asn1p_y.y"
#line 104
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
3
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
Identifier
==
0
);
...
...
@@ -3104,7 +3103,7 @@ yyreduce:
break
;
case
90
:
#line 10
50
"asn1p_y.y"
#line 10
49
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_expr
);
(
yyvsp
[(
2
)
-
(
2
)].
a_marker
).
flags
|=
(
yyval
.
a_expr
)
->
marker
.
flags
;
...
...
@@ -3114,7 +3113,7 @@ yyreduce:
break
;
case
91
:
#line 105
6
"asn1p_y.y"
#line 105
5
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3125,14 +3124,14 @@ yyreduce:
break
;
case
92
:
#line 106
3
"asn1p_y.y"
#line 106
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
);
}
break
;
case
93
:
#line 106
9
"asn1p_y.y"
#line 106
8
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3141,7 +3140,7 @@ yyreduce:
break
;
case
94
:
#line 107
4
"asn1p_y.y"
#line 107
3
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -3149,7 +3148,7 @@ yyreduce:
break
;
case
95
:
#line 108
1
"asn1p_y.y"
#line 108
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
2
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
Identifier
==
0
);
...
...
@@ -3158,14 +3157,14 @@ yyreduce:
break
;
case
96
:
#line 108
6
"asn1p_y.y"
#line 108
5
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
);
}
break
;
case
97
:
#line 108
9
"asn1p_y.y"
#line 108
8
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
);
_fixup_anonymous_identifier
((
yyval
.
a_expr
));
...
...
@@ -3173,7 +3172,7 @@ yyreduce:
break
;
case
98
:
#line 109
6
"asn1p_y.y"
#line 109
5
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
5
)].
a_expr
);
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3184,17 +3183,17 @@ yyreduce:
break
;
case
99
:
#line 110
6
"asn1p_y.y"
#line 110
5
"asn1p_y.y"
{
(
yyval
.
a_int
)
=
0
;
}
break
;
case
100
:
#line 110
7
"asn1p_y.y"
#line 110
6
"asn1p_y.y"
{
(
yyval
.
a_int
)
=
1
;
}
break
;
case
101
:
#line 111
1
"asn1p_y.y"
#line 111
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3205,7 +3204,7 @@ yyreduce:
break
;
case
102
:
#line 111
8
"asn1p_y.y"
#line 111
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -3213,7 +3212,7 @@ yyreduce:
break
;
case
103
:
#line 112
8
"asn1p_y.y"
#line 112
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3225,7 +3224,7 @@ yyreduce:
break
;
case
104
:
#line 113
8
"asn1p_y.y"
#line 113
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
4
)].
tv_str
);
...
...
@@ -3238,7 +3237,7 @@ yyreduce:
break
;
case
105
:
#line 114
9
"asn1p_y.y"
#line 114
8
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
3
)].
tv_str
);
...
...
@@ -3250,7 +3249,7 @@ yyreduce:
break
;
case
106
:
#line 115
9
"asn1p_y.y"
#line 115
8
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3263,7 +3262,7 @@ yyreduce:
break
;
case
107
:
#line 11
70
"asn1p_y.y"
#line 11
69
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
(
yyval
.
a_expr
)
->
Identifier
=
(
yyvsp
[(
1
)
-
(
3
)].
tv_str
);
...
...
@@ -3275,7 +3274,7 @@ yyreduce:
break
;
case
108
:
#line 11
80
"asn1p_y.y"
#line 11
79
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3288,7 +3287,7 @@ yyreduce:
break
;
case
109
:
#line 119
1
"asn1p_y.y"
#line 119
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3301,31 +3300,31 @@ yyreduce:
break
;
case
110
:
#line 120
3
"asn1p_y.y"
#line 120
2
"asn1p_y.y"
{
(
yyval
.
a_wsynt
)
=
0
;
}
break
;
case
111
:
#line 120
4
"asn1p_y.y"
#line 120
3
"asn1p_y.y"
{
(
yyval
.
a_wsynt
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_wsynt
);
}
break
;
case
112
:
#line 121
1
"asn1p_y.y"
#line 121
0
"asn1p_y.y"
{
asn1p_lexer_hack_enable_with_syntax
();
}
break
;
case
113
:
#line 121
3
"asn1p_y.y"
#line 121
2
"asn1p_y.y"
{
(
yyval
.
a_wsynt
)
=
(
yyvsp
[(
5
)
-
(
6
)].
a_wsynt
);
}
break
;
case
114
:
#line 121
9
"asn1p_y.y"
#line 121
8
"asn1p_y.y"
{
(
yyval
.
a_wsynt
)
=
asn1p_wsyntx_new
();
TQ_ADD
(
&
((
yyval
.
a_wsynt
)
->
chunks
),
(
yyvsp
[(
1
)
-
(
1
)].
a_wchunk
),
next
);
...
...
@@ -3333,7 +3332,7 @@ yyreduce:
break
;
case
115
:
#line 122
3
"asn1p_y.y"
#line 122
2
"asn1p_y.y"
{
(
yyval
.
a_wsynt
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_wsynt
);
TQ_ADD
(
&
((
yyval
.
a_wsynt
)
->
chunks
),
(
yyvsp
[(
2
)
-
(
2
)].
a_wchunk
),
next
);
...
...
@@ -3341,7 +3340,7 @@ yyreduce:
break
;
case
116
:
#line 12
30
"asn1p_y.y"
#line 12
29
"asn1p_y.y"
{
(
yyval
.
a_wchunk
)
=
asn1p_wsyntx_chunk_fromstring
((
yyvsp
[(
1
)
-
(
1
)].
tv_opaque
).
buf
,
0
);
(
yyval
.
a_wchunk
)
->
type
=
WC_WHITESPACE
;
...
...
@@ -3349,14 +3348,14 @@ yyreduce:
break
;
case
117
:
#line 123
4
"asn1p_y.y"
#line 123
3
"asn1p_y.y"
{
(
yyval
.
a_wchunk
)
=
asn1p_wsyntx_chunk_fromstring
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
),
0
);
}
break
;
case
118
:
#line 123
7
"asn1p_y.y"
#line 123
6
"asn1p_y.y"
{
(
yyval
.
a_wchunk
)
=
asn1p_wsyntx_chunk_fromstring
((
yyvsp
[(
1
)
-
(
1
)].
a_refcomp
).
name
,
0
);
(
yyval
.
a_wchunk
)
->
type
=
WC_FIELD
;
...
...
@@ -3364,14 +3363,14 @@ yyreduce:
break
;
case
119
:
#line 124
1
"asn1p_y.y"
#line 124
0
"asn1p_y.y"
{
(
yyval
.
a_wchunk
)
=
asn1p_wsyntx_chunk_fromsyntax
((
yyvsp
[(
2
)
-
(
3
)].
a_wsynt
));
}
break
;
case
120
:
#line 124
7
"asn1p_y.y"
#line 124
6
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3383,7 +3382,7 @@ yyreduce:
break
;
case
121
:
#line 125
5
"asn1p_y.y"
#line 125
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3396,7 +3395,7 @@ yyreduce:
break
;
case
122
:
#line 126
4
"asn1p_y.y"
#line 126
3
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3409,7 +3408,7 @@ yyreduce:
break
;
case
124
:
#line 127
8
"asn1p_y.y"
#line 127
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
2
)].
a_expr
);
(
yyval
.
a_expr
)
->
tag
=
(
yyvsp
[(
1
)
-
(
2
)].
a_tag
);
...
...
@@ -3417,7 +3416,7 @@ yyreduce:
break
;
case
125
:
#line 128
5
"asn1p_y.y"
#line 128
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_expr
);
/*
...
...
@@ -3441,7 +3440,7 @@ yyreduce:
break
;
case
126
:
#line 130
8
"asn1p_y.y"
#line 130
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_expr
);
/*
...
...
@@ -3465,7 +3464,7 @@ yyreduce:
break
;
case
127
:
#line 133
1
"asn1p_y.y"
#line 133
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
3
)].
a_expr
);
(
yyval
.
a_expr
)
->
tag
=
(
yyvsp
[(
1
)
-
(
3
)].
a_tag
);
...
...
@@ -3490,7 +3489,7 @@ yyreduce:
break
;
case
128
:
#line 135
5
"asn1p_y.y"
#line 135
4
"asn1p_y.y"
{
(
yyval
.
a_int
)
=
asn1p_as_pointer
?
EM_INDIRECT
:
0
;
asn1p_as_pointer
=
0
;
...
...
@@ -3498,7 +3497,7 @@ yyreduce:
break
;
case
129
:
#line 136
2
"asn1p_y.y"
#line 136
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
2
)].
a_expr
);
(
yyval
.
a_expr
)
->
marker
.
flags
|=
(
yyvsp
[(
1
)
-
(
2
)].
a_int
);
...
...
@@ -3518,7 +3517,7 @@ yyreduce:
break
;
case
133
:
#line 138
6
"asn1p_y.y"
#line 138
5
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
4
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
expr_type
==
A1TC_INVALID
);
...
...
@@ -3528,7 +3527,7 @@ yyreduce:
break
;
case
134
:
#line 139
2
"asn1p_y.y"
#line 139
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
4
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
expr_type
==
A1TC_INVALID
);
...
...
@@ -3538,7 +3537,7 @@ yyreduce:
break
;
case
135
:
#line 139
8
"asn1p_y.y"
#line 139
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
4
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
expr_type
==
A1TC_INVALID
);
...
...
@@ -3548,7 +3547,7 @@ yyreduce:
break
;
case
136
:
#line 140
4
"asn1p_y.y"
#line 140
3
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3562,7 +3561,7 @@ yyreduce:
break
;
case
137
:
#line 141
4
"asn1p_y.y"
#line 141
3
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3576,7 +3575,7 @@ yyreduce:
break
;
case
138
:
#line 142
4
"asn1p_y.y"
#line 142
3
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3586,7 +3585,7 @@ yyreduce:
break
;
case
139
:
#line 14
30
"asn1p_y.y"
#line 14
29
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_expr
)
=
NEW_EXPR
();
...
...
@@ -3602,7 +3601,7 @@ yyreduce:
break
;
case
140
:
#line 144
2
"asn1p_y.y"
#line 144
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3613,7 +3612,7 @@ yyreduce:
break
;
case
141
:
#line 145
7
"asn1p_y.y"
#line 145
6
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -3625,7 +3624,7 @@ yyreduce:
break
;
case
142
:
#line 146
5
"asn1p_y.y"
#line 146
4
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -3637,7 +3636,7 @@ yyreduce:
break
;
case
143
:
#line 147
3
"asn1p_y.y"
#line 147
2
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -3652,7 +3651,7 @@ yyreduce:
break
;
case
144
:
#line 148
4
"asn1p_y.y"
#line 148
3
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -3667,7 +3666,7 @@ yyreduce:
break
;
case
145
:
#line 149
5
"asn1p_y.y"
#line 149
4
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
(
yyvsp
[(
3
)
-
(
3
)].
a_ref
);
...
...
@@ -3690,7 +3689,7 @@ yyreduce:
break
;
case
146
:
#line 151
7
"asn1p_y.y"
#line 151
6
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
...
...
@@ -3702,7 +3701,7 @@ yyreduce:
break
;
case
147
:
#line 152
5
"asn1p_y.y"
#line 152
4
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_ref
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_ref
);
...
...
@@ -3713,7 +3712,7 @@ yyreduce:
break
;
case
149
:
#line 153
8
"asn1p_y.y"
#line 153
7
"asn1p_y.y"
{
(
yyval
.
a_refcomp
).
lex_type
=
RLT_AmpUppercase
;
(
yyval
.
a_refcomp
).
name
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -3721,7 +3720,7 @@ yyreduce:
break
;
case
150
:
#line 154
3
"asn1p_y.y"
#line 154
2
"asn1p_y.y"
{
(
yyval
.
a_refcomp
).
lex_type
=
RLT_Amplowercase
;
(
yyval
.
a_refcomp
).
name
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -3729,7 +3728,7 @@ yyreduce:
break
;
case
151
:
#line 155
2
"asn1p_y.y"
#line 155
1
"asn1p_y.y"
{
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
asn1p_ref_add_component
((
yyval
.
a_ref
),
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
),
RLT_AmpUppercase
);
...
...
@@ -3738,7 +3737,7 @@ yyreduce:
break
;
case
152
:
#line 155
7
"asn1p_y.y"
#line 155
6
"asn1p_y.y"
{
(
yyval
.
a_ref
)
=
(
yyval
.
a_ref
);
asn1p_ref_add_component
((
yyval
.
a_ref
),
(
yyvsp
[(
3
)
-
(
3
)].
tv_str
),
RLT_AmpUppercase
);
...
...
@@ -3747,7 +3746,7 @@ yyreduce:
break
;
case
153
:
#line 156
2
"asn1p_y.y"
#line 156
1
"asn1p_y.y"
{
(
yyval
.
a_ref
)
=
(
yyval
.
a_ref
);
asn1p_ref_add_component
((
yyval
.
a_ref
),
(
yyvsp
[(
3
)
-
(
3
)].
tv_str
),
RLT_Amplowercase
);
...
...
@@ -3756,7 +3755,7 @@ yyreduce:
break
;
case
154
:
#line 15
70
"asn1p_y.y"
#line 15
69
"asn1p_y.y"
{
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
asn1p_ref_add_component
((
yyval
.
a_ref
),
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
),
RLT_CAPITALS
);
...
...
@@ -3765,7 +3764,7 @@ yyreduce:
break
;
case
155
:
#line 159
3
"asn1p_y.y"
#line 159
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
2
)
-
(
4
)].
a_expr
);
assert
((
yyval
.
a_expr
)
->
Identifier
==
NULL
);
...
...
@@ -3776,12 +3775,12 @@ yyreduce:
break
;
case
158
:
#line 160
5
"asn1p_y.y"
#line 160
4
"asn1p_y.y"
{
asn1p_lexer_hack_push_opaque_state
();
}
break
;
case
159
:
#line 160
5
"asn1p_y.y"
#line 160
4
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_frombuf
((
yyvsp
[(
3
)
-
(
3
)].
tv_opaque
).
buf
,
(
yyvsp
[(
3
)
-
(
3
)].
tv_opaque
).
len
,
0
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -3790,7 +3789,7 @@ yyreduce:
break
;
case
160
:
#line 161
3
"asn1p_y.y"
#line 161
2
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
(
0
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -3799,7 +3798,7 @@ yyreduce:
break
;
case
161
:
#line 161
8
"asn1p_y.y"
#line 161
7
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
(
0
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -3808,7 +3807,7 @@ yyreduce:
break
;
case
162
:
#line 162
3
"asn1p_y.y"
#line 162
2
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
(
1
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -3817,7 +3816,7 @@ yyreduce:
break
;
case
168
:
#line 163
6
"asn1p_y.y"
#line 163
5
"asn1p_y.y"
{
asn1p_ref_t
*
ref
;
int
ret
;
...
...
@@ -3835,7 +3834,7 @@ yyreduce:
break
;
case
169
:
#line 165
4
"asn1p_y.y"
#line 165
3
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_frombuf
((
yyvsp
[(
1
)
-
(
1
)].
tv_opaque
).
buf
,
(
yyvsp
[(
1
)
-
(
1
)].
tv_opaque
).
len
,
0
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -3843,7 +3842,7 @@ yyreduce:
break
;
case
170
:
#line 165
8
"asn1p_y.y"
#line 165
7
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
((
yyvsp
[(
1
)
-
(
1
)].
a_int
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -3852,7 +3851,7 @@ yyreduce:
break
;
case
171
:
#line 166
3
"asn1p_y.y"
#line 166
2
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
((
yyvsp
[(
1
)
-
(
1
)].
a_int
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -3861,7 +3860,7 @@ yyreduce:
break
;
case
172
:
#line 167
1
"asn1p_y.y"
#line 167
0
"asn1p_y.y"
{
(
yyval
.
tv_opaque
).
len
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_opaque
).
len
+
1
;
(
yyval
.
tv_opaque
).
buf
=
malloc
(
1
+
(
yyval
.
tv_opaque
).
len
+
1
);
...
...
@@ -3874,7 +3873,7 @@ yyreduce:
break
;
case
173
:
#line 16
80
"asn1p_y.y"
#line 16
79
"asn1p_y.y"
{
int
newsize
=
(
yyvsp
[(
1
)
-
(
2
)].
tv_opaque
).
len
+
(
yyvsp
[(
2
)
-
(
2
)].
tv_opaque
).
len
;
char
*
p
=
malloc
(
newsize
+
1
);
...
...
@@ -3890,7 +3889,7 @@ yyreduce:
break
;
case
175
:
#line 169
6
"asn1p_y.y"
#line 169
5
"asn1p_y.y"
{
(
yyval
.
tv_opaque
).
len
=
strlen
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
));
(
yyval
.
tv_opaque
).
buf
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -3898,77 +3897,77 @@ yyreduce:
break
;
case
176
:
#line 170
2
"asn1p_y.y"
#line 170
1
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_BOOLEAN
;
}
break
;
case
177
:
#line 170
3
"asn1p_y.y"
#line 170
2
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_NULL
;
}
break
;
case
178
:
#line 170
4
"asn1p_y.y"
#line 170
3
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_REAL
;
}
break
;
case
179
:
#line 170
5
"asn1p_y.y"
#line 170
4
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_OCTET_STRING
;
}
break
;
case
180
:
#line 170
6
"asn1p_y.y"
#line 170
5
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_OBJECT_IDENTIFIER
;
}
break
;
case
181
:
#line 170
7
"asn1p_y.y"
#line 170
6
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_RELATIVE_OID
;
}
break
;
case
182
:
#line 170
8
"asn1p_y.y"
#line 170
7
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_EXTERNAL
;
}
break
;
case
183
:
#line 170
9
"asn1p_y.y"
#line 170
8
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_EMBEDDED_PDV
;
}
break
;
case
184
:
#line 17
10
"asn1p_y.y"
#line 17
09
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_CHARACTER_STRING
;
}
break
;
case
185
:
#line 171
1
"asn1p_y.y"
#line 171
0
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_UTCTime
;
}
break
;
case
186
:
#line 171
2
"asn1p_y.y"
#line 171
1
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_GeneralizedTime
;
}
break
;
case
189
:
#line 172
1
"asn1p_y.y"
#line 172
0
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_INTEGER
;
}
break
;
case
190
:
#line 172
2
"asn1p_y.y"
#line 172
1
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_ENUMERATED
;
}
break
;
case
191
:
#line 172
3
"asn1p_y.y"
#line 172
2
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_BASIC_BIT_STRING
;
}
break
;
case
192
:
#line 172
7
"asn1p_y.y"
#line 172
6
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -3978,7 +3977,7 @@ yyreduce:
break
;
case
193
:
#line 173
3
"asn1p_y.y"
#line 173
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
4
)].
a_expr
);
(
yyval
.
a_expr
)
->
expr_type
=
ASN_BASIC_INTEGER
;
...
...
@@ -3987,7 +3986,7 @@ yyreduce:
break
;
case
194
:
#line 173
8
"asn1p_y.y"
#line 173
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
4
)].
a_expr
);
(
yyval
.
a_expr
)
->
expr_type
=
ASN_BASIC_ENUMERATED
;
...
...
@@ -3996,7 +3995,7 @@ yyreduce:
break
;
case
195
:
#line 174
3
"asn1p_y.y"
#line 174
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
4
)
-
(
5
)].
a_expr
);
(
yyval
.
a_expr
)
->
expr_type
=
ASN_BASIC_BIT_STRING
;
...
...
@@ -4005,7 +4004,7 @@ yyreduce:
break
;
case
196
:
#line 174
8
"asn1p_y.y"
#line 174
7
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
3
)
-
(
4
)].
a_expr
);
(
yyval
.
a_expr
)
->
expr_type
=
ASN_BASIC_BIT_STRING
;
...
...
@@ -4014,7 +4013,7 @@ yyreduce:
break
;
case
197
:
#line 175
3
"asn1p_y.y"
#line 175
2
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4024,12 +4023,12 @@ yyreduce:
break
;
case
198
:
#line 176
2
"asn1p_y.y"
#line 176
1
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_BMPString
;
}
break
;
case
199
:
#line 176
3
"asn1p_y.y"
#line 176
2
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_GeneralString
;
fprintf
(
stderr
,
"WARNING: GeneralString is not fully supported
\n
"
);
...
...
@@ -4037,7 +4036,7 @@ yyreduce:
break
;
case
200
:
#line 176
7
"asn1p_y.y"
#line 176
6
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_GraphicString
;
fprintf
(
stderr
,
"WARNING: GraphicString is not fully supported
\n
"
);
...
...
@@ -4045,27 +4044,27 @@ yyreduce:
break
;
case
201
:
#line 177
1
"asn1p_y.y"
#line 177
0
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_IA5String
;
}
break
;
case
202
:
#line 177
2
"asn1p_y.y"
#line 177
1
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_ISO646String
;
}
break
;
case
203
:
#line 177
3
"asn1p_y.y"
#line 177
2
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_NumericString
;
}
break
;
case
204
:
#line 177
4
"asn1p_y.y"
#line 177
3
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_PrintableString
;
}
break
;
case
205
:
#line 177
5
"asn1p_y.y"
#line 177
4
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_T61String
;
fprintf
(
stderr
,
"WARNING: T61String is not fully supported
\n
"
);
...
...
@@ -4073,22 +4072,22 @@ yyreduce:
break
;
case
206
:
#line 177
9
"asn1p_y.y"
#line 177
8
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_TeletexString
;
}
break
;
case
207
:
#line 17
80
"asn1p_y.y"
#line 17
79
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_UniversalString
;
}
break
;
case
208
:
#line 178
1
"asn1p_y.y"
#line 178
0
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_UTF8String
;
}
break
;
case
209
:
#line 178
2
"asn1p_y.y"
#line 178
1
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_VideotexString
;
fprintf
(
stderr
,
"WARNING: VideotexString is not fully supported
\n
"
);
...
...
@@ -4096,39 +4095,39 @@ yyreduce:
break
;
case
210
:
#line 178
6
"asn1p_y.y"
#line 178
5
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_VisibleString
;
}
break
;
case
211
:
#line 178
7
"asn1p_y.y"
#line 178
6
"asn1p_y.y"
{
(
yyval
.
a_type
)
=
ASN_STRING_ObjectDescriptor
;
}
break
;
case
216
:
#line 179
9
"asn1p_y.y"
#line 179
8
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
0
;
}
break
;
case
218
:
#line 180
4
"asn1p_y.y"
#line 180
3
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
0
;
}
break
;
case
220
:
#line 180
9
"asn1p_y.y"
#line 180
8
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
0
;
}
break
;
case
223
:
#line 181
5
"asn1p_y.y"
#line 181
4
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_SET
,
(
yyvsp
[(
2
)
-
(
3
)].
a_constr
),
0
);
}
break
;
case
225
:
#line 182
2
"asn1p_y.y"
#line 182
1
"asn1p_y.y"
{
if
((
yyvsp
[(
2
)
-
(
2
)].
a_constr
)
->
type
==
ACT_CA_SET
&&
(
yyvsp
[(
2
)
-
(
2
)].
a_constr
)
->
el_count
==
1
)
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_SET
,
(
yyvsp
[(
1
)
-
(
2
)].
a_constr
),
(
yyvsp
[(
2
)
-
(
2
)].
a_constr
)
->
elements
[
0
]);
...
...
@@ -4139,7 +4138,7 @@ yyreduce:
break
;
case
229
:
#line 183
6
"asn1p_y.y"
#line 183
5
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
(
yyval
.
a_constr
)
->
type
=
ACT_EL_EXT
;
...
...
@@ -4147,7 +4146,7 @@ yyreduce:
break
;
case
231
:
#line 184
1
"asn1p_y.y"
#line 184
0
"asn1p_y.y"
{
asn1p_constraint_t
*
ct
;
ct
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
...
...
@@ -4157,7 +4156,7 @@ yyreduce:
break
;
case
232
:
#line 184
7
"asn1p_y.y"
#line 184
6
"asn1p_y.y"
{
asn1p_constraint_t
*
ct
;
ct
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
...
...
@@ -4169,35 +4168,35 @@ yyreduce:
break
;
case
234
:
#line 185
9
"asn1p_y.y"
#line 185
8
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_AEX
,
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
),
0
);
}
break
;
case
236
:
#line 186
6
"asn1p_y.y"
#line 186
5
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_UNI
,
(
yyvsp
[(
1
)
-
(
3
)].
a_constr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
));
}
break
;
case
238
:
#line 187
3
"asn1p_y.y"
#line 187
2
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_INT
,
(
yyvsp
[(
1
)
-
(
3
)].
a_constr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
));
}
break
;
case
240
:
#line 188
1
"asn1p_y.y"
#line 188
0
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_EXC
,
(
yyvsp
[(
1
)
-
(
3
)].
a_constr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
));
}
break
;
case
242
:
#line 188
8
"asn1p_y.y"
#line 188
7
"asn1p_y.y"
{
int
ret
;
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
...
...
@@ -4209,7 +4208,7 @@ yyreduce:
break
;
case
243
:
#line 189
9
"asn1p_y.y"
#line 189
8
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
checkmem
((
yyval
.
a_constr
));
...
...
@@ -4219,7 +4218,7 @@ yyreduce:
break
;
case
244
:
#line 190
5
"asn1p_y.y"
#line 190
4
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
checkmem
((
yyval
.
a_constr
));
...
...
@@ -4229,21 +4228,21 @@ yyreduce:
break
;
case
250
:
#line 192
1
"asn1p_y.y"
#line 192
0
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CT_FROM
,
(
yyvsp
[(
2
)
-
(
2
)].
a_constr
),
0
);
}
break
;
case
251
:
#line 192
6
"asn1p_y.y"
#line 192
5
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CT_SIZE
,
(
yyvsp
[(
2
)
-
(
2
)].
a_constr
),
0
);
}
break
;
case
252
:
#line 193
1
"asn1p_y.y"
#line 193
0
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
(
yyval
.
a_constr
)
->
type
=
ACT_CT_PATTERN
;
...
...
@@ -4252,7 +4251,7 @@ yyreduce:
break
;
case
253
:
#line 193
6
"asn1p_y.y"
#line 193
5
"asn1p_y.y"
{
asn1p_ref_t
*
ref
;
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
...
...
@@ -4265,7 +4264,7 @@ yyreduce:
break
;
case
254
:
#line 194
8
"asn1p_y.y"
#line 194
7
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
checkmem
((
yyval
.
a_constr
));
...
...
@@ -4276,7 +4275,7 @@ yyreduce:
break
;
case
256
:
#line 195
8
"asn1p_y.y"
#line 195
7
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
(
-
123
);
(
yyval
.
a_value
)
->
type
=
ATV_MIN
;
...
...
@@ -4284,7 +4283,7 @@ yyreduce:
break
;
case
258
:
#line 196
5
"asn1p_y.y"
#line 196
4
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
(
321
);
(
yyval
.
a_value
)
->
type
=
ATV_MAX
;
...
...
@@ -4292,7 +4291,7 @@ yyreduce:
break
;
case
260
:
#line 197
3
"asn1p_y.y"
#line 197
2
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
_convert_bitstring2binary
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
),
'B'
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -4301,7 +4300,7 @@ yyreduce:
break
;
case
261
:
#line 197
8
"asn1p_y.y"
#line 197
7
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
_convert_bitstring2binary
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
),
'H'
);
checkmem
((
yyval
.
a_value
));
...
...
@@ -4310,7 +4309,7 @@ yyreduce:
break
;
case
262
:
#line 198
6
"asn1p_y.y"
#line 198
5
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromtype
((
yyvsp
[(
2
)
-
(
2
)].
a_expr
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -4319,7 +4318,7 @@ yyreduce:
break
;
case
263
:
#line 199
2
"asn1p_y.y"
#line 199
1
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromtype
((
yyvsp
[(
1
)
-
(
1
)].
a_expr
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -4328,14 +4327,14 @@ yyreduce:
break
;
case
264
:
#line 200
4
"asn1p_y.y"
#line 200
3
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CT_WCOMP
,
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
),
0
);
}
break
;
case
265
:
#line 200
7
"asn1p_y.y"
#line 200
6
"asn1p_y.y"
{
assert
((
yyvsp
[(
3
)
-
(
3
)].
a_constr
)
->
type
==
ACT_CA_CSV
);
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
)
->
type
=
ACT_CT_WCOMPS
;
...
...
@@ -4344,12 +4343,12 @@ yyreduce:
break
;
case
269
:
#line 201
5
"asn1p_y.y"
#line 201
4
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
(
yyvsp
[(
2
)
-
(
3
)].
a_constr
);
}
break
;
case
270
:
#line 201
7
"asn1p_y.y"
#line 201
6
"asn1p_y.y"
{
assert
((
yyvsp
[(
4
)
-
(
5
)].
a_constr
)
->
type
==
ACT_CA_CSV
);
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
...
...
@@ -4365,7 +4364,7 @@ yyreduce:
break
;
case
271
:
#line 20
30
"asn1p_y.y"
#line 20
29
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
(
yyval
.
a_constr
)
->
type
=
ACT_CA_CSV
;
...
...
@@ -4374,7 +4373,7 @@ yyreduce:
break
;
case
272
:
#line 203
5
"asn1p_y.y"
#line 203
4
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_constr
);
asn1p_constraint_insert
((
yyval
.
a_constr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_constr
));
...
...
@@ -4382,7 +4381,7 @@ yyreduce:
break
;
case
273
:
#line 204
1
"asn1p_y.y"
#line 204
0
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
checkmem
((
yyval
.
a_constr
));
...
...
@@ -4394,43 +4393,43 @@ yyreduce:
break
;
case
274
:
#line 205
5
"asn1p_y.y"
#line 205
4
"asn1p_y.y"
{
(
yyval
.
a_pres
)
=
ACPRES_DEFAULT
;
}
break
;
case
275
:
#line 205
6
"asn1p_y.y"
#line 205
5
"asn1p_y.y"
{
(
yyval
.
a_pres
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_pres
);
}
break
;
case
276
:
#line 20
60
"asn1p_y.y"
#line 20
59
"asn1p_y.y"
{
(
yyval
.
a_pres
)
=
ACPRES_PRESENT
;
}
break
;
case
277
:
#line 206
3
"asn1p_y.y"
#line 206
2
"asn1p_y.y"
{
(
yyval
.
a_pres
)
=
ACPRES_ABSENT
;
}
break
;
case
278
:
#line 206
6
"asn1p_y.y"
#line 206
5
"asn1p_y.y"
{
(
yyval
.
a_pres
)
=
ACPRES_OPTIONAL
;
}
break
;
case
282
:
#line 208
1
"asn1p_y.y"
#line 208
0
"asn1p_y.y"
{
asn1p_lexer_hack_push_opaque_state
();
}
break
;
case
283
:
#line 208
1
"asn1p_y.y"
#line 208
0
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
checkmem
((
yyval
.
a_constr
));
...
...
@@ -4442,7 +4441,7 @@ yyreduce:
break
;
case
284
:
#line 209
2
"asn1p_y.y"
#line 209
1
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
(
yyval
.
a_constr
)
->
type
=
ACT_CT_CTNG
;
...
...
@@ -4452,41 +4451,41 @@ yyreduce:
break
;
case
285
:
#line 210
1
"asn1p_y.y"
#line 210
0
"asn1p_y.y"
{
(
yyval
.
a_ctype
)
=
ACT_EL_RANGE
;
}
break
;
case
286
:
#line 210
2
"asn1p_y.y"
#line 210
1
"asn1p_y.y"
{
(
yyval
.
a_ctype
)
=
ACT_EL_RLRANGE
;
}
break
;
case
287
:
#line 210
3
"asn1p_y.y"
#line 210
2
"asn1p_y.y"
{
(
yyval
.
a_ctype
)
=
ACT_EL_LLRANGE
;
}
break
;
case
288
:
#line 210
4
"asn1p_y.y"
#line 210
3
"asn1p_y.y"
{
(
yyval
.
a_ctype
)
=
ACT_EL_ULRANGE
;
}
break
;
case
289
:
#line 210
7
"asn1p_y.y"
#line 210
6
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_constr
);
}
break
;
case
290
:
#line 21
10
"asn1p_y.y"
#line 21
09
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_constr
);
}
break
;
case
291
:
#line 211
9
"asn1p_y.y"
#line 211
8
"asn1p_y.y"
{
asn1p_ref_t
*
ref
=
asn1p_ref_new
(
yylineno
,
currentModule
);
asn1p_constraint_t
*
ct
;
...
...
@@ -4503,14 +4502,14 @@ yyreduce:
break
;
case
292
:
#line 213
5
"asn1p_y.y"
#line 213
4
"asn1p_y.y"
{
CONSTRAINT_INSERT
((
yyval
.
a_constr
),
ACT_CA_CRC
,
(
yyvsp
[(
1
)
-
(
4
)].
a_constr
),
(
yyvsp
[(
3
)
-
(
4
)].
a_constr
));
}
break
;
case
293
:
#line 214
1
"asn1p_y.y"
#line 214
0
"asn1p_y.y"
{
(
yyval
.
a_constr
)
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
checkmem
((
yyval
.
a_constr
));
...
...
@@ -4520,7 +4519,7 @@ yyreduce:
break
;
case
294
:
#line 214
7
"asn1p_y.y"
#line 214
6
"asn1p_y.y"
{
asn1p_constraint_t
*
ct
;
ct
=
asn1p_constraint_new
(
yylineno
,
currentModule
);
...
...
@@ -4532,7 +4531,7 @@ yyreduce:
break
;
case
295
:
#line 216
1
"asn1p_y.y"
#line 216
0
"asn1p_y.y"
{
char
*
p
=
malloc
(
strlen
((
yyvsp
[(
2
)
-
(
2
)].
tv_str
))
+
2
);
int
ret
;
...
...
@@ -4547,7 +4546,7 @@ yyreduce:
break
;
case
296
:
#line 217
2
"asn1p_y.y"
#line 217
1
"asn1p_y.y"
{
char
*
p
=
malloc
(
strlen
((
yyvsp
[(
3
)
-
(
3
)].
tv_str
))
+
3
);
int
ret
;
...
...
@@ -4563,14 +4562,14 @@ yyreduce:
break
;
case
297
:
#line 218
8
"asn1p_y.y"
#line 218
7
"asn1p_y.y"
{
(
yyval
.
tv_str
)
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
}
break
;
case
298
:
#line 219
1
"asn1p_y.y"
#line 219
0
"asn1p_y.y"
{
int
l1
=
strlen
((
yyvsp
[(
1
)
-
(
3
)].
tv_str
));
int
l3
=
strlen
((
yyvsp
[(
3
)
-
(
3
)].
tv_str
));
...
...
@@ -4585,7 +4584,7 @@ yyreduce:
break
;
case
299
:
#line 221
1
"asn1p_y.y"
#line 221
0
"asn1p_y.y"
{
(
yyval
.
a_marker
).
flags
=
EM_NOMARK
;
(
yyval
.
a_marker
).
default_value
=
0
;
...
...
@@ -4593,12 +4592,12 @@ yyreduce:
break
;
case
300
:
#line 221
5
"asn1p_y.y"
#line 221
4
"asn1p_y.y"
{
(
yyval
.
a_marker
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_marker
);
}
break
;
case
301
:
#line 221
9
"asn1p_y.y"
#line 221
8
"asn1p_y.y"
{
(
yyval
.
a_marker
).
flags
=
EM_OPTIONAL
|
EM_INDIRECT
;
(
yyval
.
a_marker
).
default_value
=
0
;
...
...
@@ -4606,7 +4605,7 @@ yyreduce:
break
;
case
302
:
#line 222
3
"asn1p_y.y"
#line 222
2
"asn1p_y.y"
{
(
yyval
.
a_marker
).
flags
=
EM_DEFAULT
;
(
yyval
.
a_marker
).
default_value
=
(
yyvsp
[(
2
)
-
(
2
)].
a_value
);
...
...
@@ -4614,7 +4613,7 @@ yyreduce:
break
;
case
303
:
#line 22
30
"asn1p_y.y"
#line 22
29
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4623,7 +4622,7 @@ yyreduce:
break
;
case
304
:
#line 223
5
"asn1p_y.y"
#line 223
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -4631,7 +4630,7 @@ yyreduce:
break
;
case
305
:
#line 224
1
"asn1p_y.y"
#line 224
0
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4642,7 +4641,7 @@ yyreduce:
break
;
case
306
:
#line 22
50
"asn1p_y.y"
#line 22
49
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4651,7 +4650,7 @@ yyreduce:
break
;
case
307
:
#line 225
5
"asn1p_y.y"
#line 225
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -4659,7 +4658,7 @@ yyreduce:
break
;
case
308
:
#line 226
2
"asn1p_y.y"
#line 226
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4671,7 +4670,7 @@ yyreduce:
break
;
case
309
:
#line 22
70
"asn1p_y.y"
#line 22
69
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4683,7 +4682,7 @@ yyreduce:
break
;
case
310
:
#line 22
80
"asn1p_y.y"
#line 22
79
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4692,7 +4691,7 @@ yyreduce:
break
;
case
311
:
#line 228
5
"asn1p_y.y"
#line 228
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -4700,7 +4699,7 @@ yyreduce:
break
;
case
312
:
#line 229
2
"asn1p_y.y"
#line 229
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4712,7 +4711,7 @@ yyreduce:
break
;
case
313
:
#line 2
300
"asn1p_y.y"
#line 2
299
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4724,7 +4723,7 @@ yyreduce:
break
;
case
314
:
#line 23
10
"asn1p_y.y"
#line 23
09
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_expr
);
asn1p_expr_t
*
first_memb
=
TQ_FIRST
(
&
((
yyval
.
a_expr
)
->
members
));
...
...
@@ -4741,7 +4740,7 @@ yyreduce:
break
;
case
315
:
#line 232
5
"asn1p_y.y"
#line 232
4
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4750,7 +4749,7 @@ yyreduce:
break
;
case
316
:
#line 23
30
"asn1p_y.y"
#line 23
29
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
(
yyvsp
[(
1
)
-
(
3
)].
a_expr
);
asn1p_expr_add
((
yyval
.
a_expr
),
(
yyvsp
[(
3
)
-
(
3
)].
a_expr
));
...
...
@@ -4758,7 +4757,7 @@ yyreduce:
break
;
case
317
:
#line 233
7
"asn1p_y.y"
#line 233
6
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4769,7 +4768,7 @@ yyreduce:
break
;
case
318
:
#line 234
4
"asn1p_y.y"
#line 234
3
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4781,7 +4780,7 @@ yyreduce:
break
;
case
319
:
#line 235
2
"asn1p_y.y"
#line 235
1
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4793,7 +4792,7 @@ yyreduce:
break
;
case
320
:
#line 23
60
"asn1p_y.y"
#line 23
59
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4804,7 +4803,7 @@ yyreduce:
break
;
case
321
:
#line 236
7
"asn1p_y.y"
#line 236
6
"asn1p_y.y"
{
(
yyval
.
a_expr
)
=
NEW_EXPR
();
checkmem
((
yyval
.
a_expr
));
...
...
@@ -4816,7 +4815,7 @@ yyreduce:
break
;
case
322
:
#line 237
8
"asn1p_y.y"
#line 237
7
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
((
yyvsp
[(
1
)
-
(
1
)].
a_int
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -4824,7 +4823,7 @@ yyreduce:
break
;
case
323
:
#line 238
2
"asn1p_y.y"
#line 238
1
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromint
((
yyvsp
[(
1
)
-
(
1
)].
a_int
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -4832,7 +4831,7 @@ yyreduce:
break
;
case
324
:
#line 238
9
"asn1p_y.y"
#line 238
8
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromdouble
((
yyvsp
[(
1
)
-
(
1
)].
a_dbl
));
checkmem
((
yyval
.
a_value
));
...
...
@@ -4840,17 +4839,17 @@ yyreduce:
break
;
case
325
:
#line 24
20
"asn1p_y.y"
#line 24
19
"asn1p_y.y"
{
memset
(
&
(
yyval
.
a_tag
),
0
,
sizeof
((
yyval
.
a_tag
)));
}
break
;
case
326
:
#line 242
1
"asn1p_y.y"
#line 242
0
"asn1p_y.y"
{
(
yyval
.
a_tag
)
=
(
yyvsp
[(
1
)
-
(
1
)].
a_tag
);
}
break
;
case
327
:
#line 242
5
"asn1p_y.y"
#line 242
4
"asn1p_y.y"
{
(
yyval
.
a_tag
)
=
(
yyvsp
[(
1
)
-
(
2
)].
a_tag
);
(
yyval
.
a_tag
).
tag_mode
=
(
yyvsp
[(
2
)
-
(
2
)].
a_tag
).
tag_mode
;
...
...
@@ -4858,7 +4857,7 @@ yyreduce:
break
;
case
328
:
#line 243
2
"asn1p_y.y"
#line 243
1
"asn1p_y.y"
{
(
yyval
.
a_tag
)
=
(
yyvsp
[(
2
)
-
(
4
)].
a_tag
);
(
yyval
.
a_tag
).
tag_value
=
(
yyvsp
[(
3
)
-
(
4
)].
a_int
);
...
...
@@ -4866,42 +4865,42 @@ yyreduce:
break
;
case
329
:
#line 243
8
"asn1p_y.y"
#line 243
7
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_class
=
TC_CONTEXT_SPECIFIC
;
}
break
;
case
330
:
#line 243
9
"asn1p_y.y"
#line 243
8
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_class
=
TC_UNIVERSAL
;
}
break
;
case
331
:
#line 24
40
"asn1p_y.y"
#line 24
39
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_class
=
TC_APPLICATION
;
}
break
;
case
332
:
#line 244
1
"asn1p_y.y"
#line 244
0
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_class
=
TC_PRIVATE
;
}
break
;
case
333
:
#line 244
5
"asn1p_y.y"
#line 244
4
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_mode
=
TM_DEFAULT
;
}
break
;
case
334
:
#line 244
6
"asn1p_y.y"
#line 244
5
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_mode
=
TM_IMPLICIT
;
}
break
;
case
335
:
#line 244
7
"asn1p_y.y"
#line 244
6
"asn1p_y.y"
{
(
yyval
.
a_tag
).
tag_mode
=
TM_EXPLICIT
;
}
break
;
case
336
:
#line 245
1
"asn1p_y.y"
#line 245
0
"asn1p_y.y"
{
checkmem
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
));
(
yyval
.
tv_str
)
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -4909,7 +4908,7 @@ yyreduce:
break
;
case
337
:
#line 245
5
"asn1p_y.y"
#line 245
4
"asn1p_y.y"
{
checkmem
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
));
(
yyval
.
tv_str
)
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -4917,19 +4916,19 @@ yyreduce:
break
;
case
338
:
#line 246
3
"asn1p_y.y"
#line 246
2
"asn1p_y.y"
{
(
yyval
.
tv_str
)
=
0
;
}
break
;
case
339
:
#line 246
4
"asn1p_y.y"
#line 246
3
"asn1p_y.y"
{
(
yyval
.
tv_str
)
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
}
break
;
case
340
:
#line 24
70
"asn1p_y.y"
#line 24
69
"asn1p_y.y"
{
checkmem
((
yyvsp
[(
1
)
-
(
1
)].
tv_str
));
(
yyval
.
tv_str
)
=
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
);
...
...
@@ -4937,7 +4936,7 @@ yyreduce:
break
;
case
341
:
#line 247
7
"asn1p_y.y"
#line 247
6
"asn1p_y.y"
{
(
yyval
.
a_ref
)
=
asn1p_ref_new
(
yylineno
,
currentModule
);
asn1p_ref_add_component
((
yyval
.
a_ref
),
(
yyvsp
[(
1
)
-
(
1
)].
tv_str
),
RLT_lowercase
);
...
...
@@ -4946,7 +4945,7 @@ yyreduce:
break
;
case
342
:
#line 248
4
"asn1p_y.y"
#line 248
3
"asn1p_y.y"
{
(
yyval
.
a_value
)
=
asn1p_value_fromref
((
yyvsp
[(
1
)
-
(
1
)].
a_ref
),
0
);
}
...
...
@@ -4954,7 +4953,7 @@ yyreduce:
/* Line 1267 of yacc.c. */
#line 495
8
"asn1p_y.c"
#line 495
7
"asn1p_y.c"
default:
break
;
}
YY_SYMBOL_PRINT
(
"-> $$ ="
,
yyr1
[
yyn
],
&
yyval
,
&
yyloc
);
...
...
@@ -5168,7 +5167,7 @@ yyreturn:
}
#line 248
8
"asn1p_y.y"
#line 248
7
"asn1p_y.y"
...
...
libasn1parser/asn1p_y.h
View file @
1a49ced9
...
...
@@ -262,7 +262,7 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef
union
YYSTYPE
#line 11
6
"asn1p_y.y"
#line 11
5
"asn1p_y.y"
{
asn1p_t
*
a_grammar
;
asn1p_module_flags_e
a_module_flags
;
...
...
libasn1parser/asn1p_y.y
View file @
1a49ced9
...
...
@@ -95,15 +95,14 @@ static asn1p_module_t *currentModule;
#ifdef AL_IMPORT
#error AL_IMPORT DEFINED ELSEWHERE!
#endif
#define AL_IMPORT(to,where,from,field) do { \
if(!(from)) break; \
while(TQ_FIRST(&((from)->where))) { \
TQ_ADD(&((to)->where), \
TQ_REMOVE(&((from)->where), field), \
field); \
} \
assert(TQ_FIRST(&((from)->where)) == 0); \
} while(0)
#define AL_IMPORT(to, where, from, field) \
do { \
if(!(from)) break; \
while(TQ_FIRST(&((from)->where))) { \
TQ_ADD(&((to)->where), TQ_REMOVE(&((from)->where), field), field); \
} \
assert(TQ_FIRST(&((from)->where)) == 0); \
} while(0)
%}
...
...
@@ -589,7 +588,7 @@ ModuleBody:
$$ = asn1p_module_new();
AL_IMPORT($$, exports, $1, xp_next);
AL_IMPORT($$, imports, $2, xp_next);
AL_IMPORT($$, members, $3, next
);
asn1p_module_move_members($$, $3
);
asn1p_module_free($1);
asn1p_module_free($2);
...
...
@@ -608,7 +607,7 @@ AssignmentList:
$$ = $2;
break;
}
AL_IMPORT($$, members, $2, next
);
asn1p_module_move_members($$, $2
);
asn1p_module_free($2);
}
;
...
...
@@ -623,14 +622,14 @@ Assignment:
checkmem($$);
assert($1->expr_type != A1TC_INVALID);
assert($1->meta_type != AMT_INVALID);
TQ_ADD(&($$->members), $1, next
);
asn1p_module_member_add($$, $1
);
}
| ValueAssignment {
$$ = asn1p_module_new();
checkmem($$);
assert($1->expr_type != A1TC_INVALID);
assert($1->meta_type != AMT_INVALID);
TQ_ADD(&($$->members), $1, next
);
asn1p_module_member_add($$, $1
);
}
/*
* Value set definition
...
...
@@ -644,7 +643,7 @@ Assignment:
checkmem($$);
assert($1->expr_type != A1TC_INVALID);
assert($1->meta_type != AMT_INVALID);
TQ_ADD(&($$->members), $1, next
);
asn1p_module_member_add($$, $1
);
}
| TOK_ENCODING_CONTROL TOK_capitalreference
{ asn1p_lexer_hack_push_encoding_control(); }
...
...
@@ -728,11 +727,11 @@ ImportsList:
ImportsElement {
$$ = asn1p_xports_new();
checkmem($$);
TQ_ADD(&($$->members), $1, next);
TQ_ADD(&($$->
xp_
members), $1, next);
}
| ImportsList ',' ImportsElement {
$$ = $1;
TQ_ADD(&($$->members), $3, next);
TQ_ADD(&($$->
xp_
members), $3, next);
}
;
...
...
@@ -789,11 +788,11 @@ ExportsBody:
ExportsElement {
$$ = asn1p_xports_new();
assert($$);
TQ_ADD(&($$->members), $1, next);
TQ_ADD(&($$->
xp_
members), $1, next);
}
| ExportsBody ',' ExportsElement {
$$ = $1;
TQ_ADD(&($$->members), $3, next);
TQ_ADD(&($$->
xp_
members), $3, next);
}
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment