Annotation of 43BSD/contrib/icon/tran/mkkeytab.icn, revision 1.1.1.1

1.1       root        1: # mkkeytab - builds keyword.c, which is structure of keywords and
                      2: #  their identification numbers. also builds keyword.h, which has
                      3: #  defined constants giving keyword identification numbers.
                      4: #  input is list of keyword/identfication number pairs, (alphabetic
                      5: #  order-one pair per line) in file 'keywords', elements of a pair
                      6: #  are separated by one or more blanks or tabs.
                      7: 
                      8: procedure main(args)
                      9: local df, f, input, word, atab
                     10: 
                     11:    input := open("keywords") | stop("unable to open 'keywords'")
                     12:    f := open("keyword.c","w")
                     13:    df := open("../h/keyword.h","w")
                     14:    write(df,"/*")
                     15:    write(df," * Keyword definitions.")
                     16:    write(df," */\n")
                     17: 
                     18:    write(f, "#include \"../h/keyword.h\"")   # put out table header
                     19:    write(f, "#include \"sym.h\"")
                     20:    write(f, "")
                     21:    write(f, "/*")
                     22:    write(f, " * Keyword table.")
                     23:    write(f, " */")
                     24:    write(f, "")
                     25:    write(f, "struct keyent keytab[] = {")
                     26: 
                     27:    every                               # put out table body
                     28:       trim(!input) ?
                     29:          if word := tab(upto(' \t')) then {
                     30:             tab(many(' \t'))
                     31:             if *word < 6 then atab := "\t\t" else atab := "\t"
                     32:             write(df, "#define K_",ucase(word),atab,right(tab(0),2)) 
                     33:             write(f,"   \"",word,"\",\tK_",ucase(word),",")
                     34:             }
                     35:          else
                     36:             write(&errout, "bad input: ", &subject)
                     37: 
                     38:    write(f,"   \"\"\t\t-1")
                     39:    write(f, "   };")
                     40: 
                     41: end
                     42: 
                     43: procedure ucase(name)
                     44:    return map(name,&lcase,&ucase)
                     45: end

unix.superglobalmegacorp.com

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