4

私は C と C# およびその他のいくつかのマイナーな言語を学びましたが、C にはまったく慣れていません。私の質問は、HTML ファイルの構文が正しいかどうかを確認するにはどうすればよいですか? つまり:

<html><head></head><body>random stuff

<tag></tag>random stuff</body></html>

スタックを作ろうと思ったけど迷う。ファイル char から char ごとに読み取り、非常に多くifの s を入れるのは複雑すぎるように思えます。

これを書く方法を知っている人はいますか?私が言ったように、私はCを初めて使用するので、説明にコードを添付していただければ幸いです。ありがとう!

4

4 に答える 4

3

HTML 用の簡単なレクサーとパーサーを作成する必要があります。

Lex (または Flex) と Yacc (または Bison) とそれらの使用方法を確認してください。

古いバージョンの HTML 用の単純な Yacc 文法については、これを参照してください。 HTML 用の単純な Yacc 文法

もう 1 つの単純な XML パーサーを次に示します。XML 文法XML レクサー

私のアドバイス: すべてを最初から書かないでください。既存のツールを使用して、やりたいことができるようにします。Lex と Yacc を使用すると、手書きのレクサー/パーサーよりもエラーが発生しにくくなります。

于 2012-10-22T09:57:56.017 に答える
2

なぜあなたはこれを求めているのですか?チャレンジが必要ですか、それともHTMLが検証されているかどうかを確認したいだけですか?後者の場合は、http://sourceforge.net/projects/w3cmarkupvalida/を使用できます。

これはC#で記述されており、W3 HTML Validatorアプリケーション(http://validator.w3.org/)のAPIを使用して、HTMLドキュメントを検証し、有効かどうか、およびエラーと警告を応答として受け取ります。

もちろん、http: //validator.w3.org/を直接使用することもできます...

于 2012-10-22T10:05:40.217 に答える
1

スタックを使用するのは良い考えだと思います。以下のアプローチに従うことができます
1.バッファ内の行を読み取ります。(HTMLファイルが適切にフォーマットされていると仮定します)
2。行の「<」文字で停止します。
3.'>'が検出されるまで、別のバッファーの文字を読み取ります。
4.タグに「/」が含まれていますか。いいえの場合は、5に進みます。それ以外の場合は6に進み
ます。5。このタグをスタックにプッシュします。
6.スタックからタグをポップし、読み取ったばかりのタグと比較します
。7.ファイルが完全に読み取られるまでGOTO1

于 2012-10-22T10:01:59.583 に答える
0

CSS/HTML バリデーターを使用する

于 2013-01-08T05:24:22.573 に答える