1

基本的に、特定の bibtex データベースを照会できるように、bibtex ファイル用のコンパイラを作成する必要があります。今では、オートマトン、文法、SLR、LR(1)、LALR 解析など、理論の特定の側面に精通しています。しかし、私はそれを適用したことがないので、その理論的かつ抽象的なすべてをまだ見つけています。誰かがコンパイラを構築するために必要な確実な手順を概説できれば、非常に役立ちます. 私はおそらく flex と bison/yacc を使用することになるので、設計プロセスがどのように進むのか、どの段階でどのファイルが生成されるのか、各段階でどのような出力が得られるのか、そして一般的に物事がどのように結びついているのかを教えていただければ、おそらく、物事がどのように行われるかについて、より実用的な見方を得ることができます...

ありがとう!

4

2 に答える 2

1

私はコンパイラの専門家ではありませんが、この本が実際にコンパイラを書きたいと思っている人にとって必読であると考えられていることは知っています。はい、表紙は時代遅れですが、私が読んだ限りでは、コードのコンパイルに関連する多くの優れたパターンがまだあります。

http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886

于 2011-03-16T22:21:52.247 に答える
1

bibtex データベースを実行可能なものにコンパイルしますか? クエリだけが必要な場合は、bibtex データベースをリレーショナル データベースに変換し、SQL でクエリを実行する方が理にかなっています。もちろん、最初に bibtex を解析し、それから SQL コードを生成する必要があります。これを「コンパイル」と呼ぶ人もいますが、前述の Dragon Book のものよりもはるかに複雑ではありません。

Bibtex 構文は非常に簡単なので、任意の解析アプローチを選択できます。私は、そのような些細な文法のためにパーサージェネレーターを使用することさえ気にせず、代わりに再帰降下パーサーを書き留めます。選択した言語によっては、非常に簡単な場合があります (たとえば、Parsec で Haskell を使用している場合、または C# を使用している場合)。

追加の目標が bison や flex などの時代遅れのツールを学習することである場合、もちろん、彼らもその仕事をしてくれますが、それはやり過ぎです。

編集: 古典的な lex/yacc アプローチに関する最も実用的な読み物はhttp://en.wikipedia.org/wiki/The_Unix_Programming_Environmentです

于 2011-03-17T11:13:56.933 に答える