1

Lexファイルで使用されるyy.tab.hが作成されるため、Yaccファイルを最初に実行する必要があると先生が言っているのを聞いたことがあります。私はそれについて本当に混乱しています。これら2つのファイルを実行する正しい順序を知りたいですか?

4

2 に答える 2

1

yacc はパーサー ジェネレーターです。最初に必要です。次に、flex (字句解析ジェネレーター) を実行して、生成されたパーサーに依存する字句解析を生成する必要があります。そう

  1. ヤック
  2. フレックス

ここに例があります: http://www.usna.edu/Users/cs/lmcdowel/courses/si413/F10/labs/L04/calc1/ex1.html

于 2012-10-14T17:48:29.430 に答える
0

Lex は識別子や予約語、特殊文字などの文字列をトークンに変換するレクサーであり、yacc は一連のトークン (IDENTIFIER EQUAL IDENTIFIER SEMICOLON など) を処理できるパーサーです。コンパイル時にそれらを実行する順序についてはわかりませんが、違いはないと思います (試してみることができます;) が、コンパイラを実行する前に両方を実行する必要があります。

明らかに、実行時に lex によって生成されたコードは、yacc によって生成されたコードより前に実行されます。

于 2012-10-14T17:49:37.660 に答える