extern int YYPARSE_DECL();
-#line 39 ""
#include <config.h>
#define YYMALLOC malloc
#define YYFREE free
-#line 71 ""
typedef union {
int constant;
struct value *value;
struct memhead *members;
struct constraint_spec *constraint_spec;
} YYSTYPE;
-#line 80 ""
#define kw_ABSENT 257
#define kw_ABSTRACT_SYNTAX 258
#define kw_ALL 259
/* variables for the parser stack */
static YYSTACKDATA yystack;
-#line 945 ""
void
yyerror (const char *s)
fix_labels2(s->type, p);
free(p);
}
-#line 709 ""
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(YYSTACKDATA *data)
{
switch (yyn)
{
case 1:
-#line 241 ""
{
checkundefined();
}
break;
case 3:
-#line 248 ""
{ lex_error_message("implicit tagging is not supported"); }
break;
case 4:
-#line 250 ""
{ lex_error_message("automatic tagging is not supported"); }
break;
case 6:
-#line 255 ""
{ lex_error_message("no extensibility options supported"); }
break;
case 16:
-#line 276 ""
{
struct string_list *sl;
for(sl = yystack.l_mark[-3].sl; sl != NULL; sl = sl->next) {
}
break;
case 17:
-#line 288 ""
{
struct string_list *sl;
for(sl = yystack.l_mark[-1].sl; sl != NULL; sl = sl->next)
}
break;
case 24:
-#line 306 ""
{
yyval.sl = emalloc(sizeof(*yyval.sl));
yyval.sl->string = yystack.l_mark[-2].name;
}
break;
case 25:
-#line 312 ""
{
yyval.sl = emalloc(sizeof(*yyval.sl));
yyval.sl->string = yystack.l_mark[0].name;
}
break;
case 26:
-#line 320 ""
{
Symbol *s = addsym (yystack.l_mark[-2].name);
s->stype = Stype;
}
break;
case 44:
-#line 351 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_Boolean,
TE_EXPLICIT, new_type(TBoolean));
}
break;
case 45:
-#line 358 ""
{
if(yystack.l_mark[-3].value->type != integervalue)
lex_error_message("Non-integer used in first part of range");
}
break;
case 46:
-#line 368 ""
- {
+ {
if(yystack.l_mark[-3].value->type != integervalue)
lex_error_message("Non-integer in first part of range");
yyval.range = ecalloc(1, sizeof(*yyval.range));
}
break;
case 47:
-#line 376 ""
- {
+ {
if(yystack.l_mark[-1].value->type != integervalue)
lex_error_message("Non-integer in second part of range");
yyval.range = ecalloc(1, sizeof(*yyval.range));
}
break;
case 48:
-#line 384 ""
{
if(yystack.l_mark[-1].value->type != integervalue)
lex_error_message("Non-integer used in limit");
}
break;
case 49:
-#line 395 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_Integer,
TE_EXPLICIT, new_type(TInteger));
}
break;
case 50:
-#line 400 ""
{
yyval.type = new_type(TInteger);
yyval.type->range = yystack.l_mark[0].range;
}
break;
case 51:
-#line 406 ""
{
yyval.type = new_type(TInteger);
yyval.type->members = yystack.l_mark[-1].members;
}
break;
case 52:
-#line 414 ""
{
yyval.members = emalloc(sizeof(*yyval.members));
ASN1_TAILQ_INIT(yyval.members);
}
break;
case 53:
-#line 420 ""
{
ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, yystack.l_mark[0].member, members);
yyval.members = yystack.l_mark[-2].members;
}
break;
case 54:
-#line 425 ""
{ yyval.members = yystack.l_mark[-2].members; }
break;
case 55:
-#line 429 ""
{
yyval.member = emalloc(sizeof(*yyval.member));
yyval.member->name = yystack.l_mark[-3].name;
}
break;
case 56:
-#line 442 ""
{
yyval.type = new_type(TInteger);
yyval.type->members = yystack.l_mark[-1].members;
}
break;
case 58:
-#line 453 ""
{
yyval.type = new_type(TBitString);
yyval.type->members = emalloc(sizeof(*yyval.type->members));
}
break;
case 59:
-#line 460 ""
{
yyval.type = new_type(TBitString);
yyval.type->members = yystack.l_mark[-1].members;
}
break;
case 60:
-#line 468 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_OID,
TE_EXPLICIT, new_type(TOID));
}
break;
case 61:
-#line 474 ""
{
Type *t = new_type(TOctetString);
t->range = yystack.l_mark[0].range;
}
break;
case 62:
-#line 483 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_Null,
TE_EXPLICIT, new_type(TNull));
}
break;
case 63:
-#line 490 ""
{ yyval.range = NULL; }
break;
case 64:
-#line 492 ""
{ yyval.range = yystack.l_mark[0].range; }
break;
case 65:
-#line 497 ""
{
yyval.type = new_type(TSequence);
yyval.type->members = yystack.l_mark[-1].members;
}
break;
case 66:
-#line 503 ""
{
yyval.type = new_type(TSequence);
yyval.type->members = NULL;
}
break;
case 67:
-#line 511 ""
{
yyval.type = new_type(TSequenceOf);
yyval.type->range = yystack.l_mark[-2].range;
}
break;
case 68:
-#line 520 ""
{
yyval.type = new_type(TSet);
yyval.type->members = yystack.l_mark[-1].members;
}
break;
case 69:
-#line 526 ""
{
yyval.type = new_type(TSet);
yyval.type->members = NULL;
}
break;
case 70:
-#line 534 ""
{
yyval.type = new_type(TSetOf);
yyval.type->subtype = yystack.l_mark[0].type;
}
break;
case 71:
-#line 542 ""
{
yyval.type = new_type(TChoice);
yyval.type->members = yystack.l_mark[-1].members;
}
break;
case 74:
-#line 553 ""
{
Symbol *s = addsym(yystack.l_mark[0].name);
yyval.type = new_type(TType);
}
break;
case 75:
-#line 564 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_GeneralizedTime,
TE_EXPLICIT, new_type(TGeneralizedTime));
}
break;
case 76:
-#line 569 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_UTCTime,
TE_EXPLICIT, new_type(TUTCTime));
}
break;
case 77:
-#line 576 ""
{
/* if (Constraint.type == contentConstrant) {
assert(Constraint.u.constraint.type == octetstring|bitstring-w/o-NamedBitList); // remember to check type reference too
}
break;
case 78:
-#line 592 ""
{
yyval.constraint_spec = yystack.l_mark[-1].constraint_spec;
}
break;
case 82:
-#line 605 ""
{
yyval.constraint_spec = new_constraint_spec(CT_CONTENTS);
yyval.constraint_spec->u.content.type = yystack.l_mark[0].type;
}
break;
case 83:
-#line 611 ""
{
if (yystack.l_mark[0].value->type != objectidentifiervalue)
lex_error_message("Non-OID used in ENCODED BY constraint");
}
break;
case 84:
-#line 619 ""
{
if (yystack.l_mark[0].value->type != objectidentifiervalue)
lex_error_message("Non-OID used in ENCODED BY constraint");
}
break;
case 85:
-#line 629 ""
{
yyval.constraint_spec = new_constraint_spec(CT_USER);
}
break;
case 86:
-#line 635 ""
{
yyval.type = new_type(TTag);
yyval.type->tag = yystack.l_mark[-2].tag;
}
break;
case 87:
-#line 648 ""
{
yyval.tag.tagclass = yystack.l_mark[-2].constant;
yyval.tag.tagvalue = yystack.l_mark[-1].constant;
}
break;
case 88:
-#line 656 ""
{
yyval.constant = ASN1_C_CONTEXT;
}
break;
case 89:
-#line 660 ""
{
yyval.constant = ASN1_C_UNIV;
}
break;
case 90:
-#line 664 ""
{
yyval.constant = ASN1_C_APPL;
}
break;
case 91:
-#line 668 ""
{
yyval.constant = ASN1_C_PRIVATE;
}
break;
case 92:
-#line 674 ""
{
yyval.constant = TE_EXPLICIT;
}
break;
case 93:
-#line 678 ""
{
yyval.constant = TE_EXPLICIT;
}
break;
case 94:
-#line 682 ""
{
yyval.constant = TE_IMPLICIT;
}
break;
case 95:
-#line 689 ""
{
Symbol *s;
s = addsym (yystack.l_mark[-3].name);
}
break;
case 97:
-#line 703 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_GeneralString,
TE_EXPLICIT, new_type(TGeneralString));
}
break;
case 98:
-#line 708 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_TeletexString,
TE_EXPLICIT, new_type(TTeletexString));
}
break;
case 99:
-#line 713 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_UTF8String,
TE_EXPLICIT, new_type(TUTF8String));
}
break;
case 100:
-#line 718 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_PrintableString,
TE_EXPLICIT, new_type(TPrintableString));
}
break;
case 101:
-#line 723 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_VisibleString,
TE_EXPLICIT, new_type(TVisibleString));
}
break;
case 102:
-#line 728 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_IA5String,
TE_EXPLICIT, new_type(TIA5String));
}
break;
case 103:
-#line 733 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_BMPString,
TE_EXPLICIT, new_type(TBMPString));
}
break;
case 104:
-#line 738 ""
{
yyval.type = new_tag(ASN1_C_UNIV, UT_UniversalString,
TE_EXPLICIT, new_type(TUniversalString));
}
break;
case 105:
-#line 746 ""
{
yyval.members = emalloc(sizeof(*yyval.members));
ASN1_TAILQ_INIT(yyval.members);
}
break;
case 106:
-#line 752 ""
{
ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, yystack.l_mark[0].member, members);
yyval.members = yystack.l_mark[-2].members;
}
break;
case 107:
-#line 757 ""
{
struct member *m = ecalloc(1, sizeof(*m));
m->name = estrdup("...");
}
break;
case 108:
-#line 768 ""
{
yyval.member = emalloc(sizeof(*yyval.member));
yyval.member->name = yystack.l_mark[-1].name;
}
break;
case 109:
-#line 779 ""
{
yyval.member = yystack.l_mark[0].member;
yyval.member->optional = 0;
}
break;
case 110:
-#line 785 ""
{
yyval.member = yystack.l_mark[-1].member;
yyval.member->optional = 1;
}
break;
case 111:
-#line 791 ""
{
yyval.member = yystack.l_mark[-2].member;
yyval.member->optional = 0;
}
break;
case 112:
-#line 799 ""
{
yyval.members = emalloc(sizeof(*yyval.members));
ASN1_TAILQ_INIT(yyval.members);
}
break;
case 113:
-#line 805 ""
{
ASN1_TAILQ_INSERT_TAIL(yystack.l_mark[-2].members, yystack.l_mark[0].member, members);
yyval.members = yystack.l_mark[-2].members;
}
break;
case 114:
-#line 812 ""
{
yyval.member = emalloc(sizeof(*yyval.member));
yyval.member->name = yystack.l_mark[-3].name;
}
break;
case 116:
-#line 825 ""
{ yyval.objid = NULL; }
break;
case 117:
-#line 829 ""
{
yyval.objid = yystack.l_mark[-1].objid;
}
break;
case 118:
-#line 835 ""
{
yyval.objid = NULL;
}
break;
case 119:
-#line 839 ""
{
if (yystack.l_mark[0].objid) {
yyval.objid = yystack.l_mark[0].objid;
}
break;
case 120:
-#line 850 ""
{
yyval.objid = new_objid(yystack.l_mark[-3].name, yystack.l_mark[-1].constant);
}
break;
case 121:
-#line 854 ""
{
Symbol *s = addsym(yystack.l_mark[0].name);
if(s->stype != SValue ||
}
break;
case 122:
-#line 865 ""
{
yyval.objid = new_objid(NULL, yystack.l_mark[0].constant);
}
break;
case 132:
-#line 888 ""
{
Symbol *s = addsym(yystack.l_mark[0].name);
if(s->stype != SValue)
}
break;
case 133:
-#line 899 ""
{
yyval.value = emalloc(sizeof(*yyval.value));
yyval.value->type = stringvalue;
}
break;
case 134:
-#line 907 ""
{
yyval.value = emalloc(sizeof(*yyval.value));
yyval.value->type = booleanvalue;
}
break;
case 135:
-#line 913 ""
{
yyval.value = emalloc(sizeof(*yyval.value));
yyval.value->type = booleanvalue;
}
break;
case 136:
-#line 921 ""
{
yyval.value = emalloc(sizeof(*yyval.value));
yyval.value->type = integervalue;
}
break;
case 138:
-#line 932 ""
{
}
break;
case 139:
-#line 937 ""
{
yyval.value = emalloc(sizeof(*yyval.value));
yyval.value->type = objectidentifiervalue;
yyval.value->u.objectidentifiervalue = yystack.l_mark[0].objid;
}
break;
-#line 1598 ""
}
yystack.s_mark -= yym;
yystate = *yystack.s_mark;
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "lex.l"
-#line 2 "lex.l"
/*
* Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
static void unterminated(const char *, unsigned);
/* This is for broken old lexes (solaris 10 and hpux) */
-#line 851 ""
#define INITIAL 0
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 68 "lex.l"
-
-#line 1035 ""
-
if ( !(yy_init) )
{
(yy_init) = 1;
case 1:
YY_RULE_SETUP
-#line 69 "lex.l"
{ return kw_ABSENT; }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 70 "lex.l"
{ return kw_ABSTRACT_SYNTAX; }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 71 "lex.l"
{ return kw_ALL; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 72 "lex.l"
{ return kw_APPLICATION; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 73 "lex.l"
{ return kw_AUTOMATIC; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 74 "lex.l"
{ return kw_BEGIN; }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 75 "lex.l"
{ return kw_BIT; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 76 "lex.l"
{ return kw_BMPString; }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 77 "lex.l"
{ return kw_BOOLEAN; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 78 "lex.l"
{ return kw_BY; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 79 "lex.l"
{ return kw_CHARACTER; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 80 "lex.l"
{ return kw_CHOICE; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 81 "lex.l"
{ return kw_CLASS; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 82 "lex.l"
{ return kw_COMPONENT; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 83 "lex.l"
{ return kw_COMPONENTS; }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 84 "lex.l"
{ return kw_CONSTRAINED; }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 85 "lex.l"
{ return kw_CONTAINING; }
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 86 "lex.l"
{ return kw_DEFAULT; }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 87 "lex.l"
{ return kw_DEFINITIONS; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 88 "lex.l"
{ return kw_EMBEDDED; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 89 "lex.l"
{ return kw_ENCODED; }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 90 "lex.l"
{ return kw_END; }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 91 "lex.l"
{ return kw_ENUMERATED; }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 92 "lex.l"
{ return kw_EXCEPT; }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 93 "lex.l"
{ return kw_EXPLICIT; }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 94 "lex.l"
{ return kw_EXPORTS; }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 95 "lex.l"
{ return kw_EXTENSIBILITY; }
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 96 "lex.l"
{ return kw_EXTERNAL; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 97 "lex.l"
{ return kw_FALSE; }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 98 "lex.l"
{ return kw_FROM; }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 99 "lex.l"
{ return kw_GeneralString; }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 100 "lex.l"
{ return kw_GeneralizedTime; }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 101 "lex.l"
{ return kw_GraphicString; }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 102 "lex.l"
{ return kw_IA5String; }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 103 "lex.l"
{ return kw_IDENTIFIER; }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 104 "lex.l"
{ return kw_IMPLICIT; }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 105 "lex.l"
{ return kw_IMPLIED; }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 106 "lex.l"
{ return kw_IMPORTS; }
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 107 "lex.l"
{ return kw_INCLUDES; }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 108 "lex.l"
{ return kw_INSTANCE; }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 109 "lex.l"
{ return kw_INTEGER; }
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 110 "lex.l"
{ return kw_INTERSECTION; }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 111 "lex.l"
{ return kw_ISO646String; }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 112 "lex.l"
{ return kw_MAX; }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 113 "lex.l"
{ return kw_MIN; }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 114 "lex.l"
{ return kw_MINUS_INFINITY; }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 115 "lex.l"
{ return kw_NULL; }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 116 "lex.l"
{ return kw_NumericString; }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 117 "lex.l"
{ return kw_OBJECT; }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 118 "lex.l"
{ return kw_OCTET; }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 119 "lex.l"
{ return kw_OF; }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 120 "lex.l"
{ return kw_OPTIONAL; }
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 121 "lex.l"
{ return kw_ObjectDescriptor; }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 122 "lex.l"
{ return kw_PATTERN; }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 123 "lex.l"
{ return kw_PDV; }
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 124 "lex.l"
{ return kw_PLUS_INFINITY; }
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 125 "lex.l"
{ return kw_PRESENT; }
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 126 "lex.l"
{ return kw_PRIVATE; }
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 127 "lex.l"
{ return kw_PrintableString; }
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 128 "lex.l"
{ return kw_REAL; }
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 129 "lex.l"
{ return kw_RELATIVE_OID; }
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 130 "lex.l"
{ return kw_SEQUENCE; }
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 131 "lex.l"
{ return kw_SET; }
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 132 "lex.l"
{ return kw_SIZE; }
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 133 "lex.l"
{ return kw_STRING; }
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 134 "lex.l"
{ return kw_SYNTAX; }
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 135 "lex.l"
{ return kw_T61String; }
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 136 "lex.l"
{ return kw_TAGS; }
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 137 "lex.l"
{ return kw_TRUE; }
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 138 "lex.l"
{ return kw_TYPE_IDENTIFIER; }
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 139 "lex.l"
{ return kw_TeletexString; }
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 140 "lex.l"
{ return kw_UNION; }
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 141 "lex.l"
{ return kw_UNIQUE; }
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 142 "lex.l"
{ return kw_UNIVERSAL; }
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 143 "lex.l"
{ return kw_UTCTime; }
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 144 "lex.l"
{ return kw_UTF8String; }
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 145 "lex.l"
{ return kw_UniversalString; }
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 146 "lex.l"
{ return kw_VideotexString; }
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 147 "lex.l"
{ return kw_VisibleString; }
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 148 "lex.l"
{ return kw_WITH; }
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 149 "lex.l"
{ return *yytext; }
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 150 "lex.l"
{ return *yytext; }
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 151 "lex.l"
{ return *yytext; }
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 152 "lex.l"
{ return EEQUAL; }
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 153 "lex.l"
{
int c, start_lineno = lineno;
int f = 0;
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 172 "lex.l"
{
int c, start_lineno = lineno;
int level = 1;
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 212 "lex.l"
{
int start_lineno = lineno;
int c;
YY_BREAK
case 88:
YY_RULE_SETUP
-#line 257 "lex.l"
{ char *e, *y = yytext;
yylval.constant = strtol((const char *)yytext,
&e, 0);
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 265 "lex.l"
{
yylval.name = estrdup ((const char *)yytext);
return IDENTIFIER;
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 269 "lex.l"
;
YY_BREAK
case 91:
/* rule 91 can match eol */
YY_RULE_SETUP
-#line 270 "lex.l"
{ ++lineno; }
YY_BREAK
case 92:
YY_RULE_SETUP
-#line 271 "lex.l"
{ return ELLIPSIS; }
YY_BREAK
case 93:
YY_RULE_SETUP
-#line 272 "lex.l"
{ return RANGE; }
YY_BREAK
case 94:
YY_RULE_SETUP
-#line 273 "lex.l"
{ lex_error_message("Ignoring char(%c)\n", *yytext); }
YY_BREAK
case 95:
YY_RULE_SETUP
-#line 274 "lex.l"
ECHO;
YY_BREAK
-#line 1704 ""
case YY_STATE_EOF(INITIAL):
yyterminate();
#define YYTABLES_NAME "yytables"
-#line 274 "lex.l"
-
-
-
#ifndef yywrap /* XXX */
int
yywrap ()
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "lex.l"
-#line 2 "lex.l"
/*
* Copyright (c) 1998 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
#undef ECHO
-#line 530 ""
-
#define INITIAL 0
#ifndef YY_NO_UNISTD_H
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 58 "lex.l"
-
-#line 712 ""
-
if ( !(yy_init) )
{
(yy_init) = 1;
case 1:
YY_RULE_SETUP
-#line 59 "lex.l"
{ return ET; }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 60 "lex.l"
{ return ET; }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 61 "lex.l"
{ return EC; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 62 "lex.l"
{ return EC; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 63 "lex.l"
{ return PREFIX; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 64 "lex.l"
{ return INDEX; }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 65 "lex.l"
{ return ID; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 66 "lex.l"
{ return END; }
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 67 "lex.l"
{ yylval.number = atoi(yytext); return NUMBER; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 68 "lex.l"
;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 69 "lex.l"
;
YY_BREAK
case 12:
/* rule 12 can match eol */
YY_RULE_SETUP
-#line 70 "lex.l"
{ lineno++; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 71 "lex.l"
{ return getstring(); }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 72 "lex.l"
{ yylval.string = strdup(yytext); return STRING; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 73 "lex.l"
{ return *yytext; }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 74 "lex.l"
ECHO;
YY_BREAK
-#line 876 ""
case YY_STATE_EOF(INITIAL):
yyterminate();
#define YYTABLES_NAME "yytables"
-#line 74 "lex.l"
-
-
-
#ifndef yywrap /* XXX */
int
yywrap ()
extern int YYPARSE_DECL();
-#line 2 ""
/*
* Copyright (c) 1998 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
#define YYMALLOC malloc
#define YYFREE free
-#line 54 ""
typedef union {
char *string;
int number;
} YYSTYPE;
-#line 90 ""
#define ET 257
#define INDEX 258
#define PREFIX 259
/* variables for the parser stack */
static YYSTACKDATA yystack;
-#line 144 ""
static long
name2number(const char *str)
{
_lex_error_message ("%s\n", s);
}
-#line 296 ""
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(YYSTACKDATA *data)
{
switch (yyn)
{
case 5:
-#line 74 ""
{
id_str = yystack.l_mark[0].string;
}
break;
case 6:
-#line 80 ""
{
base_id = name2number(yystack.l_mark[0].string);
strlcpy(name, yystack.l_mark[0].string, sizeof(name));
}
break;
case 7:
-#line 86 ""
{
base_id = name2number(yystack.l_mark[-1].string);
strlcpy(name, yystack.l_mark[0].string, sizeof(name));
}
break;
case 10:
-#line 99 ""
{
number = yystack.l_mark[0].number;
}
break;
case 11:
-#line 103 ""
{
free(prefix);
asprintf (&prefix, "%s_", yystack.l_mark[0].string);
}
break;
case 12:
-#line 111 ""
{
prefix = realloc(prefix, 1);
if (prefix == NULL)
}
break;
case 13:
-#line 118 ""
{
struct error_code *ec = malloc(sizeof(*ec));
}
break;
case 14:
-#line 138 ""
{
YYACCEPT;
}
break;
-#line 574 ""
}
yystack.s_mark -= yym;
yystate = *yystack.s_mark;
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
+ * if you want the limit (max/min) macros for int types.
*/
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
typedef signed char flex_int8_t;
typedef short int flex_int16_t;
typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
+typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
#endif /* ! C99 */
#define EOB_ACT_LAST_MATCH 2
#define YY_LESS_LINENO(n)
-
+
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
do \
int yy_bs_lineno; /**< The line count. */
int yy_bs_column; /**< The column count. */
-
+
/* Whether to try to fill the input buffer when we reach the
* end of it.
*/
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "sel-lex.l"
-#line 2 "sel-lex.l"
/*
* Copyright (c) 2004, 2008 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
#undef ECHO
-#line 538 "lex.yy.c"
-
#define INITIAL 0
#ifndef YY_NO_UNISTD_H
#endif
static void yyunput (int c,char *buf_ptr );
-
+
#ifndef yytext_ptr
static void yy_flex_strncpy (char *,yyconst char *,int );
#endif
register yy_state_type yy_current_state;
register char *yy_cp, *yy_bp;
register int yy_act;
-
-#line 68 "sel-lex.l"
-
-
-#line 723 "lex.yy.c"
-
+
if ( !(yy_init) )
{
(yy_init) = 1;
case 1:
YY_RULE_SETUP
-#line 70 "sel-lex.l"
{ return kw_TRUE; }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 71 "sel-lex.l"
{ return kw_FALSE; }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 72 "sel-lex.l"
{ return kw_AND; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 73 "sel-lex.l"
{ return kw_OR; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 74 "sel-lex.l"
{ return kw_IN; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 75 "sel-lex.l"
{ return kw_TAILMATCH; }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 77 "sel-lex.l"
{
yylval.string = strdup ((const char *)yytext);
return IDENTIFIER;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 81 "sel-lex.l"
{ yylval.string = handle_string(); return STRING; }
YY_BREAK
case 9:
/* rule 9 can match eol */
YY_RULE_SETUP
-#line 82 "sel-lex.l"
{ ++lineno; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 83 "sel-lex.l"
{ return *yytext; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 84 "sel-lex.l"
;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 85 "sel-lex.l"
ECHO;
YY_BREAK
-#line 870 "lex.yy.c"
case YY_STATE_EOF(INITIAL):
yyterminate();
*/
static int yy_get_next_buffer (void)
{
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
register char *source = (yytext_ptr);
register int number_to_move, i;
int ret_val;
{
register yy_state_type yy_current_state;
register char *yy_cp;
-
+
yy_current_state = (yy_start);
for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
{
register int yy_is_jam;
- register char *yy_cp = (yy_c_buf_p);
+ register char *yy_cp = (yy_c_buf_p);
register YY_CHAR yy_c = 1;
if ( yy_accept[yy_current_state] )
static void yyunput (int c, register char * yy_bp )
{
register char *yy_cp;
-
+
yy_cp = (yy_c_buf_p);
/* undo effects of setting up yytext */
{
int c;
-
+
*(yy_c_buf_p) = (yy_hold_char);
if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
/** Immediately switch to a different input stream.
* @param input_file A readable stream.
- *
+ *
* @note This function does not reset the start condition to @c INITIAL .
*/
void yyrestart (FILE * input_file )
{
-
+
if ( ! YY_CURRENT_BUFFER ){
yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
/** Switch to a different input buffer.
* @param new_buffer The new input buffer.
- *
+ *
*/
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
{
-
+
/* TODO. We should be able to replace this entire function body
* with
* yypop_buffer_state();
static void yy_load_buffer_state (void)
{
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
(yy_hold_char) = *(yy_c_buf_p);
/** Allocate and initialize an input buffer state.
* @param file A readable stream.
* @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- *
+ *
* @return the allocated buffer state.
*/
YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
{
YY_BUFFER_STATE b;
-
+
b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
/** Destroy the buffer.
* @param b a buffer created with yy_create_buffer()
- *
+ *
*/
void yy_delete_buffer (YY_BUFFER_STATE b )
{
-
+
if ( ! b )
return;
#ifndef __cplusplus
extern int isatty (int );
#endif /* __cplusplus */
-
+
/* Initializes or reinitializes a buffer.
* This function is sometimes called more than once on the same buffer,
* such as during a yyrestart() or at EOF.
{
int oerrno = errno;
-
+
yy_flush_buffer(b );
b->yy_input_file = file;
}
b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-
+
errno = oerrno;
}
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
* @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- *
+ *
*/
void yy_flush_buffer (YY_BUFFER_STATE b )
{
- if ( ! b )
+ if ( ! b )
return;
b->yy_n_chars = 0;
* the current state. This function will allocate the stack
* if necessary.
* @param new_buffer The new state.
- *
+ *
*/
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
{
- if (new_buffer == NULL)
+ if (new_buffer == NULL)
return;
yyensure_buffer_stack();
/** Removes and deletes the top of the stack, if present.
* The next element becomes the new top.
- *
+ *
*/
void yypop_buffer_state (void)
{
- if (!YY_CURRENT_BUFFER)
+ if (!YY_CURRENT_BUFFER)
return;
yy_delete_buffer(YY_CURRENT_BUFFER );
static void yyensure_buffer_stack (void)
{
int num_to_alloc;
-
+
if (!(yy_buffer_stack)) {
/* First allocation is just for 2 elements, since we don't know if this
);
if ( ! (yy_buffer_stack) )
YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
+
memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+
(yy_buffer_stack_max) = num_to_alloc;
(yy_buffer_stack_top) = 0;
return;
/** Setup the input buffer state to scan directly from a user-specified character buffer.
* @param base the character buffer
* @param size the size in bytes of the character buffer
- *
- * @return the newly allocated buffer state object.
+ *
+ * @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
{
YY_BUFFER_STATE b;
-
+
if ( size < 2 ||
base[size-2] != YY_END_OF_BUFFER_CHAR ||
base[size-1] != YY_END_OF_BUFFER_CHAR )
/** Setup the input buffer state to scan a string. The next call to yylex() will
* scan from a @e copy of @a str.
* @param yystr a NUL-terminated string to scan
- *
+ *
* @return the newly allocated buffer state object.
* @note If you want to scan bytes that may contain NUL values, then use
* yy_scan_bytes() instead.
*/
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
{
-
+
return yy_scan_bytes(yystr,strlen(yystr) );
}
* scan from a @e copy of @a bytes.
* @param bytes the byte buffer to scan
* @param len the number of bytes in the buffer pointed to by @a bytes.
- *
+ *
* @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
char *buf;
yy_size_t n;
int i;
-
+
/* Get memory for full buffer, including space for trailing EOB's. */
n = _yybytes_len + 2;
buf = (char *) yyalloc(n );
static void yy_fatal_error (yyconst char* msg )
{
- (void) fprintf( stderr, "%s\n", msg );
+ (void) fprintf( stderr, "%s\n", msg );
exit( YY_EXIT_FAILURE );
}
/* Accessor methods (get/set functions) to struct members. */
/** Get the current line number.
- *
+ *
*/
int yyget_lineno (void)
{
-
+
return yylineno;
}
/** Get the input stream.
- *
+ *
*/
FILE *yyget_in (void)
{
}
/** Get the output stream.
- *
+ *
*/
FILE *yyget_out (void)
{
}
/** Get the length of the current token.
- *
+ *
*/
int yyget_leng (void)
{
}
/** Get the current token.
- *
+ *
*/
char *yyget_text (void)
/** Set the current line number.
* @param line_number
- *
+ *
*/
void yyset_lineno (int line_number )
{
-
+
yylineno = line_number;
}
/** Set the input stream. This does not discard the current
* input buffer.
* @param in_str A readable stream.
- *
+ *
* @see yy_switch_to_buffer
*/
void yyset_in (FILE * in_str )
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy (void)
{
-
+
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
yy_delete_buffer(YY_CURRENT_BUFFER );
#define YYTABLES_NAME "yytables"
-#line 85 "sel-lex.l"
-
-
-
static char *
handle_string(void)
{
return n;
}
+
extern int YYPARSE_DECL();
-#line 35 ""
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <hx_locl.h>
-#line 45 ""
typedef union {
char *string;
struct hx_expr *expr;
} YYSTYPE;
-#line 48 ""
#define kw_TRUE 257
#define kw_FALSE 258
#define kw_AND 259
switch (yyn)
{
case 1:
-#line 73 ""
{ _hx509_expr_input.expr = yystack.l_mark[0].expr; }
break;
case 2:
-#line 75 ""
{ yyval.expr = _hx509_make_expr(op_TRUE, NULL, NULL); }
break;
case 3:
-#line 76 ""
{ yyval.expr = _hx509_make_expr(op_FALSE, NULL, NULL); }
break;
case 4:
-#line 77 ""
{ yyval.expr = _hx509_make_expr(op_NOT, yystack.l_mark[0].expr, NULL); }
break;
case 5:
-#line 78 ""
{ yyval.expr = _hx509_make_expr(op_AND, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); }
break;
case 6:
-#line 79 ""
{ yyval.expr = _hx509_make_expr(op_OR, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); }
break;
case 7:
-#line 80 ""
{ yyval.expr = yystack.l_mark[-1].expr; }
break;
case 8:
-#line 81 ""
{ yyval.expr = _hx509_make_expr(op_COMP, yystack.l_mark[0].expr, NULL); }
break;
case 9:
-#line 84 ""
{ yyval.expr = _hx509_make_expr(expr_WORDS, yystack.l_mark[0].expr, NULL); }
break;
case 10:
-#line 85 ""
{ yyval.expr = _hx509_make_expr(expr_WORDS, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); }
break;
case 11:
-#line 88 ""
{ yyval.expr = _hx509_make_expr(comp_EQ, yystack.l_mark[-3].expr, yystack.l_mark[0].expr); }
break;
case 12:
-#line 89 ""
{ yyval.expr = _hx509_make_expr(comp_NE, yystack.l_mark[-3].expr, yystack.l_mark[0].expr); }
break;
case 13:
-#line 90 ""
{ yyval.expr = _hx509_make_expr(comp_TAILEQ, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); }
break;
case 14:
-#line 91 ""
{ yyval.expr = _hx509_make_expr(comp_IN, yystack.l_mark[-4].expr, yystack.l_mark[-1].expr); }
break;
case 15:
-#line 92 ""
{ yyval.expr = _hx509_make_expr(comp_IN, yystack.l_mark[-2].expr, yystack.l_mark[0].expr); }
break;
case 16:
-#line 95 ""
{ yyval.expr = yystack.l_mark[0].expr; }
break;
case 17:
-#line 96 ""
{ yyval.expr = yystack.l_mark[0].expr; }
break;
case 18:
-#line 97 ""
{ yyval.expr = yystack.l_mark[0].expr; }
break;
case 19:
-#line 98 ""
{ yyval.expr = yystack.l_mark[0].expr; }
break;
case 20:
-#line 101 ""
{ yyval.expr = _hx509_make_expr(expr_NUMBER, yystack.l_mark[0].string, NULL); }
break;
case 21:
-#line 102 ""
{ yyval.expr = _hx509_make_expr(expr_STRING, yystack.l_mark[0].string, NULL); }
break;
case 22:
-#line 104 ""
{
yyval.expr = _hx509_make_expr(expr_FUNCTION, yystack.l_mark[-3].string, yystack.l_mark[-1].expr); }
break;
case 23:
-#line 107 ""
{ yyval.expr = yystack.l_mark[-1].expr; }
break;
case 24:
-#line 110 ""
{
yyval.expr = _hx509_make_expr(expr_VAR, yystack.l_mark[-2].string, yystack.l_mark[0].expr); }
break;
case 25:
-#line 112 ""
{
yyval.expr = _hx509_make_expr(expr_VAR, yystack.l_mark[0].string, NULL); }
break;
-#line 541 ""
}
yystack.s_mark -= yym;
yystate = *yystack.s_mark;
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
-#line 1 "sel-lex.l"
-#line 2 "sel-lex.l"
/*
* Copyright (c) 2004, 2008 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
#undef ECHO
-#line 538 ""
-
#define INITIAL 0
#ifndef YY_NO_UNISTD_H
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 68 "sel-lex.l"
-
-
-#line 723 ""
-
if ( !(yy_init) )
{
(yy_init) = 1;
case 1:
YY_RULE_SETUP
-#line 70 "sel-lex.l"
{ return kw_TRUE; }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 71 "sel-lex.l"
{ return kw_FALSE; }
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 72 "sel-lex.l"
{ return kw_AND; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 73 "sel-lex.l"
{ return kw_OR; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 74 "sel-lex.l"
{ return kw_IN; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 75 "sel-lex.l"
{ return kw_TAILMATCH; }
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 77 "sel-lex.l"
{
yylval.string = strdup ((const char *)yytext);
return IDENTIFIER;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 81 "sel-lex.l"
{ yylval.string = handle_string(); return STRING; }
YY_BREAK
case 9:
/* rule 9 can match eol */
YY_RULE_SETUP
-#line 82 "sel-lex.l"
{ ++lineno; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 83 "sel-lex.l"
{ return *yytext; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 84 "sel-lex.l"
;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 85 "sel-lex.l"
ECHO;
YY_BREAK
-#line 870 ""
case YY_STATE_EOF(INITIAL):
yyterminate();
#define YYTABLES_NAME "yytables"
-#line 85 "sel-lex.l"
-
-
-
static char *
handle_string(void)
{
cd $dir
- $LEX $lfile || exit 1
+ # --noline specified because line directives cause more bother than they solve (including possibly invalid DWARF headers if the filename ends up as "")
+ $LEX --noline $lfile || exit 1
if [ -r lex.yy.c ]; then
echo "#include \"config.h\"" > $base.c
cd $dir
- $YACC -d $yfile || exit 1
+ # -l specified because line directives cause more bother than they solve (including possibly invalid DWARF headers if the filename ends up as "")
+ $YACC -l -d $yfile || exit 1
if [ -r y.tab.h -a -r y.tab.c ];then
sed -e "/^#/!b" -e "s|y\.tab\.h|$SRC|" -e "s|\"$base.y|\"$SRC|" y.tab.h > $base.h
sed -e "s|y\.tab\.c|$SRC|" -e "s|\"$base.y|\"$SRC|" y.tab.c > $base.c