Tokenizer Part

    getsym()                tokenizer
        alpha(skipspc()))        alphabet
        digit()                  digit
        getch()                  get one char
        gsearch()                global name table search
        lsearch()                local name table search
        escape()                 \033, \n など
        getstring()              "aaaa"
        postequ()                += などの処理
    getch()
        getline()           get one line
    getline()
        macroeq()           Macro expansion
                            mc-parse.c.html#define

Parser Part

    main()                   メインルーチン
       init()                initialize 表等の初期化
       decl()                declare 宣言
         typespec()         型の宣言                       int
         decl0()             declare 宣言の本体             a[0],a;
         fdecl()             function 関数の宣言            int a() {
            decl()           local ローカル変数の宣言       int b;
            statement()      statement 文                   b = 1;
         def()               宣言されたオブジェクトの処理
    typespec()               type 型
       sdelc()               struct 構造体                struct
         decl()              struct 構造体の中の宣言
    decl0()                  * のついた宣言 (pointer)
       decl1()
    dec1()                   array 配列、variable name 変数名の定義
       decl0()               nested type 入れ子になった型
       cexpr(expr())         size of array 配列の大きさ
       adecl()               argument 引き数の宣言
    def()
       fcheck()              既に宣言されているか?
       expr1()               variable initilize 変数の初期化のための式の評価

文

    statement()              statement のコンパイル、以下、Cの基本構文
        doif() dowhile() dodo() dofor() doswitch()
        docomp() docase() dodefault() doreturn() dogoto() dolabel()
        bexpr()              branch expression   if(a) など
        gexpr(expr())        expression 普通の式、gexpr はコード生成

    expr()                   expression 式、これは木を返す
        rvalue(expr0())      のrvalue (right value)
    expr0()                  , で、つながった式
        expr1()
    expr1()                  =, +=, <<= など
        expr2()
    expr2()                  a?b:c 3項演算子
        expr3()
    expr3()                  ||
        expr4()
    expr4()                  &&
        expr5()
    expr5()                  |
        expr6()              
    expr6()                  ^
        expr7()
    expr7()                  &
        expr8()
    expr8()                  ==, !=
        expr9()
    expr9()                 <,>,<=,>=
        expr10()
    expr10()                <<,>>
        expr11()
    expr11()                +,-
        expr12()
    expr12()                *,%,/
        expr13()
    expr13()                ++,--,*p,|,-,~,!
        expr16()
        typename()          sizeof, (int)a
        expr14()
    expr14()                variable,"aaa",1234,
        expr15()
        expr13()
        expr0()             ()
        expr16()
    expr16()                array[]
        expr15()
        strop()             a.b, a->b
        ndecl0()
    expr15()                function(a,b,c)
    typename()              
        typespec()          (int *)
        ndecl0()                
    ndecl0()                * の処理
        ndecl1()
    ndecl1()                arrary[],function()
        cexpr(expr())
    bexpr()                 branch
        rexpr()             >,<,!=  条件分岐のための式
           gexpr()
    gexpr()                 コード生成 (この以下は、省略)
        gexpr()