Changeset 454 for abnfparser/bap/main.c


Ignore:
Timestamp:
Feb 28, 2009, 8:19:40 AM (11 years ago)
Author:
julian.reschke@…
Message:

fix line wrap in ABNF prose problem; update XSLT for collected ABNF to move diagnostics into separate figure

File:
1 edited

Legend:

Unmodified
Added
Removed
  • abnfparser/bap/main.c

    r416 r454  
    5858    printf( format, ## args );                                  \
    5959  } else {                                                      \
     60    int prevcount = charcount;  \
    6061    charcount += sprintf((charbuf+charcount), format, ## args); \
    6162    if (charcount > olenlimit) {                                \
    62       charcut = charbuf+olenlimit;                              \
    63       while (*charcut != ' ' && charcut >= charbuf) {           \
    64         charcut--;                                              \
    65         charcount++;                                            \
    66       }                                                         \
     63      char x[1000];  \
     64      sprintf(x, format, ## args ); \
     65      if (*x == '<') { /* prose rule? */  \
     66        charcut = charbuf + prevcount - 1; /* wrap all of it */ \
     67        charcount = olenlimit + strlen(x) + 1;  \
     68      } \
     69      else { \
     70        charcut = charbuf+olenlimit;                            \
     71        while (*charcut != ' ' && charcut >= charbuf) {         \
     72                charcut--;                                              \
     73                charcount++;                                            \
     74        }                                                               \
     75      } \
    6776      if (charcut != charbuf) {                                 \
    68         *charcut++ = 0;                                         \
    69         printf("%s\n", charbuf);                                \
    70         if (*charbuf == ';') {                                  \
    71           memmove(charbuf+2, charcut, charcount - olenlimit);   \
    72           *(charbuf+1) = ' ';                                   \
    73           charcount -= (olenlimit-1);                           \
    74         } else {                                                \
    75           memmove(charbuf+1, charcut, charcount - olenlimit);   \
    76           *charbuf = ' ';                                       \
    77           charcount -= olenlimit;                               \
    78         }                                                       \
     77        *charcut++ = 0;                                         \
     78        printf("%s\n", charbuf);                                \
     79        if (*charbuf == ';') {                                  \
     80          memmove(charbuf+2, charcut, charcount - olenlimit);   \
     81          *(charbuf+1) = ' ';                                   \
     82          charcount -= (olenlimit-1);                           \
     83        } else {                                                \
     84          memmove(charbuf+1, charcut, charcount - olenlimit);   \
     85          *charbuf = ' ';                                       \
     86          charcount -= olenlimit;                               \
     87        }                                                       \
    7988      }                                                         \
    8089    }                                                           \
     90    /* flush the line when EOL present */ \
    8191    charcut = strchr(charbuf, '\n');                            \
    8292    if (charcut) {                                              \
Note: See TracChangeset for help on using the changeset viewer.