## Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0

==== The Grammars
See Archive for old, historical material.

master.jj - Template for SPARQL and ARQ
    cpp input to produce sparql.jj or arq.jj

sparql_11.jj - The SPARQL working group syntax
    This should be exactly the grammar in the SPARQL rec.
    Generates org.apache.jena.query.parser.sparql_11.SPARQLParser

arq.jj - The native query language of the query engine
    Generates org.apache.jena.query.parser.arq.ARQParser


sparql_10.jj - SPARQL 1.0, but updated to match internal chnages in ARQ.
    This should produce the grammar in the SPARQ 1.0/DAWG rec.
    Generates org.apache.jena.query.parser.sparql_10.SPARQLParser
    
Archive/sparql_10-REC.jj is original for the SPARQL 1.0 specification. 

Archive/rdql-arq.jjt
    RDQL for the ARQ query engine.
    Generates org.apache.jena.query.parser.rdql.RDQLParser

==== Making the parsers

See "grammar"
Note this runs cpp over master.jj to produce arq.jj or sparql.jj

==== Making the HTML

sparql_N.txt is produced by "grammar", used to make HTML.
We don't use jjdoc to produce HTML but instead get jjdoc to produce
its text form and process that, toegther with a hand-managed
token.txt file.

== Tokens

Run "jj2tokens sparql_11.jj > tokens.txt" to get a first pass at a tokens file.
Manually tidy, noting which to inline

Produce HTML suiatble for inclusion in the SPARQL recomendations.
Includes some hand-craft tidying up. 
  jj2html arq.txt tokens.txt 
