Java 定义模式/语法并对其进行解析和实例
我想知道是否有一个Java库,我可以用它来定义一个模式,然后如果我有一个该模式的实例,解析它 我的意思是,模式应该是这样的:Java 定义模式/语法并对其进行解析和实例,java,parsing,schema,grammar,Java,Parsing,Schema,Grammar,我想知道是否有一个Java库,我可以用它来定义一个模式,然后如果我有一个该模式的实例,解析它 我的意思是,模式应该是这样的: string: [a-zA-Z]+ number: [1-9][0-9]* attribute: "attribute " name: string " " type: string :: MyParser.newAttribute(name, type) node: "node " name: string " {" :: MyParser.newNode($nam
string: [a-zA-Z]+
number: [1-9][0-9]*
attribute: "attribute " name: string " " type: string :: MyParser.newAttribute(name, type)
node: "node " name: string " {" :: MyParser.newNode($name)
attribute+
"}" :: MyParser.closeNode()
node+
node MyNode {
attribute myAttribute1 Int
attribute myAttribute2 Long
}
node SecondNode {
attribute x String
}
然后模式的一个实例将如下所示:
string: [a-zA-Z]+
number: [1-9][0-9]*
attribute: "attribute " name: string " " type: string :: MyParser.newAttribute(name, type)
node: "node " name: string " {" :: MyParser.newNode($name)
attribute+
"}" :: MyParser.closeNode()
node+
node MyNode {
attribute myAttribute1 Int
attribute myAttribute2 Long
}
node SecondNode {
attribute x String
}
解析器将被生成,或者我不知道,但它的工作原理如下:
string: [a-zA-Z]+
number: [1-9][0-9]*
attribute: "attribute " name: string " " type: string :: MyParser.newAttribute(name, type)
node: "node " name: string " {" :: MyParser.newNode($name)
attribute+
"}" :: MyParser.closeNode()
node+
node MyNode {
attribute myAttribute1 Int
attribute myAttribute2 Long
}
node SecondNode {
attribute x String
}
- 每当它到达一个节点行时,就会调用MyParser.newNode方法
- 每当它到达属性行时,就会调用MyParser.newAttribute
- 每当它到达}行时,就会调用MyParser.closeNode