愚かな法学Python・続練習47:`bc`

1590 ワード

練習47:bc原文:Exercise 47:bc
ドラゴン
プロトコル:CC BY-NC-SA 4.0
グーグル翻訳を誇りに思う
あなたはウォーミングアップしてこの新しいプロジェクトを処理する準備をしなければなりません.私は通常、1、2日以内の2~3時間の会話でこれらのプロジェクトを完了すると仮定しますが、できるだけ多くのプロジェクトを実現することができます.
このプロジェクトは、第5部で学んだ内容を使用して、bcプログラムの言語を作成します.私たちはすでに36の練習の中で、bcのために簡単な数学の演算を実現しましたが、今はできるだけ多くのbc言語を実現します.bc多数の演算子、関数、および制御構造.あなたの目標は、再帰的な降下解析器に対する理解を使用して、それを徐々に実現することです.
私はあなたのスキャナーの構築に重点を置いて、スキャン、解析、分析から始めて、bcのサンプルコードを使ってテストします.このプロジェクトは巨大かもしれません.手動で言語を実現するためですが、できるだけ多くの文法を完成します.
チャレンジレッスンbc言語は数学演算を処理する能力だけではない.私は基礎数学の演算だけでなく、完全な言語はかなり強いです.関数を定義し、if文を使用して、他の多くの一般的なプログラミング構造を実現する能力があります.実装では、bc言語全体を実装することはできません.それは大きすぎるからです.逆に、これらのことを実現する必要があります.
  • すべての数学演算子
  • 変数
  • 関数
  • if
  • これは実際にはあなたがその言語を実現すべき順序です.まず、演算子をよく動作させ、解析させます.練習35で作成した簡単な実装を参考にして、スタートします.これが実装されると、変数が実装され、アナライザが変数の格納と取得を正しく処理する必要があります.最後に、関数を実装し、if文になります.
    GNUバージョンのbcのドキュメントを研究する必要があります.それは言語のかなり良い完全な説明を持っているので、それを実現することができます.彼らの多くはCからすべてをコピーし、他の多くの言語がそれに似ているため、不思議なことはありません.
    この挑戦を処理するには、時間と手順がかかります.言語を実現する素晴らしい点は、3つの段階の間で大きな反発を起こさずに、スキャンから解析から分析まで、実際に論理的に明確な順序で行うことができることです.
    最後に、再帰的な降下解析器を実現していることを覚えておいてください.実際にはコンピュータ科学解析の低レベルバージョンにすぎません.まともな解析作業をしている場合は、手書きではなく解析器ジェネレータを使用します.それらを手で書くのは興味深い挑戦であり、論理的にテキスト処理を構築する方法を学ぶ方法です.
    研究性学習bc言語を研究するためにgnuからorgは、ソースコードをキャプチャし、ファイルbc.ysbc.yおよびscan.lを検索する.これは困惑する可能性があるので、lexというツールとyaccというツールを研究します.