<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD BNF 1.0//EN" "ParserObject.dtd">

<!--
	Here is an example grammar as BNF,
    with its corresponding Parser Object as XML
    	street address (start symbol is "street address")
-->

<!--
(*   A BNF Example: street address (start symbol is "street address")   *)
street address= house number, street id, quadrant;
house number  = integer;
street id     = ( street number | street name ), street type;
street number = integer;
street name   = terminal string;
street type   = "ST" | "AVE" | "RD" | "TR";
quadrant      = "NW" | "NE" | "SW" | "SE";
-->

<!--
	Here is an example grammar as BNF,
    with its corresponding Parser Object as XML
    	street address (start symbol is "street address")
-->
<Syntax file="StreetAddress.bnf" startsymbol="street address">

	<SyntaxRule id="street address">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
		                	<MetaIdentifier id="house number"/>
                    	</SyntacticPrimary>
                	</SyntacticFactor>
            	</SyntacticTerm>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
        		        	<MetaIdentifier id="street id"/>
                    	</SyntacticPrimary>
                	</SyntacticFactor>
            	</SyntacticTerm>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
		                	<MetaIdentifier id="quadrant"/>
                    	</SyntacticPrimary>
                	</SyntacticFactor>
            	</SyntacticTerm>
        	</SingleDefinition>
        </DefinitionsList>
    </SyntaxRule>

	<SyntaxRule id="house number">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
		                	<Terminal type="integer"/>
                    	</SyntacticPrimary>
                	</SyntacticFactor>
            	</SyntacticTerm>
        	</SingleDefinition>
    	</DefinitionsList>
    </SyntaxRule>

	<SyntaxRule id="street id">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<GroupedSequence>
                            	<DefinitionsList>
                                	<SingleDefinition>
                                    	<SyntacticTerm>
                                        	<SyntacticFactor int="1">
                                            	<SyntacticPrimary>
                                                	<MetaIdentifier id="street number"/>
                                                </SyntacticPrimary>
                                            </SyntacticFactor>
                                        </SyntacticTerm>
                                    	<SyntacticTerm>
                                        	<SyntacticFactor int="1">
                                            	<SyntacticPrimary>
                                                	<MetaIdentifier id="street name"/>
                                                </SyntacticPrimary>
                                            </SyntacticFactor>
                                        </SyntacticTerm>
                        			</SingleDefinition>
                                </DefinitionsList>
                            </GroupedSequence>

                            <SyntacticTerm>
                                <SyntacticFactor int="1">
                                    <SyntacticPrimary>
                                        <MetaIdentifier id="street type"/>
                                    </SyntacticPrimary>
                                </SyntacticFactor>
                            </SyntacticTerm>

                        </SyntacticPrimary>
					</SyntacticFactor>
                </SyntacticTerm>
        	</SingleDefinition>
    	</DefinitionsList>
    </SyntaxRule>

	<SyntaxRule id="street number">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
		                	<Terminal type="integer"/>
                    	</SyntacticPrimary>
                	</SyntacticFactor>
            	</SyntacticTerm>
        	</SingleDefinition>
    	</DefinitionsList>
    </SyntaxRule>

	<SyntaxRule id="street name">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
		                	<Terminal type="terminal string"/>
                    	</SyntacticPrimary>
                	</SyntacticFactor>
            	</SyntacticTerm>
        	</SingleDefinition>
    	</DefinitionsList>
    </SyntaxRule>

	<SyntaxRule id="street type">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="ST"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="AVE"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="RD"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="TR"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        </DefinitionsList>
    </SyntaxRule>

	<SyntaxRule id="quadrant">
    	<DefinitionsList>
        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="NW"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="NE"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="SW"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        	<SingleDefinition>
            	<SyntacticTerm>
                	<SyntacticFactor int="1">
                    	<SyntacticPrimary>
                        	<Terminal type="terminal string" value="SE"/>
                    	</SyntacticPrimary>
                    </SyntacticFactor>
                </SyntacticTerm>
            </SingleDefinition>

        </DefinitionsList>
    </SyntaxRule>

</Syntax>
