1.コンパイルプロセス
1.1字句解析
レクサーのタスクは、変換することですキャラクターストリームに変換トークンストリーム。
字句エラーには、不正な文字、キーワードまたは識別子のスペルミスが含まれます。
字句解析フェーズでは、ソースプログラムを構成する文字セットをスキャンして分解し、プログラムを構成する文字セット内の文字によって形成される記号が、構築規則に従ってプログラミング言語の要件に準拠しているかどうかを分析します。
1.2構文解析
パーサーは、文法規則に従ってトークンストリーム内の構造(句、文)を認識し、構造を正しく反映できる文法ツリーを構築します。文法分析では、主に文の構造が文法規則に準拠しているかどうかをチェックします。文法エラーには、括弧の不一致、セミコロンの欠落などがあります。
1.3セマンティック分析
セマンティック分析:ソースプログラムにセマンティックエラーがないか確認します。言語仕様に準拠していない場合、プログラムはエラーを報告します。プログラミング言語のセマンティクスは、静的セマンティクスと動的セマンティクスに分けられます。静的セマンティクス分析方法は、文法に基づく翻訳です。基本的な考え方は、属性の形式で言語構造のセマンティクスを、構造を表す文法シンボルに割り当てることです。 、および属性の計算はセマンティクスに基づいています。ルールの形式は、文法の生成を提供します。
1.4中間コード生成
中間コード生成は、中間コードを生成するプロセスです。いわゆる「中間コード」とは、構造が単純で意味が明確な表記法であり、ソースプログラム言語と機械語の間に複雑さがあり、オブジェクトコードへの変換も容易です。さらに、マシンに依存しない最適化を中間コードレベルで実行できます。
1.5コードの最適化
この段階では、生成されたオブジェクトコードをより効率的にするため、つまり時間とスペースを節約するために、前の段階の中間コードを変換または変換します。
1.6オブジェクトコードの生成
最適化された中間コードまたは命令コードまたはアセンブリコードを変換するオブジェクトコード生成
1.7シンボルテーブル
プログラムをコンパイルするプロセスでは、シンボルテーブルの機能は、セマンティクスとコード生成の正確性チェックを支援するために、ソースプログラム内の各シンボルの必要な情報に言及して記録することです。
2. 文法
2.1文法の定義
言語を記述したいときは、この言語のすべての文を与える必要があります。文の数が有限で可算である場合は、それらすべてをリストする必要があります。文が無限集合である場合、つまり、無限で数えられない場合は、それらすべてをリストする必要があります。それらの構造、または文の構成の規則を表すことができる説明を与えるため。このルールは文法です。
構造を記述および指定するために正式に使用されるのは、文法(または文法)と呼ばれます。
文法の定義は次のとおりです。
文法Gは、4重(VN、VT、P、S)として定義されます。ここで、VNは非終端記号のセットとVT終端記号のセットです。Pは生成の組み合わせです。Sは識別子または開始と呼ばれます。記号であり、非終端記号でもあります。ターミネータ。少なくとも1つのプロダクションの左側に表示される必要があります。
いくつかの名詞が表示されます。終端記号、非終端記号、プロダクション、識別子/開始記号などです。これらの名詞と文法の定義について詳しく話しましょう。
VNは、非終端記号のセットです。非終端記号Nは、分割可能な文字または文字列を指します。再帰的な定義を採用しています。非終端記号は、終端記号と少なくとも1つの非終端記号で構成される文字列です。終端記号。これに対応して、終端記号は、言語で使用される分離できない文字です。したがって、VNに格納されるのはすべて非終端記号であり、VTに格納されるのはすべて終端記号です。
簡単に言うと、終端記号は終端記号に推定され、推定することはできません。非終端記号は引き続き推定できます。
2.2文法の種類
文脈自由文法
文脈自由文法は、形式言語理論における重要な変形文法です。文脈自由言語を記述するために使用されます。Chomsky階層ではタイプ2文法と呼ばれます。プログラミング言語の文法は基本的に文脈自由文法であるため、文脈自由文法が広く使われています。
3.構文理解ツリー
補充する
コンパイルモードでは、コンパイルプロセスはソースプログラムと同等のターゲットプログラムを生成し、ソースプログラムもコンパイルプログラムもターゲットプログラムの実行プロセスに参加しません。解釈プロセス中に生成されるのは、ソースプログラムのターゲットプログラムではなく、中間コードです。
4.有限オートマトン
5.正式なフォーム
文法の派生と通常の形式の例
1.
質問1への回答:(1)D(2)C2
.質問2
6.プログラミング言語の基礎
6.1式
プレフィックス式:プレフィックス式は括弧なしの算術式です。インフィックス式とは異なり、演算子は前に記述され、オペランドは後ろに記述されます。その発明者であるポーランドの数学者ヤン・ルカシェヴィッチに敬意を表して、接頭辞の表現は「ポーランド語」とも呼ばれます。たとえば、-1 + 2 3は、1-(2 + 3)と同等です。
接頭辞式は非常に便利な式です。中置式を接頭辞式に変換した後、中置式のすべての操作は、popとpushの2つの簡単な操作だけで完全に解決できます。
たとえば、(a + b)(c + d)は、+、a、b、+、c、dに変換されます。
次のプレフィックス式の操作方法は次のとおりです。現在の文字(または文字列)が数値または変数の場合はスタックにプッシュされます。演算子の場合は、スタックの上位2つの要素がポップされます。スタックと対応する操作が実行され、結果がスタックにプッシュされます。プレフィックス式のスキャンが終了すると、スタックにあるのはインフィックス式の操作の最終結果です。中置操作の手順を比較すると、コンピューターでの接頭辞操作の利点を見つけることは難しくありません。
中置式は、(3 + 4)×5-6などの一般的な演算式です。
接尾辞式:接尾辞式は接頭辞式から派生します。接頭辞と接尾辞式を区別するために、通常、接尾辞式は逆ポーランド語式と呼ばれます。接頭辞式は一般的に使用されないため、接尾辞式は時々呼ばれます。ポーランド語の表現。
例:
6.2関数呼び出し
関数呼び出しへの値渡しおよび参照渡し
6.3プログラミング言語の機能
Lisp言語は関数型プログラミング言語であり、人工知能の分野でアプリケーションを長い間独占してきました。再帰はLisp言語で広く使用されています。
XML(Extensible Markup Language)1.0標準は、1998年2月10日にリリースされ、HTMLおよびJavaプログラミング言語に続くもう1つの画期的なインターネットテクノロジと見なされています。XMLは、HTMLの記述機能を強化し、複雑な数式、化学反応式などの非常に複雑なWebページを記述できます。
PHP:PHPは、HTMLドキュメントを埋め込むサーバー側の実装です。スクリプト言語、その言語スタイルはC言語に似ています。
6.4中間コード
中間コードの役割は、プログラムの構造をロジックでより単純かつ明確にすること、特にターゲットコードの最適化をより簡単に実現できるようにすることです。中間コードには多くの形式があり、一般的なものは逆ポーランド記法(サフィックス型)、4次型、3次型です。その共通の特徴は、特定のマシンとは関係がなく、特定のコンピューターに依存しないことです。
からのメモの要約:ソフトウェアデザイナー試験チュートリアル