Flex を使用して独自の言語を構築していますが、いくつか知りたいことがあります。
- 字句解析器を使用する必要があるのはなぜですか?
- 彼らは何か私を助けるつもりですか?
- それらは義務ですか?
Flex を使用して独自の言語を構築していますが、いくつか知りたいことがあります。
字句解析は、語彙素を具体的な文字シーケンスではなく抽象的なエンティティとして扱うことができるため、構文解析を簡素化するのに役立ちます。
ただし、言語を構築するにはフレックス以上のものが必要になります。字句解析は最初のステップにすぎません。
入力文字列をスペースで区切られた文字列や数値に変換するときはいつでも、字句解析を実行しています。カスケード式の一連のelse if (strcmp (..)==0) ...
ステートメントを記述することは、字句解析としてカウントされます。sscanf や strtok などの厄介なツールでさえ、字句解析ツールです。
いくつかの理由のいずれかにより、上記のいずれかの代わりに flex のようなツールを使用する必要があります。
BNF(またはEBNF)を使用して言語(文法)を宣言的に記述し、パーサーを使用して言語で記述されたプログラムを解析し、メモリ内の構造に取得してから自由に操作してください。
必須ではなく、もちろん自分で書くこともできますが、それは言語がどれほど複雑で、車輪を再発明するのにどれだけの時間が必要かによって異なります。
また、字句解析器自体を変更せずに言語 (BNF) を使用して言語を記述することができるという事実により、多くの実験を行い、言語の文法を変更して、それが正確に機能するようになるまで続けることができます。