xml - 我的 xml 的 BNF 语法

标签 xml grammar bnf

我编写了简单的类代码生成器,它基于 xml 文件创建代码。

xml 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<classes>
    <class name="Klient">
        <attr type="int">id</attr>
        <attr type="String">imie</attr>
        <attr type="String">nazwisko</attr>
        <attr type="Date">dataUr</attr>
    </class>
    <class name="Wizyta">
        <attr type="int">id</attr>
        <attr type="Klient">klient</attr>
        <attr type="Date">data</attr>
    </class>
</classes>

如果我想将这个简单的 xml 定义为 BNF 语法,它会是什么样子?

最佳答案

这取决于您希望语法有多宽松。例如,做出一些明确的假设:

data       -> version '<classes>' classes '</classes>'
version    -> '<?xml version=' quotedString 'encoding=' quotedString '?>'
classes    -> '<class name=' quotedString '>' attributes '</class>' classes
attributes -> '<attr type=' quotedString '>' string '</attr>' attributes

(quotedString 和 string 是终结符,所有其他终结符都在引号之间)

请注意如何从上面的语法中消除一些产生式,但这不会提高可读性。

至于该语法的实际用法:考虑使用 XML 解析库,这可能比使用实际的解析器生成器容易得多(更不用说手动实现了)。

关于xml - 我的 xml 的 BNF 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273710/

相关文章:

java - 如何解码未包装的集合以使用 jaxb 进行映射

prolog - 在 Prolog 中连接字符串列表

python - python 样式结构的 BNF 语法

ANTLR,如何在ANTLR中转换BNF、EBNF数据?

iphone - 如何从字典中检索数组,然后在该数组中检索字典?

java - 第二个 Activity 的 TextView 内的文本超出了屏幕,但适用于更大的显示屏手机

Python 的 libxml2 无法解析 unicode 字符串

grammar - 解析树和语法信息

grammar - 创建 "Context Free Grammar"的提示

xml - 可以自动将 ABNF 转换为 XML 吗?