%{
#define NUM 300
#define ID 301
#define STRING 302
union {
int ival;
char name [30];
char str [80];
} yylval;
#include <string.h>
extern int atoi (const char *);
%}
%option noyywrap
/* exclusive start condition -- deals with C++ style comments */
%x COMMENT
%%
[0-9]+ { yylval.ival = atoi (yytext); return NUM; }
eps* [1-5] (eps u . [0-9]) credits
3.5
[a-zA-Z][a-zA-Z0-9]* { strcpy (yylval.name, yytext); return ID; }
\"([^\\"\n]|\\.)*\" { strcpy (yylval.str, yytext); return STRING; }
[\n\t\r ]+ /* skip white space */
"//" { BEGIN (COMMENT); }
<COMMENT>.+ /* skip comment */
<COMMENT>\n { /* end of comment --> resume normal processing */
BEGIN (0); }
. { fprintf (stderr, "unrecognized token %c\n", yytext[0]); }
%%
int main (int argc, char **argv)
{
int token;
if (argc != 2) {
fprintf(stderr, "Usage: <run file> <input file>\n");
exit (1);
}
yyin = fopen (argv[1], "r");
while ((token = yylex ()) != 0)
switch (token) {
case NUM
: printf
("
NUMBER : %d\n", yylval.ival); break;
case ID: printf ("ID : %s\n", yylval.name);
break;
case STRING: printf ("STRING: %s\n", yylval.str);
break;
default: fprintf (stderr, "error ... \n"); exit (1);
}
fclose (yyin);
exit (0);
}
JXsKI2RlZmluZSBOVU0gMzAwCiNkZWZpbmUgSUQgMzAxCiNkZWZpbmUgU1RSSU5HIDMwMgoKdW5pb24gewogIGludCBpdmFsOwogIGNoYXIgbmFtZSBbMzBdOwogIGNoYXIgc3RyIFs4MF07Cn0geXlsdmFsOwoKI2luY2x1ZGUgPHN0cmluZy5oPiAKCmV4dGVybiBpbnQgYXRvaSAoY29uc3QgY2hhciAqKTsKJX0KCiVvcHRpb24gbm95eXdyYXAKCi8qIGV4Y2x1c2l2ZSBzdGFydCBjb25kaXRpb24gLS0gZGVhbHMgd2l0aCBDKysgc3R5bGUgY29tbWVudHMgKi8gCiV4IENPTU1FTlQKCiUlCgpbMC05XSsgICB7IHl5bHZhbC5pdmFsID0gYXRvaSAoeXl0ZXh0KTsgcmV0dXJuIE5VTTsgfQoKZXBzKiBbMS01XSAoZXBzIHUgLiBbMC05XSkgY3JlZGl0cwoKMy41CgpbYS16QS1aXVthLXpBLVowLTldKiAgICAgICB7IHN0cmNweSAoeXlsdmFsLm5hbWUsIHl5dGV4dCk7IHJldHVybiBJRDsgfQoKXCIoW15cXCJcbl18XFwuKSpcIiB7IHN0cmNweSAoeXlsdmFsLnN0ciwgeXl0ZXh0KTsgcmV0dXJuIFNUUklORzsgfQoKW1xuXHRcciBdKyAgLyogc2tpcCB3aGl0ZSBzcGFjZSAqLwoKIi8vIiAgICAgICB7IEJFR0lOIChDT01NRU5UKTsgfQoKPENPTU1FTlQ+LisgLyogc2tpcCBjb21tZW50ICovCjxDT01NRU5UPlxuIHsgIC8qIGVuZCBvZiBjb21tZW50IC0tPiByZXN1bWUgbm9ybWFsIHByb2Nlc3NpbmcgKi8KICAgICAgICAgICAgICAgIEJFR0lOICgwKTsgfQoKLiAgICAgICAgICB7IGZwcmludGYgKHN0ZGVyciwgInVucmVjb2duaXplZCB0b2tlbiAlY1xuIiwgeXl0ZXh0WzBdKTsgfQoKJSUKCmludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKICAgaW50IHRva2VuOwoKICAgaWYgKGFyZ2MgIT0gMikgewogICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiA8cnVuIGZpbGU+IDxpbnB1dCBmaWxlPlxuIik7CiAgICAgIGV4aXQgKDEpOwogICB9CgogICB5eWluID0gZm9wZW4gKGFyZ3ZbMV0sICJyIik7CgogICB3aGlsZSAoKHRva2VuID0geXlsZXggKCkpICE9IDApCiAgICAgc3dpdGNoICh0b2tlbikgewoJIGNhc2UgTlVNOiBwcmludGYoIk5VTUJFUiA6ICVkXG4iLCB5eWx2YWwuaXZhbCk7CgkgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElEOiAgICAgcHJpbnRmICgiSUQgIDogJXNcbiIsIHl5bHZhbC5uYW1lKTsKCSAgICAgICAgICAgICAgYnJlYWs7CgkgY2FzZSBTVFJJTkc6IHByaW50ZiAoIlNUUklORzogJXNcbiIsIHl5bHZhbC5zdHIpOwoJICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDogICAgIGZwcmludGYgKHN0ZGVyciwgImVycm9yIC4uLiBcbiIpOyBleGl0ICgxKTsKICAgICB9IAogICBmY2xvc2UgKHl5aW4pOwogICBleGl0ICgwKTsKfQoK
MTAwMDYgJmxkcXVvO0ludHJvIHRvIENvbXBTY2kmcmRxdW87IDUgQi5TYy4gU29mdHdhcmUKMTAxMTcgJmxkcXVvO0RhdGEgU3RydWN0dXJlcyZyZHF1bzsgNSBCLlNjLiBTb2Z0d2FyZQo0MDEyMCAmbGRxdW87RGF0YWJhc2VzJnJkcXVvOyAzLjUgQi5TYy4gTWFuYWdlbWVudCBFbGVjdGl2ZQo2MDE2NSAmbGRxdW87QXV0b25vbW91cyB2ZWhpY2xlcyZyZHF1bzsgTS5TYy4gTWVjaGFuaWNhbCBlbGVjdGl2ZQ==
10006 “Intro to CompSci” 5 B.Sc. Software
10117 “Data Structures” 5 B.Sc. Software
40120 “Databases” 3.5 B.Sc. Management Elective
60165 “Autonomous vehicles” M.Sc. Mechanical elective