我对C很陌生,不过我已经学过C和C#以及其他一些小语言。我的问题是:如何检查HTML文件是否具有正确的语法?我的意思是:
<html><head></head><body>random stuff
和
<tag></tag>random stuff</body></html>
我想要堆叠,但我迷路了。通过char读取文件char并放入这么多if
s。
有谁知道我怎么写这个?正如我所说,我是C的新手所以如果你能在你的解释中附上一些代码,我们将非常感激。谢谢!
答案 0 :(得分:3)
您需要为HTML编写一个简单的Lexer和Parser。
查看Lex(或Flex)和Yacc(或Bison)以及如何使用它们。
有关旧版HTML Simple Yacc Grammar for HTML
的简单Yacc语法,请参阅此内容以下是另一个简单的XML解析器:XML Grammar和XML 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验证器