奥州総奉行は、このように奥州合戦の戦後処理を契機として設置されたものであるが、建久2年（1191年）正月15日の鎌倉幕府の職制にも記されておらず、その後も特に大きな職限をもつような奥州奉行の存在は確認されていない。伊沢家景は建久4年（1193年）、将軍頼朝に献上された淡路国産の「九本足の異馬」を津軽外ヶ浜の地に放ち、翌年6月京都から鎌倉へ送検された獄囚数名を奥羽に流すなどの沙汰をしているが、これは頼朝の命を受けたものであった。建久6年（1195年）、家景は、平泉塔の修理と藤原秀衡未亡人の保護を葛西清重とともに命じられており、『吾妻鏡』建久6年9月3日条および9月29日条には、家景・清重の両人がその任にあたったのは「奥州惣奉行たるによってなり」と記している。ただし、これが葛西氏の「奥州惣（総）奉行」としての活動について記す唯一の文献資料である。兼任の乱以前の葛西氏の地位を明確に「奥州惣奉行」と記した史料は存在せず、可能性としては、伊沢・葛西両氏がならびたつ段階になってはじめて両者の通称として「奥州惣奉行」なる概念が発生したとも考えられ、また、葛西氏の子孫が先祖の名誉を誇って主張するようになったのではないかとも推測される。葛西清重は大河兼任の乱の鎮圧においては一時的に陸奥国の留守所を預かっている（『吾妻鏡』建久元年正月6日条）ものの、実際の鎮圧の際には足利義兼や千葉胤正の下で戦っており、一介の御家人以上の役目は与えられていなかった。また、梶原景時の失脚以降はもっぱら鎌倉の将軍周辺で活動しており、清重の子孫は引き続き陸奥国内に所領を有していたものの、その役割は陸奥国に所領を持つ普通の御家人以上の役割を担ったことを示す史料は確認されていない。これに対して、大河兼任の乱以降、陸奥国留守職に任じられた伊沢家景は勧農権・検断権を行使しており、伊沢家景こそが名実ともに「奥州惣奉行」に相応しい存在であったとする見方もある。また、家景の子孫に関しては、正嘉の飢饉の際に執権北条長時・連署北条政村より飢民の救済を命じる命令文書が陸奥留守殿（家景の孫の留守家広）に対して出されている（『鎌倉遺文』8347号）が、これと同じ文書が諸国の守護に対して出されていることが確認できる（『鎌倉遺文』8346号）他、宝治合戦後に奥州に逃亡した佐原秀連が討たれた報告も「留守介」が行っており、家景の子孫が留守職として家景の勧農権・検断権を継承していたことが確認できる。いずれにせよ、葛西氏は平泉の、伊沢（留守）氏は多賀城にあった既存権力のかかわりから現地支配を進めていったものと考えられる。平泉と多賀城の両所は、特に鎌倉時代初期の奥州にあってきわめて重要な役割を果たしたのである。
以下の文法はLL(1)形式のEBNFの例である（ニクラウス・ヴィルトのPL/0言語）。単純化のため、ident と number は終端記号とされている: program = block "." .  block =     ["const" ident "=" number {"," ident "=" number} ";"]     ["var" ident {"," ident} ";"]     {"procedure" ident ";" block ";"} statement .  statement =     [ident ":=" expression     | "call" ident     | "begin" statement {";" statement} "end"     | "if" condition "then" statement     | "while" condition "do" statement     ] .  condition =     "odd" expression     | expression ("="|"#"|"<"|"<="|">"|">=") expression     .  expression = ["+"|"-"] term {("+"|"-") term} .  term = factor {("*"|"/") factor} .  factor = ident | number | "(" expression ")" .終端記号は引用符で囲まれている（identとnumber以外）。各非終端記号は文法規則で定義されている。以下に示す予言的パーサが上記文法を正確に反映している点に注意されたい。各非終端記号に対応したプロシージャが存在している。構文解析はトップダウン的に行われ、全非終端記号が処理されるまで行われる。入力コード（プログラムの部分）の先頭の単語は大域変数 sym に格納されている。そして大域関数 getsym を使うことで sym を更新する。typedef enum {ident, number, lparen, rparen, times, slash, plus,    minus, eql, neq, lss, leq, gtr, geq, callsym, beginsym, semicolon,    endsym, ifsym, whilesym, becomes, thensym, dosym, constsym, comma,    varsym, procsym, period, oddsym} Symbol;Symbol sym;void getsym(void);void error(const char msg[]);void expression(void);int accept(Symbol s) {    if (sym == s) {        getsym();        return 1;    }    return 0;}int expect(Symbol s) {    if (accept(s))        return 1;    error("expect: unexpected symbol");    return 0;}void factor(void) {    if (accept(ident)) {        ;    } else if (accept(number)) {        ;    } else if (accept(lparen)) {        expression();        expect(rparen);    } else {        error("factor: syntax error");        getsym();    }}void term(void) {    factor();    while (sym == times || sym == slash) {        getsym();        factor();    }}void expression(void) {    if (sym == plus || sym == minus)        getsym();    term();    while (sym == plus || sym == minus) {        getsym();        term();    }}void condition(void) {    if (accept(oddsym)) {        expression();    } else {        expression();        if (sym == eql || sym == neq || sym == lss ||            sym == leq || sym == gtr || sym == geq) {            getsym();            expression();        } else {            error("condition: invalid operator");            getsym();        }    }}void statement(void) {    if (accept(ident)) {        expect(becomes);        expression();    } else if (accept(callsym)) {        expect(ident);    } else if (accept(beginsym)) {        do {            statement();        } while (accept(semicolon));        expect(endsym);    } else if (accept(ifsym)) {        condition();        expect(thensym);        statement();    } else if (accept(whilesym)) {        condition();        expect(dosym);        statement();    }}void block(void) {    if (accept(constsym)) {        do {            expect(ident);            expect(eql);            expect(number);        } while (accept(comma));        expect(semicolon);    }    if (accept(varsym)) {        do {            expect(ident);        } while (accept(comma));        expect(semicolon);    }    while (accept(procsym)) {        expect(ident);        expect(semicolon);        block();        expect(semicolon);    }    statement();}void program(void) {    getsym();    block();    expect(period);}