bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: yy_token_number_type and yyr1


From: Paul Hilfinger
Subject: Re: yy_token_number_type and yyr1
Date: Mon, 20 May 2002 14:03:33 -0700

 > Paul> yy_token_number_type is not big enough for yyr1, since the
 > Paul> former encompasses only translations of terminal symbols.
 > 
 > I think it is: both contain only internal token numbers.  yytranslate
 > is *indexed* by user token numbers (or, if you wish, yylex token
 > numbers), by they both range on the same set of values.

yytranslate is fine.  The elements of yyr1, however, are NON-terminal
symbols, which are never returned by yylex (or yytranslate).  

Here's a trivial test grammar that should demonstrate the problem.
Check out yyr1 in the result.

Paul Hilfinger

----------------------------------------------------------------------
%{
#include <stdio.h>
#include <stdlib.h>
%}

%%

p : p1 ;
p1: p2 ;
p2: p3 ;
p3: p4 ;
p4: p5 ;
p5: p6 ;
p6: p7 ;
p7: p8 ;
p8: p9 ;
p9: p10 ;
p10: p11 ;
p11: p12 ;
p12: p13 ;
p13: p14 ;
p14: p15 ;
p15: p16 ;
p16: p17 ;
p17: p18 ;
p18: p19 ;
p19: p20 ;
p20: p21 ;
p21: p22 ;
p22: p23 ;
p23: p24 ;
p24: p25 ;
p25: p26 ;
p26: p27 ;
p27: p28 ;
p28: p29 ;
p29: p30 ;
p30: p31 ;
p31: p32 ;
p32: p33 ;
p33: p34 ;
p34: p35 ;
p35: p36 ;
p36: p37 ;
p37: p38 ;
p38: p39 ;
p39: p40 ;
p40: p41 ;
p41: p42 ;
p42: p43 ;
p43: p44 ;
p44: p45 ;
p45: p46 ;
p46: p47 ;
p47: p48 ;
p48: p49 ;
p49: p50 ;
p50: p51 ;
p51: p52 ;
p52: p53 ;
p53: p54 ;
p54: p55 ;
p55: p56 ;
p56: p57 ;
p57: p58 ;
p58: p59 ;
p59: p60 ;
p60: p61 ;
p61: p62 ;
p62: p63 ;
p63: p64 ;
p64: p65 ;
p65: p66 ;
p66: p67 ;
p67: p68 ;
p68: p69 ;
p69: p70 ;
p70: p71 ;
p71: p72 ;
p72: p73 ;
p73: p74 ;
p74: p75 ;
p75: p76 ;
p76: p77 ;
p77: p78 ;
p78: p79 ;
p79: p80 ;
p80: p81 ;
p81: p82 ;
p82: p83 ;
p83: p84 ;
p84: p85 ;
p85: p86 ;
p86: p87 ;
p87: p88 ;
p88: p89 ;
p89: p90 ;
p90: p91 ;
p91: p92 ;
p92: p93 ;
p93: p94 ;
p94: p95 ;
p95: p96 ;
p96: p97 ;
p97: p98 ;
p98: p99 ;
p99: p100 ;
p100: p101 ;
p101: p102 ;
p102: p103 ;
p103: p104 ;
p104: p105 ;
p105: p106 ;
p106: p107 ;
p107: p108 ;
p108: p109 ;
p109: p110 ;
p110: p111 ;
p111: p112 ;
p112: p113 ;
p113: p114 ;
p114: p115 ;
p115: p116 ;
p116: p117 ;
p117: p118 ;
p118: p119 ;
p119: p120 ;
p120: p121 ;
p121: p122 ;
p122: p123 ;
p123: p124 ;
p124: p125 ;
p125: p126 ;
p126: p127 ;
p127: p128 ;
p128: p129 ;
p129: p130 ;
p130: p131 ;
p131: p132 ;
p132: p133 ;
p133: p134 ;
p134: p135 ;
p135: p136 ;
p136: p137 ;
p137: p138 ;
p138: p139 ;
p139: p140 ;
p140: p141 ;
p141: p142 ;
p142: p143 ;
p143: p144 ;
p144: p145 ;
p145: p146 ;
p146: p147 ;
p147: p148 ;
p148: p149 ;
p149: p150 ;
p150: p151 ;
p151: p152 ;
p152: p153 ;
p153: p154 ;
p154: p155 ;
p155: p156 ;
p156: p157 ;
p157: p158 ;
p158: p159 ;
p159: p160 ;
p160: p161 ;
p161: p162 ;
p162: p163 ;
p163: p164 ;
p164: p165 ;
p165: p166 ;
p166: p167 ;
p167: p168 ;
p168: p169 ;
p169: p170 ;
p170: p171 ;
p171: p172 ;
p172: p173 ;
p173: p174 ;
p174: p175 ;
p175: p176 ;
p176: p177 ;
p177: p178 ;
p178: p179 ;
p179: p180 ;
p180: p181 ;
p181: p182 ;
p182: p183 ;
p183: p184 ;
p184: p185 ;
p185: p186 ;
p186: p187 ;
p187: p188 ;
p188: p189 ;
p189: p190 ;
p190: p191 ;
p191: p192 ;
p192: p193 ;
p193: p194 ;
p194: p195 ;
p195: p196 ;
p196: p197 ;
p197: p198 ;
p198: p199 ;
p199: p200 ;
p200: p201 ;
p201: p202 ;
p202: p203 ;
p203: p204 ;
p204: p205 ;
p205: p206 ;
p206: p207 ;
p207: p208 ;
p208: p209 ;
p209: p210 ;
p210: p211 ;
p211: p212 ;
p212: p213 ;
p213: p214 ;
p214: p215 ;
p215: p216 ;
p216: p217 ;
p217: p218 ;
p218: p219 ;
p219: p220 ;
p220: p221 ;
p221: p222 ;
p222: p223 ;
p223: p224 ;
p224: p225 ;
p225: p226 ;
p226: p227 ;
p227: p228 ;
p228: p229 ;
p229: p230 ;
p230: p231 ;
p231: p232 ;
p232: p233 ;
p233: p234 ;
p234: p235 ;
p235: p236 ;
p236: p237 ;
p237: p238 ;
p238: p239 ;
p239: p240 ;
p240: p241 ;
p241: p242 ;
p242: p243 ;
p243: p244 ;
p244: p245 ;
p245: p246 ;
p246: p247 ;
p247: p248 ;
p248: p249 ;
p249: p250 ;
p250: p251 ;
p251: p252 ;
p252: p253 ;
p253: p254 ;
p254: p255 ;
p255: p256 ;
p256: p257 ;
p257: 'x' ;

%%

int yylex ()
{
  while (1) {
    int c = getchar ();
    switch (c) {
    case EOF: return 0;
    case ' ': case '\n': case '\t': break;
    default:
      return (c);
    }
  }
}

int main () {
   yyparse ();
   exit (0);
}

int yyerror (const char* msg) {
   fprintf (stderr, "Error: %s\n", msg);
}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]