如何检查HTML文件是否具有正确的语法?

时间:2012-10-22 09:55:10

标签: html c syntax tags

我对C很陌生,不过我已经学过C和C#以及其他一些小语言。我的问题是:如何检查HTML文件是否具有正确的语法?我的意思是:

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

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

我想要堆叠,但我迷路了。通过char读取文件char并放入这么多if s。

听起来太复杂了

有谁知道我怎么写这个?正如我所说,我是C的新手所以如果你能在你的解释中附上一些代码,我们将非常感激。谢谢!

4 个答案:

答案 0 :(得分:3)

您需要为HTML编写一个简单的Lexer和Parser。

查看Lex(或Flex)和Yacc(或Bison)以及如何使用它们。

有关旧版HTML Simple Yacc Grammar for HTML

的简单Yacc语法,请参阅此内容

以下是另一个简单的XML解析器:XML GrammarXML Lexer

我的建议:不要从头开始写一切。使用预先存在的工具来帮助您按照自己的意愿行事。使用Lex和Yacc比手写lexer / parser

更不容易出错

答案 1 :(得分:1)

我认为使用堆栈是个好主意。您可以按照以下方法进行操作 1.读取缓冲区中的一行。 (假设您的HTML文件格式正确)
2.停在'&lt;'行中的字符。
3.读取另一个缓冲区中的字符,直到'&gt;'遇到了。
4.标签是否包含'/'。如果不是,转到5其他转到6.
5.将此标签推入堆栈。
6.从堆栈中弹出一个标签,并将其与刚刚读取的标签进行比较 7. GOTO 1直到完全读取文件为止

答案 2 :(得分:1)

你为什么这么问?您想要挑战还是只想检查您的HTML是否经过验证?如果是后者,您可以使用http://sourceforge.net/projects/w3cmarkupvalida/

它是用C#编写的,并使用W3 HTML Validator应用程序的API(http://validator.w3.org/)来验证HTML文档,如果它有效或没有错误,则作为响应接收警告。

您当然也可以直接使用http://validator.w3.org/ ...

答案 3 :(得分:0)

使用CSS / HTML验证器