00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 # include "lclintMacros.nf"
00043 # include "llbasic.h"
00044 # include "signature.h"
00045 # include "signature2.h"
00046 # include "scan.h"
00047 # include "scanline.h"
00048 # include "tokentable.h"
00049 # include "syntable.h"
00050
00051
00052 # define MOVECHAR() do { *bufptr++ = c; c = *currentLine++; colNumber++; } while (FALSE)
00053
00054
00055 # define MAXCHAR 512
00056
00057
00058 # define TABSIZE 8
00059
00060 static void LocalUserError ( char *p_msg);
00061
00062 static charClassData charClass[LASTCHAR + 1];
00063
00064 static unsigned int colNumber;
00065 static unsigned int startCol;
00066 static bool reportEOL;
00067 static bool reportComments;
00068
00069 static char tokenBuffer[MAXCHAR];
00070
00071 static const charClassData charClassDef[] =
00072 {
00073
00074
00075 { CHC_NULL, TRUE },
00076 { SINGLECHAR, FALSE },
00077 { SINGLECHAR, FALSE },
00078 { SINGLECHAR, FALSE },
00079 { SINGLECHAR, FALSE },
00080 { SINGLECHAR, FALSE },
00081 { SINGLECHAR, FALSE },
00082 { SINGLECHAR, FALSE },
00083 { SINGLECHAR, FALSE },
00084
00085
00086
00087 { WHITECHAR, FALSE },
00088 { WHITECHAR, TRUE },
00089
00090
00091
00092 { SINGLECHAR, FALSE },
00093 { SINGLECHAR, FALSE },
00094 { SINGLECHAR, FALSE },
00095 { SINGLECHAR, FALSE },
00096 { SINGLECHAR, FALSE },
00097 { SINGLECHAR, FALSE },
00098 { SINGLECHAR, FALSE },
00099 { SINGLECHAR, FALSE },
00100 { SINGLECHAR, FALSE },
00101 { SINGLECHAR, FALSE },
00102 { SINGLECHAR, FALSE },
00103 { SINGLECHAR, FALSE },
00104 { SINGLECHAR, FALSE },
00105 { SINGLECHAR, FALSE },
00106 { SINGLECHAR, FALSE },
00107 { SINGLECHAR, FALSE },
00108 { SINGLECHAR, FALSE },
00109 { SINGLECHAR, FALSE },
00110 { SINGLECHAR, FALSE },
00111 { SINGLECHAR, FALSE },
00112 { SINGLECHAR, FALSE },
00113
00114
00115
00116 { WHITECHAR, FALSE },
00117 { SINGLECHAR, FALSE },
00118 { SINGLECHAR, FALSE },
00119 { SINGLECHAR, FALSE },
00120 { SINGLECHAR, FALSE },
00121 { SINGLECHAR, FALSE },
00122 { SINGLECHAR, FALSE },
00123 { SINGLECHAR, FALSE },
00124
00125
00126
00127 { PERMCHAR, FALSE },
00128 { PERMCHAR, FALSE },
00129 { OPCHAR, FALSE },
00130 { OPCHAR, FALSE },
00131 { PERMCHAR, FALSE },
00132 { OPCHAR, FALSE },
00133 { OPCHAR, FALSE },
00134 { SLASHCHAR, FALSE },
00135
00136
00137
00138 { IDCHAR, FALSE },
00139 { IDCHAR, FALSE },
00140 { IDCHAR, FALSE },
00141 { IDCHAR, FALSE },
00142 { IDCHAR, FALSE },
00143 { IDCHAR, FALSE },
00144 { IDCHAR, FALSE },
00145 { IDCHAR, FALSE },
00146 { IDCHAR, FALSE },
00147 { IDCHAR, FALSE },
00148
00149
00150
00151 { PERMCHAR, FALSE },
00152 { SINGLECHAR, FALSE },
00153 { OPCHAR, FALSE },
00154 { OPCHAR, FALSE },
00155 { OPCHAR, FALSE },
00156 { SINGLECHAR, FALSE },
00157 { SINGLECHAR, FALSE },
00158
00159
00160
00161 { IDCHAR, FALSE },
00162 { IDCHAR, FALSE },
00163 { IDCHAR, FALSE },
00164 { IDCHAR, FALSE },
00165 { IDCHAR, FALSE },
00166 { IDCHAR, FALSE },
00167 { IDCHAR, FALSE },
00168 { IDCHAR, FALSE },
00169 { IDCHAR, FALSE },
00170 { IDCHAR, FALSE },
00171 { IDCHAR, FALSE },
00172 { IDCHAR, FALSE },
00173 { IDCHAR, FALSE },
00174 { IDCHAR, FALSE },
00175 { IDCHAR, FALSE },
00176 { IDCHAR, FALSE },
00177 { IDCHAR, FALSE },
00178 { IDCHAR, FALSE },
00179 { IDCHAR, FALSE },
00180 { IDCHAR, FALSE },
00181 { IDCHAR, FALSE },
00182 { IDCHAR, FALSE },
00183 { IDCHAR, FALSE },
00184 { IDCHAR, FALSE },
00185 { IDCHAR, FALSE },
00186 { IDCHAR, FALSE },
00187
00188
00189
00190 { SINGLECHAR, FALSE },
00191 { CHC_EXTENSION, FALSE },
00192 { SINGLECHAR, FALSE },
00193 { SINGLECHAR, FALSE },
00194 { IDCHAR, FALSE },
00195 { SINGLECHAR, FALSE },
00196
00197
00198
00199 { IDCHAR, FALSE },
00200 { IDCHAR, FALSE },
00201 { IDCHAR, FALSE },
00202 { IDCHAR, FALSE },
00203 { IDCHAR, FALSE },
00204 { IDCHAR, FALSE },
00205 { IDCHAR, FALSE },
00206 { IDCHAR, FALSE },
00207 { IDCHAR, FALSE },
00208 { IDCHAR, FALSE },
00209 { IDCHAR, FALSE },
00210 { IDCHAR, FALSE },
00211 { IDCHAR, FALSE },
00212 { IDCHAR, FALSE },
00213 { IDCHAR, FALSE },
00214 { IDCHAR, FALSE },
00215 { IDCHAR, FALSE },
00216 { IDCHAR, FALSE },
00217 { IDCHAR, FALSE },
00218 { IDCHAR, FALSE },
00219 { IDCHAR, FALSE },
00220 { IDCHAR, FALSE },
00221 { IDCHAR, FALSE },
00222 { IDCHAR, FALSE },
00223 { IDCHAR, FALSE },
00224 { IDCHAR, FALSE },
00225
00226 { SINGLECHAR, FALSE },
00227 { SINGLECHAR, FALSE },
00228 { SINGLECHAR, FALSE },
00229 { SINGLECHAR, FALSE },
00230 { SINGLECHAR, FALSE },
00231
00232
00233
00234 { SINGLECHAR, FALSE },
00235 { SINGLECHAR, FALSE },
00236 { SINGLECHAR, FALSE },
00237 { SINGLECHAR, FALSE },
00238 { SINGLECHAR, FALSE },
00239 { SINGLECHAR, FALSE },
00240 { SINGLECHAR, FALSE },
00241 { SINGLECHAR, FALSE },
00242 { SINGLECHAR, FALSE },
00243 { SINGLECHAR, FALSE },
00244 { SINGLECHAR, FALSE },
00245 { SINGLECHAR, FALSE },
00246 { SINGLECHAR, FALSE },
00247 { SINGLECHAR, FALSE },
00248 { SINGLECHAR, FALSE },
00249 { SINGLECHAR, FALSE },
00250 { SINGLECHAR, FALSE },
00251 { SINGLECHAR, FALSE },
00252 { SINGLECHAR, FALSE },
00253 { SINGLECHAR, FALSE },
00254 { SINGLECHAR, FALSE },
00255 { SINGLECHAR, FALSE },
00256 { SINGLECHAR, FALSE },
00257 { SINGLECHAR, FALSE },
00258 { SINGLECHAR, FALSE },
00259 { SINGLECHAR, FALSE },
00260 { SINGLECHAR, FALSE },
00261 { SINGLECHAR, FALSE },
00262 { SINGLECHAR, FALSE },
00263 { SINGLECHAR, FALSE },
00264 { SINGLECHAR, FALSE },
00265 { SINGLECHAR, FALSE },
00266 { SINGLECHAR, FALSE },
00267 { SINGLECHAR, FALSE },
00268 { SINGLECHAR, FALSE },
00269 { SINGLECHAR, FALSE },
00270 { SINGLECHAR, FALSE },
00271 { SINGLECHAR, FALSE },
00272 { SINGLECHAR, FALSE },
00273 { SINGLECHAR, FALSE },
00274 { SINGLECHAR, FALSE },
00275 { SINGLECHAR, FALSE },
00276 { SINGLECHAR, FALSE },
00277 { SINGLECHAR, FALSE },
00278 { SINGLECHAR, FALSE },
00279 { SINGLECHAR, FALSE },
00280 { SINGLECHAR, FALSE },
00281 { SINGLECHAR, FALSE },
00282 { SINGLECHAR, FALSE },
00283 { SINGLECHAR, FALSE },
00284 { SINGLECHAR, FALSE },
00285 { SINGLECHAR, FALSE },
00286 { SINGLECHAR, FALSE },
00287 { SINGLECHAR, FALSE },
00288 { SINGLECHAR, FALSE },
00289 { SINGLECHAR, FALSE },
00290 { SINGLECHAR, FALSE },
00291 { SINGLECHAR, FALSE },
00292 { SINGLECHAR, FALSE },
00293 { SINGLECHAR, FALSE },
00294 { SINGLECHAR, FALSE },
00295 { SINGLECHAR, FALSE },
00296 { SINGLECHAR, FALSE },
00297 { SINGLECHAR, FALSE },
00298 { SINGLECHAR, FALSE },
00299 { SINGLECHAR, FALSE },
00300 { SINGLECHAR, FALSE },
00301 { SINGLECHAR, FALSE },
00302 { SINGLECHAR, FALSE },
00303 { SINGLECHAR, FALSE },
00304 { SINGLECHAR, FALSE },
00305 { SINGLECHAR, FALSE },
00306 { SINGLECHAR, FALSE },
00307 { SINGLECHAR, FALSE },
00308 { SINGLECHAR, FALSE },
00309 { SINGLECHAR, FALSE },
00310 { SINGLECHAR, FALSE },
00311 { SINGLECHAR, FALSE },
00312 { SINGLECHAR, FALSE },
00313 { SINGLECHAR, FALSE },
00314 { SINGLECHAR, FALSE },
00315 { SINGLECHAR, FALSE },
00316 { SINGLECHAR, FALSE },
00317 { SINGLECHAR, FALSE },
00318 { SINGLECHAR, FALSE },
00319 { SINGLECHAR, FALSE },
00320 { SINGLECHAR, FALSE },
00321 { SINGLECHAR, FALSE },
00322 { SINGLECHAR, FALSE },
00323 { SINGLECHAR, FALSE },
00324 { SINGLECHAR, FALSE },
00325 { SINGLECHAR, FALSE },
00326 { SINGLECHAR, FALSE },
00327 { SINGLECHAR, FALSE },
00328 { SINGLECHAR, FALSE },
00329 { SINGLECHAR, FALSE },
00330 { SINGLECHAR, FALSE },
00331 { SINGLECHAR, FALSE },
00332 { SINGLECHAR, FALSE },
00333 { SINGLECHAR, FALSE },
00334 { SINGLECHAR, FALSE },
00335 { SINGLECHAR, FALSE },
00336 { SINGLECHAR, FALSE },
00337 { SINGLECHAR, FALSE },
00338 { SINGLECHAR, FALSE },
00339 { SINGLECHAR, FALSE },
00340 { SINGLECHAR, FALSE },
00341 { SINGLECHAR, FALSE },
00342 { SINGLECHAR, FALSE },
00343 { SINGLECHAR, FALSE },
00344 { SINGLECHAR, FALSE },
00345 { SINGLECHAR, FALSE },
00346 { SINGLECHAR, FALSE },
00347 { SINGLECHAR, FALSE },
00348 { SINGLECHAR, FALSE },
00349 { SINGLECHAR, FALSE },
00350 { SINGLECHAR, FALSE },
00351 { SINGLECHAR, FALSE },
00352 { SINGLECHAR, FALSE },
00353 { SINGLECHAR, FALSE },
00354 { SINGLECHAR, FALSE },
00355 { SINGLECHAR, FALSE },
00356 { SINGLECHAR, FALSE },
00357 { SINGLECHAR, FALSE },
00358 { SINGLECHAR, FALSE },
00359 { SINGLECHAR, FALSE },
00360 { SINGLECHAR, FALSE },
00361 { SINGLECHAR, FALSE }
00362 };
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392 void
00393 lscanLine (char *currentLine)
00394 {
00395 ltokenCode cod;
00396 lsymbol sym;
00397 register char c;
00398 register char *bufptr;
00399 ltoken newToken;
00400
00401 c = *currentLine++;
00402 colNumber = 0;
00403
00404 for (;;)
00405 {
00406 bufptr = &tokenBuffer[0];
00407 startCol = colNumber;
00408
00409
00410 switch (lscanCharClass (c))
00411 {
00412
00413 case CHC_NULL:
00414 sym = lsymbol_fromChars ("E O L");
00415 cod = LST_EOL;
00416 break;
00417
00418
00419
00420 case IDCHAR:
00421
00422 while (lscanCharClass (c) == IDCHAR)
00423 {
00424 MOVECHAR ();
00425 }
00426
00427 *bufptr = '\0';
00428 sym = lsymbol_fromChars (&tokenBuffer[0]);
00429 cod = LST_SIMPLEID;
00430 break;
00431
00432
00433
00434 case SINGLECHAR:
00435 case PERMCHAR:
00436 MOVECHAR ();
00437 *bufptr = '\0';
00438 sym = lsymbol_fromChars (&tokenBuffer[0]);
00439 cod = LST_SIMPLEOP;
00440 break;
00441
00442 case SLASHCHAR:
00443 if (*currentLine == '\\')
00444 {
00445 MOVECHAR ();
00446 MOVECHAR ();
00447 *bufptr = '\0';
00448 sym = lsymbol_fromChars (&tokenBuffer[0]);
00449 cod = LST_SIMPLEOP;
00450 break;
00451 }
00452 MOVECHAR ();
00453
00454
00455
00456 case OPCHAR:
00457
00458
00459
00460
00461 while (lscanCharClass (c) == OPCHAR)
00462 {
00463 MOVECHAR ();
00464 }
00465
00466 *bufptr = '\0';
00467 sym = lsymbol_fromChars (&tokenBuffer[0]);
00468 cod = LST_SIMPLEOP;
00469 break;
00470
00471
00472 case WHITECHAR:
00473
00474 switch (c)
00475 {
00476 case '\t':
00477 MOVECHAR ();
00478 colNumber--;
00479 colNumber += TABSIZE;
00480 colNumber -= (colNumber % TABSIZE);
00481 break;
00482
00483 case '\v':
00484 case '\f':
00485 MOVECHAR ();
00486 colNumber--;
00487 break;
00488
00489 default:
00490 MOVECHAR ();
00491 break;
00492 }
00493 *bufptr = '\0';
00494 sym = lsymbol_fromChars (&tokenBuffer[0]);
00495 cod = LST_WHITESPACE;
00496 break;
00497
00498 case CHC_EXTENSION:
00499 MOVECHAR ();
00500
00501 switch (c)
00502 {
00503
00504
00505 case '(':
00506 MOVECHAR ();
00507 while (lscanCharClass (c) == IDCHAR)
00508 {
00509 MOVECHAR ();
00510 }
00511 *bufptr = '\0';
00512 sym = lsymbol_fromChars (&tokenBuffer[0]);
00513 cod = LST_OPENSYM;
00514 break;
00515
00516 case ')':
00517 MOVECHAR ();
00518 while (lscanCharClass (c) == IDCHAR)
00519 {
00520 MOVECHAR ();
00521 }
00522 *bufptr = '\0';
00523 sym = lsymbol_fromChars (&tokenBuffer[0]);
00524 cod = LST_CLOSESYM;
00525 break;
00526
00527
00528 case ',':
00529 MOVECHAR ();
00530 while (lscanCharClass (c) == IDCHAR)
00531 {
00532 MOVECHAR ();
00533 }
00534 *bufptr = '\0';
00535 sym = lsymbol_fromChars (&tokenBuffer[0]);
00536 cod = LST_SEPSYM;
00537 break;
00538
00539
00540 case ':':
00541 MOVECHAR ();
00542 while (lscanCharClass (c) == IDCHAR)
00543 {
00544 MOVECHAR ();
00545 }
00546 *bufptr = '\0';
00547 sym = lsymbol_fromChars (&tokenBuffer[0]);
00548 cod = LST_SIMPLEID;
00549 break;
00550
00551 default:
00552 if (lscanCharClass (c) == IDCHAR)
00553 {
00554 do
00555 {
00556 MOVECHAR ();
00557 }
00558 while (lscanCharClass (c) == IDCHAR);
00559 *bufptr = '\0';
00560 sym = lsymbol_fromChars (&tokenBuffer[0]);
00561 cod = LST_SIMPLEOP;
00562 }
00563 else
00564 {
00565
00566
00567
00568
00569
00570
00571
00572 MOVECHAR ();
00573 *bufptr = '\0';
00574 sym = lsymbol_fromChars (&tokenBuffer[0]);
00575 cod = LST_SIMPLEOP;
00576 }
00577 break;
00578 }
00579 break;
00580
00581 default:
00582
00583 LocalUserError ("unexpected character in input");
00584 return;
00585 }
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595 newToken = LSLInsertToken (cod, sym, 0, FALSE);
00596
00597 if (LSLIsSyn (ltoken_getText (newToken)))
00598 {
00599
00600
00601
00602
00603
00604 newToken = LSLGetTokenForSyn (ltoken_getText (newToken));
00605 ltoken_setRawText (newToken, sym);
00606 }
00607
00608 ltoken_setCol (newToken, startCol);
00609 ltoken_setLine (newToken, tsource_thisLineNumber (LSLScanSource ()));
00610 ltoken_setFileName (newToken, tsource_fileName (LSLScanSource ()));
00611
00612 if (ltoken_getCode (newToken) == LST_COMMENTSYM)
00613 {
00614 bufptr = &tokenBuffer[0];
00615
00616 while (!LSLIsEndComment (c))
00617 {
00618 MOVECHAR ();
00619 }
00620 if (lscanCharClass (c) != CHC_NULL)
00621 {
00622 MOVECHAR ();
00623 }
00624 if (reportComments)
00625 {
00626 *bufptr = '\0';
00627 ltoken_setRawText (newToken, lsymbol_fromChars (&tokenBuffer[0]));
00628 LSLScanFreshToken (newToken);
00629 }
00630 }
00631 else if (ltoken_getCode (newToken) == LST_EOL)
00632 {
00633 if (reportEOL)
00634 {
00635 LSLScanFreshToken (newToken);
00636 }
00637 return;
00638 }
00639 else
00640 {
00641 if (cod != LST_WHITESPACE)
00642 {
00643 LSLScanFreshToken (newToken);
00644 }
00645 }
00646 }
00647 }
00648
00649 ltoken
00650 LSLScanEofToken (void)
00651 {
00652 ltoken t = ltoken_copy (LSLInsertToken (LEOFTOKEN,
00653 lsymbol_fromChars ("E O F"),
00654 0, TRUE));
00655 ltoken_setCol (t, colNumber);
00656 ltoken_setLine (t, tsource_thisLineNumber (LSLScanSource ()));
00657 ltoken_setFileName (t, tsource_fileName (LSLScanSource ()));
00658 return t;
00659 }
00660
00661 void
00662 LSLReportEolTokens (bool setting)
00663 {
00664 reportEOL = setting;
00665 }
00666
00667 static void
00668 LocalUserError (char *msg)
00669 {
00670 tsource *s = LSLScanSource ();
00671 llfatalerror (message ("%s:%u,%u: %s",
00672 cstring_fromChars (tsource_fileName (s)),
00673 tsource_thisLineNumber (s), colNumber,
00674 cstring_fromChars (msg)));
00675 }
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711 void
00712 lscanLineInit (void)
00713 {
00714 int i;
00715
00716 reportEOL = FALSE;
00717 reportComments = FALSE;
00718
00719 for (i = 0; i <= LASTCHAR; i++)
00720 {
00721 charClass[i] = charClassDef[i];
00722 }
00723
00724
00725
00726
00727
00728
00729
00730 (void) LSLReserveToken (LST_SIMPLEID, "dummy token");
00731
00732 ltoken_forall = LSLReserveToken (LST_QUANTIFIERSYM, "\\forall");
00733 ltoken_true = LSLReserveToken (LST_SIMPLEID, "true");
00734 ltoken_false = LSLReserveToken (LST_SIMPLEID, "false");
00735 ltoken_not = LSLReserveToken (LST_SIMPLEOP, "\\not");
00736 ltoken_and = LSLReserveToken (LST_LOGICALOP, "\\and");
00737 ltoken_or = LSLReserveToken (LST_LOGICALOP, "\\or");
00738 ltoken_implies = LSLReserveToken (LST_LOGICALOP, "\\implies");
00739
00740 ltoken_eq = LSLReserveToken (LST_EQOP, "\\eq");
00741 ltoken_neq = LSLReserveToken (LST_EQOP, "\\neq");
00742
00743 ltoken_equals = LSLReserveToken (LST_EQUATIONSYM, "\\equals");
00744 ltoken_eqsep = LSLReserveToken (LST_EQSEPSYM, "\\eqsep");
00745 ltoken_select = LSLReserveToken (LST_SELECTSYM, "\\select");
00746 ltoken_open = LSLReserveToken (LST_OPENSYM, "\\open");
00747 ltoken_sep = LSLReserveToken (LST_SEPSYM, "\\,");
00748 ltoken_close = LSLReserveToken (LST_CLOSESYM, "\\close");
00749 ltoken_id = LSLReserveToken (LST_SIMPLEID, "\\:");
00750 ltoken_arrow = LSLReserveToken (LST_MAPSYM, "\\arrow");
00751 ltoken_farrow = LSLReserveToken (LST_FIELDMAPSYM, "\\field_arrow");
00752
00753 ltoken_marker = LSLReserveToken (LST_MARKERSYM, "\\marker");
00754 ltoken_comment = LSLReserveToken (LST_COMMENTSYM, "\\comment");
00755 ltoken_compose = LSLReserveToken (LST_COMPOSESYM, "\\composeSort");
00756 ltoken_if = LSLReserveToken (LST_ifTOKEN, "if");
00757
00758 (void) LSLReserveToken (LST_LPAR, "(");
00759 (void) LSLReserveToken (LST_RPAR, ")");
00760 (void) LSLReserveToken (LST_COMMA, ",");
00761 (void) LSLReserveToken (LST_COLON, ":");
00762
00763 (void) LSLReserveToken (LST_LBRACKET, "[");
00764 (void) LSLReserveToken (LST_RBRACKET, "]");
00765
00766 (void) LSLReserveToken (LST_WHITESPACE, " ");
00767 (void) LSLReserveToken (LST_WHITESPACE, "\t");
00768 (void) LSLReserveToken (LST_WHITESPACE, "\n");
00769
00770 (void) LSLReserveToken (LEOFTOKEN, "E O F");
00771 (void) LSLReserveToken (LST_EOL, "E O L");
00772
00773 (void) LSLReserveToken (LST_assertsTOKEN, "asserts");
00774 (void) LSLReserveToken (LST_assumesTOKEN, "assumes");
00775 (void) LSLReserveToken (LST_byTOKEN, "by");
00776 (void) LSLReserveToken (LST_convertsTOKEN, "converts");
00777 (void) LSLReserveToken (LST_elseTOKEN, "else");
00778 (void) LSLReserveToken (LST_enumerationTOKEN, "enumeration");
00779 (void) LSLReserveToken (LST_equationsTOKEN, "equations");
00780 (void) LSLReserveToken (LST_exemptingTOKEN, "exempting");
00781 (void) LSLReserveToken (LST_forTOKEN, "for");
00782 (void) LSLReserveToken (LST_generatedTOKEN, "generated");
00783 (void) LSLReserveToken (LST_impliesTOKEN, "implies");
00784 (void) LSLReserveToken (LST_includesTOKEN, "includes");
00785 (void) LSLReserveToken (LST_introducesTOKEN, "introduces");
00786 (void) LSLReserveToken (LST_ofTOKEN, "of");
00787 (void) LSLReserveToken (LST_partitionedTOKEN, "partitioned");
00788 (void) LSLReserveToken (LST_thenTOKEN, "then");
00789 (void) LSLReserveToken (LST_traitTOKEN, "trait");
00790 (void) LSLReserveToken (LST_tupleTOKEN, "tuple");
00791 (void) LSLReserveToken (LST_unionTOKEN, "union");
00792 }
00793
00794 void
00795 lscanLineReset (void)
00796 {
00797 }
00798
00799 void
00800 lscanLineCleanup (void)
00801 {
00802 }
00803
00804 charCode lscanCharClass (char c)
00805 {
00806 return charClass[(int)(c)].code;
00807 }
00808
00809 bool LSLIsEndComment (char c)
00810 {
00811 return charClass[(int)(c)].endCommentChar;
00812 }
00813
00814 void lsetCharClass (char c, charCode cod)
00815 {
00816 charClass[(int)(c)].code = cod;
00817 }
00818
00819 void lsetEndCommentChar (char c, bool flag)
00820 {
00821 charClass[(int)(c)].endCommentChar = flag;
00822 }