だから、私はさまよい続けており、オープンソースのアセンブラーコマンドlexemアナライザー(TinyPGの実装かもしれません)が必要になったと確信しています。
私が知りたいのは、与えられたテキストがアセンブラーコードである可能性があることをアプリに理解させる方法です。例えば
mov ah, 37
受け入れる必要がありますが、
bad my 42
いけない。
自己実装に関するアドバイスも歓迎します。「ハードコア」な実装を理解できるかどうかわからないからです。
かなり正確な識別のために、行が正規表現と一致することを確認することは問題ありません。これは実際には、ファイルの内容が読み取られ、トークンが識別される、コンパイラの最初のステップであるスキャン フェーズと非常によく似ています。次のステップ - 実際の構文解析はもっと複雑です (ただし、アセンブラーにとってはそれほど複雑ではありません)。
正規表現の例は次のようになります。
^[ \t]*((mov|xor|add|mul)[ \t]*([abcde][xhl]|[cd]s)[ \t]*,)|jmp[ \t]*([abcde][xhl]|[cd]s|[0-9A-F]*)[ \t]*$
最初に 2 つのパラメーターを持つ有効な命令をチェックし、次にパラメーターの存在をチェックし、続いて単一のパラメーター命令の代替をチェックし、次に別のパラメーター (2 番目のパラメーターとして有効な数値定数を含む) の存在をチェックします。