首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javacc中的Html解析

javacc中的Html解析
EN

Stack Overflow用户
提问于 2015-09-21 06:46:55
回答 1查看 540关注 0票数 0

我对javacc很陌生,并被要求使用javacc代码扩展一个基本的html解析。我的问题是-- <script>包含许多字符--比如><,它们都有其他定义。例如- if(indexOf("?")) > 3。我读过关于词汇状态的文章,但不太理解。

有人能让我知道如何才能对一个字符有多个定义吗?用一个例子来解释会对我很有帮助。

解析上面提到的例子真的需要吗?你怎么会忽视这些细节?

另外,对于为搜索引擎进行基本解析的人来说,某些标记(如<style> )是必需的吗?如果没有,那么如何完全忽略javacc中的标记?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-28 18:49:04

假设只允许在标记和结束标记中使用"<“和">”。除了在<script></script>标记之间,它们应该被允许。以下几点应该可以做到

代码语言:javascript
复制
// In default state, "<script>" changes to IN_SCRIPT state
TOKEN : { <SCRIPT_TAG : "<script>" > : IN_SCRIPT }
// In both states "</script>" is recognized and goes to DEFAULT state. 
<*> TOKEN : { <END_SCRIPT_TAG : "<script>" > : DEFAULT }
// Other tags and end tags are only recognized in the default state.
TOKEN : { <OTHER_TAG : "<" (["a"-"z"])* ["/"] ">" > }
TOKEN : { <END_OTHER_TAG : "</" (["a"-"z"])* ">" > }
// Characters not in scripts, tags, or end tags
TOKEN : { <CHAR : ~["<",">"] }
// Characters in scripts
<IN_SCRIPT> TOKEN : { <CHAR_IN_SCRIPT : ~[] }
// Characters not allowed
TOKEN : { <UNEXPECTED_CHARACTER : ~[] }

如果希望抛出TokenManagerError而不是ParseException,则省略最后一条规则,其抛出值小于或大于出现在不应该出现的位置的符号。

这个答案仅仅是为了说明词汇状态的使用。它并不是为了反映HTML中关于小于和大于符号的规则,我不知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32688919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档