Annotation of researchv10no/cmd/kasb/kas0.l, revision 1.1

1.1     ! root        1: /*     @(#)kas0.l      1.1     */
        !             2: %%
        !             3: %{
        !             4:        struct symtab *op;
        !             5:        static struct symtab tmplab;
        !             6: %}
        !             7: [ \t]  ;
        !             8: "/*"   {
        !             9:        char c;
        !            10: 
        !            11:        while(c=input()) {
        !            12:                if (c=='\n')
        !            13:                        lineno++;
        !            14:                else if (c=='*')
        !            15:                        if ((c=input())=='/')
        !            16:                                break;
        !            17:                        else
        !            18:                                unput(c);
        !            19:        }
        !            20:        }
        !            21: [\._a-zA-Z][0-9\._a-zA-Z]*     {
        !            22:        if ((op = *lookup(1))->type&XTAG) {
        !            23:                yylval.sym = op;
        !            24:                return(op->type&~XTAG);
        !            25:        } else {
        !            26:                yylval.sym = op;
        !            27:                if ((op->type&XTYPE)==XUNDEF)
        !            28:                        return(UNAME);
        !            29:                else    return(DNAME);
        !            30:        }
        !            31:        }
        !            32: [0-9][bf]      {
        !            33:        op = &loclab[yytext[0]-'0'];
        !            34:        if (yytext[1]=='b') {
        !            35:                if (op->name[0]==0)
        !            36:                        yyerror("undefined numeric label");
        !            37:                tmplab.value = op->type;
        !            38:                tmplab.type = XTEXT;
        !            39:                yylval.sym = &tmplab;
        !            40:                return(DNAME);
        !            41:        } else {
        !            42:                yylval.sym = op;
        !            43:                return(TNAME);
        !            44:        }
        !            45:        }
        !            46: 0[0-7]*        {
        !            47:        sscanf(yytext, "%o", &yylval.ival);
        !            48:        return(INT);
        !            49:        }
        !            50: 0[xX][0-9a-fA-F]+      {
        !            51:        sscanf(&yytext[2], "%x", &yylval.ival);
        !            52:        return(INT);
        !            53:        }
        !            54: [1-9][0-9]*    {
        !            55:        sscanf(yytext, "%d", &yylval.ival);
        !            56:        return(INT);
        !            57:        }
        !            58: "\n"   return(NL);
        !            59: "%"    return(POP);
        !            60: "("    return(LP);
        !            61: ")"    return(RP);
        !            62: "*"    return(MUL);
        !            63: "/"    return(DIV);
        !            64: "++"   return(INC);
        !            65: "+"    return(PLUS);
        !            66: "-"    return(MINUS);
        !            67: ","    return(CM);
        !            68: ":"    return(COLON);
        !            69: ";"    return(SEMI);
        !            70: "|"    return(BAR);
        !            71: "~"    return(NOT);
        !            72: "&"    return(AND);
        !            73: ">>"   return(RS);
        !            74: "<<"   return(LS);
        !            75: "^"    return(XOR);
        !            76: ^!.*   {
        !            77:        system(&yytext[1]);
        !            78:        printf("!\n");
        !            79:        }
        !            80: ^#.*\n {
        !            81:        if (sscanf(&yytext[1], "%d%*[\" ]%[^\"\n]", &lineno, infile = instr)<1)
        !            82:                yyerror("illegal preprocessor line");
        !            83:        }
        !            84: '\\.'  {
        !            85:        switch(yytext[2]) {
        !            86:        case  '0':
        !            87:                yylval.ival = 0;
        !            88:                break;
        !            89:        case 'b':
        !            90:                yylval.ival = 010;
        !            91:                break;
        !            92:        case 't':
        !            93:                yylval.ival = 011;
        !            94:                break;
        !            95:        case 'n':
        !            96:                yylval.ival = 012;
        !            97:                break;
        !            98:        case 'f':
        !            99:                yylval.ival = 014;
        !           100:                break;
        !           101:        case 'r':
        !           102:                yylval.ival = 015;
        !           103:                break;
        !           104:        default:
        !           105:                yylval.ival = yytext[2];
        !           106:        }
        !           107:        return(INT);
        !           108:        }
        !           109: '.'    {
        !           110:        yylval.ival = yytext[1];
        !           111:        return(INT);
        !           112:        }
        !           113: \"[^"\n]*\"    {
        !           114:        yytext[yyleng-1] = '\0';
        !           115:        strcpy(dbstr, &yytext[1]);
        !           116:        yylval.str = dbstr;
        !           117:        return(STR);
        !           118:        }
        !           119: .      {
        !           120:        yyerror("Illegal character");
        !           121:        return(NOCHAR);
        !           122:        }
        !           123: %%

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.