为什么不能使用上下文无关语法定义类似 XML 的元素?
Why is it not possible to define an XML like element using a context free grammar?
任何人都可以向我解释为什么不能使用上下文无关语法(乔姆斯基、EBNF 或语法图表)定义类似 XML 的元素吗?
This thread 说:
XML is a language defined by SGML, which is a restricted form of context free grammar (essentially a Dyck language with many types of parentesis)
实际上,XML 是一种上下文无关的语言,可以用任何能够解析 CFL 的语言来解析。 CFL 是乔姆斯基 2 级。
实际上已经完成了。 W3 使用 EBNF 表示法 "completely describe"(或定义)XML:
symbol ::= expression
XML 的子集,称为终端(树的 "leaves"),可以使用简单的正则表达式进行解析。我什至不是在谈论现代正则表达式(例如在 Perl、PCRE 甚至 Java 中发现的正则表达式)。
Symbols are written with an initial capital letter if they are the start symbol of a regular language, otherwise with an initial lowercase letter.
还有一个website使用BNF解析XML。 (BNF 读起来有点混乱,尤其是在处理 XML 时,因为它的语法也使用尖括号。)
任何人都可以向我解释为什么不能使用上下文无关语法(乔姆斯基、EBNF 或语法图表)定义类似 XML 的元素吗?
This thread 说:
XML is a language defined by SGML, which is a restricted form of context free grammar (essentially a Dyck language with many types of parentesis)
实际上,XML 是一种上下文无关的语言,可以用任何能够解析 CFL 的语言来解析。 CFL 是乔姆斯基 2 级。
实际上已经完成了。 W3 使用 EBNF 表示法 "completely describe"(或定义)XML:
symbol ::= expression
XML 的子集,称为终端(树的 "leaves"),可以使用简单的正则表达式进行解析。我什至不是在谈论现代正则表达式(例如在 Perl、PCRE 甚至 Java 中发现的正则表达式)。
Symbols are written with an initial capital letter if they are the start symbol of a regular language, otherwise with an initial lowercase letter.
还有一个website使用BNF解析XML。 (BNF 读起来有点混乱,尤其是在处理 XML 时,因为它的语法也使用尖括号。)