#Processed by Id: cwm.py,v 1.185 2006/05/30 21:08:05 syosi Exp 
        #    using base file:/home/connolly/w3ccvs/WWW/2000/10/swap/grammar/
        
#  Notation3 generation by
#       notation3.py,v 1.187 2006/01/13 14:48:54 syosi Exp

#   Base was: file:/home/connolly/w3ccvs/WWW/2000/10/swap/grammar/
     @prefix : <http://www.w3.org/2000/10/swap/grammar/regex#> .
    @prefix g: <http://www.w3.org/2000/10/swap/grammar/ebnf#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix ttl: <http://www.w3.org/2000/10/swap/grammar/turtle#> .
    
     @forSome <#_g0>,
                <#_g1>,
                <#_g2>,
                <#_g3>,
                <#_g4>,
                <#_g5>,
                <#_g6>,
                <#_g7>,
                <#_g8>,
                <#_g9> .
    
    <ebnf2bnf.n3>     <http://purl.org/dc/elements/1.1/description> "$Id: turtle-bnf.n3,v 1.3 2006/06/21 00:54:44 connolly Exp $",
                """reduce EBNF to BNF;
i.e. rewrite ?, +, * operators using alt and seq
""";
         rdfs:seeAlso <ebnf>,
                <ebnf.n3>,
                <ebnf.rdf> .
    
    g:alt     rdfs:domain g:Production .
    
    g:seq     rdfs:domain g:Production .
    
    :alt     rdfs:domain :Regex .
    
    :diff     rdfs:domain :Regex .
    
    :matches     rdfs:domain :Regex .
    
    :opt     rdfs:domain :Regex .
    
    :rep     rdfs:domain :Regex .
    
    :seq     rdfs:domain :Regex .
    
    :star     rdfs:domain :Regex .
    
    ttl:ANON     a :Regex;
         rdf:value "45";
         rdfs:comment "[45]   ANON                    ::=   '[' WS* ']'";
         rdfs:label "ANON";
         :seq  (
        "["
         [
                 a :Regex;
                 :star ttl:WS ]
        "]" ) .
    
    ttl:BLANK_NODE_LABEL     a :Regex;
         rdf:value "28";
         rdfs:comment "[28]   BLANK_NODE_LABEL        ::=   '_:' NCNAME";
         rdfs:label "BLANK_NODE_LABEL";
         :seq  (
        "_:"
        ttl:NCNAME ) .
    
    ttl:BlankNode     a g:Production;
         rdf:value "24";
         rdfs:comment "[24]   BlankNode               ::=   BLANK_NODE_LABEL | ANON";
         rdfs:label "BlankNode";
         g:alt  (
        ttl:BLANK_NODE_LABEL
        ttl:ANON );
         g:nonTerminal ttl:language .
    
    ttl:BlankNodePropertyList     a g:Production;
         rdf:value "11";
         rdfs:comment "[11]   BlankNodePropertyList   ::=   '[' PropertyListNotEmpty ']'";
         rdfs:label "BlankNodePropertyList";
         g:nonTerminal ttl:language;
         g:seq  (
        "["
        ttl:PropertyListNotEmpty
        "]" ) .
    
    ttl:Collection     a g:Production;
         rdf:value "12";
         rdfs:comment "[12]   Collection              ::=   '(' GraphNode+ ')'";
         rdfs:label "Collection";
         g:nonTerminal ttl:language;
         g:seq  (
        "("
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:rep ttl:GraphNode;
                 g:seq  (
                ttl:GraphNode
                <#_g9> ) ]
        ")" ) .
    
    ttl:DECIMAL     a :Regex;
         rdf:value "33";
         rdfs:comment "[33]   DECIMAL                 ::=   [0-9]+ '.' [0-9]* | '.' [0-9]+";
         rdfs:label "DECIMAL";
         :alt  (
         [
                 a :Regex;
                 :seq  (
                 [
                         a :Regex;
                         :rep  [
                             a :Regex;
                             :matches "[0-9]" ] ]
                "."
                 [
                         a :Regex;
                         :star  [
                             a :Regex;
                             :matches "[0-9]" ] ] ) ]
         [
                 a :Regex;
                 :seq  (
                "."
                 [
                         a :Regex;
                         :rep  [
                             a :Regex;
                             :matches "[0-9]" ] ] ) ] ) .
    
    ttl:DOUBLE     a :Regex;
         rdf:value "34";
         rdfs:comment "[34]   DOUBLE                  ::=   [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT";
         rdfs:label "DOUBLE";
         :alt  (
         [
                 a :Regex;
                 :seq  (
                 [
                         a :Regex;
                         :rep  [
                             a :Regex;
                             :matches "[0-9]" ] ]
                "."
                 [
                         a :Regex;
                         :star  [
                             a :Regex;
                             :matches "[0-9]" ] ]
                ttl:EXPONENT ) ]
         [
                 a :Regex;
                 :seq  (
                "."
                 [
                         a :Regex;
                         :rep  [
                             a :Regex;
                             :matches "[0-9]" ] ]
                ttl:EXPONENT ) ]
         [
                 a :Regex;
                 :seq  (
                 [
                         a :Regex;
                         :rep  [
                             a :Regex;
                             :matches "[0-9]" ] ]
                ttl:EXPONENT ) ] ) .
    
    ttl:Directive     a g:Production;
         rdf:value "3";
         rdfs:comment "[3]    Directive               ::=   'PREFIX' QNAME_NS Q_IRI_REF";
         rdfs:label "Directive";
         g:nonTerminal ttl:language;
         g:seq  (
        "PREFIX"
        ttl:QNAME_NS
        ttl:Q_IRI_REF ) .
    
    ttl:ECHAR     a :Regex;
         rdf:value "40";
         rdfs:comment """[40]   ECHAR                   ::=   '\\' [tbnrf\\"']""";
         rdfs:label "ECHAR";
         :seq  (
        "\\"
         [
                 a :Regex;
                 :matches "[tbnrf\\\"']" ] ) .
    
    ttl:EXPONENT     a :Regex;
         rdf:value "35";
         rdfs:comment "[35]   EXPONENT                ::=   [eE] [+-]? [0-9]+";
         rdfs:label "EXPONENT";
         :seq  (
         [
                 a :Regex;
                 :matches "[eE]" ]
         [
                 a :Regex;
                 :opt  [
                     a :Regex;
                     :matches "[+-]" ] ]
         [
                 a :Regex;
                 :rep  [
                     a :Regex;
                     :matches "[0-9]" ] ] ) .
    
    ttl:Formula     a g:Production;
         rdf:value "15";
         rdfs:comment "[15]   Formula                 ::=   '{' TriplesSameSubject ( '.' TriplesSameSubject? )* '}'";
         rdfs:label "Formula";
         g:nonTerminal ttl:language;
         g:seq  (
        "{"
        ttl:TriplesSameSubject
        <#_g5>
        "}" ) .
    
    ttl:GraphNode     a g:Production;
         rdf:value "13";
         rdfs:comment "[13]   GraphNode               ::=   VarOrTerm | TriplesNode";
         rdfs:label "GraphNode";
         g:alt  (
        ttl:VarOrTerm
        ttl:TriplesNode );
         g:nonTerminal ttl:language .
    
    ttl:GraphTerm     a g:Production;
         rdf:value "17";
         rdfs:comment "[17]   GraphTerm               ::=   IRIref | RDFLiteral | ( '-' | '+' )? NumericLiteral | BlankNode | NIL";
         rdfs:label "GraphTerm";
         g:alt  (
        ttl:IRIref
        ttl:RDFLiteral
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                 [
                         a g:Production;
                         g:alt  (
                         [
                                 a g:Production;
                                 g:nonTerminal ttl:language;
                                 g:seq () ]
                        <#_g7> );
                         g:nonTerminal ttl:language;
                         g:opt <#_g7> ]
                ttl:NumericLiteral ) ]
        ttl:BlankNode
        ttl:NIL );
         g:nonTerminal ttl:language .
    
    ttl:HEX     a :Regex;
         rdf:value "42";
         rdfs:comment "[42]   HEX                     ::=   [0-9] | [A-F] | [a-f]";
         rdfs:label "HEX";
         :alt  (
         [
                 a :Regex;
                 :matches "[0-9]" ]
         [
                 a :Regex;
                 :matches "[A-F]" ]
         [
                 a :Regex;
                 :matches "[a-f]" ] ) .
    
    ttl:INTEGER     a :Regex;
         rdf:value "32";
         rdfs:comment "[32]   INTEGER                 ::=   [0-9]+";
         rdfs:label "INTEGER";
         :rep  [
             a :Regex;
             :matches "[0-9]" ] .
    
    ttl:IRIref     a g:Production;
         rdf:value "22";
         rdfs:comment "[22]   IRIref                  ::=   Q_IRI_REF | QName";
         rdfs:label "IRIref";
         g:alt  (
        ttl:Q_IRI_REF
        ttl:QName );
         g:nonTerminal ttl:language .
    
    ttl:LANGTAG     a :Regex;
         rdf:value "31";
         rdfs:comment "[31]   LANGTAG                 ::=   '@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*";
         rdfs:label "LANGTAG";
         :seq  (
        "@"
         [
                 a :Regex;
                 :rep  [
                     a :Regex;
                     :matches "[a-zA-Z]" ] ]
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :seq  (
                    "-"
                     [
                             a :Regex;
                             :rep  [
                                 a :Regex;
                                 :matches "[a-zA-Z0-9]" ] ] ) ] ] ) .
    
    ttl:Langtag     a g:Production;
         rdf:value "20";
         rdfs:comment "[20]   Langtag                 ::=   LANGTAG | 'PREFIX'";
         rdfs:label "Langtag";
         g:alt  (
        ttl:LANGTAG
        "PREFIX" );
         g:nonTerminal ttl:language .
    
    ttl:NCCHAR     a :Regex;
         rdf:value "49";
         rdfs:comment "[49]   NCCHAR                  ::=   NCCHAR1 | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]";
         rdfs:label "NCCHAR";
         :alt  (
        ttl:NCCHAR1
        "-"
         [
                 a :Regex;
                 :matches "[0-9]" ]
         [
                 a :Regex;
                 :matches "[·]" ]
         [
                 a :Regex;
                 :matches "[̀-ͯ]" ]
         [
                 a :Regex;
                 :matches "[‿-⁀]" ] ) .
    
    ttl:NCCHAR1     a :Regex;
         rdf:value "47";
         rdfs:comment "[47]   NCCHAR1                 ::=   NCCHAR1p | '_'";
         rdfs:label "NCCHAR1";
         :alt  (
        ttl:NCCHAR1p
        "_" ) .
    
    ttl:NCCHAR1p     a :Regex;
         rdf:value "46";
         rdfs:comment "[46]   NCCHAR1p                ::=     [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | UCHAR";
         rdfs:label "NCCHAR1p";
         :alt  (
         [
                 a :Regex;
                 :matches "[A-Z]" ]
         [
                 a :Regex;
                 :matches "[a-z]" ]
         [
                 a :Regex;
                 :matches "[À-Ö]" ]
         [
                 a :Regex;
                 :matches "[Ø-ö]" ]
         [
                 a :Regex;
                 :matches "[ø-˿]" ]
         [
                 a :Regex;
                 :matches "[Ͱ-ͽ]" ]
         [
                 a :Regex;
                 :matches "[Ϳ-῿]" ]
         [
                 a :Regex;
                 :matches "[‌-‍]" ]
         [
                 a :Regex;
                 :matches "[⁰-↏]" ]
         [
                 a :Regex;
                 :matches "[Ⰰ-⿯]" ]
         [
                 a :Regex;
                 :matches "[、-퟿]" ]
         [
                 a :Regex;
                 :matches "[豈-﷏]" ]
         [
                 a :Regex;
                 :matches "[ﷰ-�]" ]
         [
                 a :Regex;
                 :matches "[ -￿]" ]
        ttl:UCHAR ) .
    
    ttl:NCNAME     a :Regex;
         rdf:value "51";
         rdfs:comment "[51]   NCNAME                  ::=   NCCHAR1 ((NCCHAR|'.')* NCCHAR)?";
         rdfs:label "NCNAME";
         :seq  (
        ttl:NCCHAR1
         [
                 a :Regex;
                 :opt  [
                     a :Regex;
                     :seq  (
                     [
                             a :Regex;
                             :star  [
                                 a :Regex;
                                 :alt  (
                                ttl:NCCHAR
                                "." ) ] ]
                    ttl:NCCHAR ) ] ] ) .
    
    ttl:NCNAME_PREFIX     a :Regex;
         rdf:value "50";
         rdfs:comment "[50]   NCNAME_PREFIX           ::=   NCCHAR1p ((NCCHAR|'.')* NCCHAR)?";
         rdfs:label "NCNAME_PREFIX";
         :seq  (
        ttl:NCCHAR1p
         [
                 a :Regex;
                 :opt  [
                     a :Regex;
                     :seq  (
                     [
                             a :Regex;
                             :star  [
                                 a :Regex;
                                 :alt  (
                                ttl:NCCHAR
                                "." ) ] ]
                    ttl:NCCHAR ) ] ] ) .
    
    ttl:NIL     a :Regex;
         rdf:value "43";
         rdfs:comment "[43]   NIL                     ::=   '(' WS* ')'";
         rdfs:label "NIL";
         :seq  (
        "("
         [
                 a :Regex;
                 :star ttl:WS ]
        ")" ) .
    
    ttl:NumericLiteral     a g:Production;
         rdf:value "18";
         rdfs:comment "[18]   NumericLiteral          ::=   INTEGER | DECIMAL | DOUBLE";
         rdfs:label "NumericLiteral";
         g:alt  (
        ttl:INTEGER
        ttl:DECIMAL
        ttl:DOUBLE );
         g:nonTerminal ttl:language .
    
    ttl:Object     a g:Production;
         rdf:value "8";
         rdfs:comment "[8]    Object                  ::=   GraphNode";
         rdfs:label "Object";
         g:nonTerminal ttl:language;
         g:seq  (
        ttl:GraphNode ) .
    
    ttl:ObjectList     a g:Production;
         rdf:value "7";
         rdfs:comment "[7]    ObjectList              ::=   Object ( ',' Object )*";
         rdfs:label "ObjectList";
         g:nonTerminal ttl:language;
         g:seq  (
        ttl:Object
        <#_g3> ) .
    
    ttl:PropertyList     a g:Production;
         rdf:value "5";
         rdfs:comment "[5]    PropertyList            ::=   PropertyListNotEmpty?";
         rdfs:label "PropertyList";
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq () ]
        ttl:PropertyListNotEmpty );
         g:nonTerminal ttl:language;
         g:opt ttl:PropertyListNotEmpty .
    
    ttl:PropertyListNotEmpty     a g:Production;
         rdf:value "6";
         rdfs:comment "[6]    PropertyListNotEmpty    ::=   Verb ObjectList ( ';' ( Verb ObjectList )? )*";
         rdfs:label "PropertyListNotEmpty";
         g:nonTerminal ttl:language;
         g:seq  (
        ttl:Verb
        ttl:ObjectList
        <#_g0> ) .
    
    ttl:QNAME     a :Regex;
         rdf:value "27";
         rdfs:comment "[27]   QNAME                   ::=   NCNAME_PREFIX? ':' NCNAME?";
         rdfs:label "QNAME";
         :seq  (
         [
                 a :Regex;
                 :opt ttl:NCNAME_PREFIX ]
        ":"
         [
                 a :Regex;
                 :opt ttl:NCNAME ] ) .
    
    ttl:QNAME_NS     a :Regex;
         rdf:value "26";
         rdfs:comment "[26]   QNAME_NS                ::=   NCNAME_PREFIX? ':'";
         rdfs:label "QNAME_NS";
         :seq  (
         [
                 a :Regex;
                 :opt ttl:NCNAME_PREFIX ]
        ":" ) .
    
    ttl:QName     a g:Production;
         rdf:value "23";
         rdfs:comment "[23]   QName                   ::=   QNAME | QNAME_NS";
         rdfs:label "QName";
         g:alt  (
        ttl:QNAME
        ttl:QNAME_NS );
         g:nonTerminal ttl:language .
    
    ttl:Q_IRI_REF     a :Regex;
         rdf:value "25";
         rdfs:comment "[25]   Q_IRI_REF               ::=   '<' ([^<>'{}|^`]-[#x00-#x20])* '>'";
         rdfs:label "Q_IRI_REF";
         :seq  (
        "<"
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :diff  (
                     [
                             a :Regex;
                             :matches "[^<>'{}|^`]" ]
                     [
                             a :Regex;
                             :matches "[ - ]" ] ) ] ]
        ">" ) .
    
    ttl:RDFLiteral     a g:Production;
         rdf:value "19";
         rdfs:comment "[19]   RDFLiteral              ::=   String ( Langtag | ( '^^' IRIref ) )?";
         rdfs:label "RDFLiteral";
         g:nonTerminal ttl:language;
         g:seq  (
        ttl:String
         [
                 a g:Production;
                 g:alt  (
                 [
                         a g:Production;
                         g:nonTerminal ttl:language;
                         g:seq () ]
                <#_g8> );
                 g:nonTerminal ttl:language;
                 g:opt <#_g8> ] ) .
    
    ttl:STRING_LITERAL1     a :Regex;
         rdf:value "36";
         rdfs:comment "[36]   STRING_LITERAL1         ::=   \"'\" ( ([^#x27#x5C#xA#xD]) | ECHAR | UCHAR )* \"'\"";
         rdfs:label "STRING_LITERAL1";
         :seq  (
        "'"
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :alt  (
                     [
                             a :Regex;
                             :matches "[^'\\\\\n\r]" ]
                    ttl:ECHAR
                    ttl:UCHAR ) ] ]
        "'" ) .
    
    ttl:STRING_LITERAL2     a :Regex;
         rdf:value "37";
         rdfs:comment """[37]   STRING_LITERAL2         ::=   '"' ( ([^#x22#x5C#xA#xD]) | ECHAR | UCHAR )* '"'""";
         rdfs:label "STRING_LITERAL2";
         :seq  (
        "\""
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :alt  (
                     [
                             a :Regex;
                             :matches "[^\"\\\\\n\r]" ]
                    ttl:ECHAR
                    ttl:UCHAR ) ] ]
        "\"" ) .
    
    ttl:STRING_LITERAL_LONG1     a :Regex;
         rdf:value "38";
         rdfs:comment "[38]   STRING_LITERAL_LONG1    ::=   \"'''\" ( ( \"'\" | \"''\" )? ( [^'\\] | ECHAR | UCHAR ) )* \"'''\"";
         rdfs:label "STRING_LITERAL_LONG1";
         :seq  (
        "'''"
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :seq  (
                     [
                             a :Regex;
                             :opt  [
                                 a :Regex;
                                 :alt  (
                                "'"
                                "''" ) ] ]
                     [
                             a :Regex;
                             :alt  (
                             [
                                     a :Regex;
                                     :matches "[^'\\]" ]
                            ttl:ECHAR
                            ttl:UCHAR ) ] ) ] ]
        "'''" ) .
    
    ttl:STRING_LITERAL_LONG2     a :Regex;
         rdf:value "39";
         rdfs:comment """[39]   STRING_LITERAL_LONG2    ::=   '\"""' ( ( '"' | '""' )? ( [^"\\] | ECHAR | UCHAR ) )* '\"""'""";
         rdfs:label "STRING_LITERAL_LONG2";
         :seq  (
        "\"\"\""
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :seq  (
                     [
                             a :Regex;
                             :opt  [
                                 a :Regex;
                                 :alt  (
                                "\""
                                "\"\"" ) ] ]
                     [
                             a :Regex;
                             :alt  (
                             [
                                     a :Regex;
                                     :matches "[^\"\\]" ]
                            ttl:ECHAR
                            ttl:UCHAR ) ] ) ] ]
        "\"\"\"" ) .
    
    ttl:Statement     a g:Production;
         rdf:value "2";
         rdfs:comment "[2]    Statement               ::=   ( Directive | TriplesSameSubject ) '.'";
         rdfs:label "Statement";
         g:nonTerminal ttl:language;
         g:seq  (
         [
                 a g:Production;
                 g:alt  (
                ttl:Directive
                ttl:TriplesSameSubject );
                 g:nonTerminal ttl:language ]
        "." ) .
    
    ttl:String     a g:Production;
         rdf:value "21";
         rdfs:comment "[21]   String                  ::=   STRING_LITERAL1 | STRING_LITERAL2 | STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2";
         rdfs:label "String";
         g:alt  (
        ttl:STRING_LITERAL1
        ttl:STRING_LITERAL2
        ttl:STRING_LITERAL_LONG1
        ttl:STRING_LITERAL_LONG2 );
         g:nonTerminal ttl:language .
    
    ttl:TriplesNode     a g:Production;
         rdf:value "10";
         rdfs:comment "[10]   TriplesNode             ::=   Collection | BlankNodePropertyList";
         rdfs:label "TriplesNode";
         g:alt  (
        ttl:Collection
        ttl:BlankNodePropertyList );
         g:nonTerminal ttl:language .
    
    ttl:TriplesSameSubject     a g:Production;
         rdf:value "4";
         rdfs:comment "[4]    TriplesSameSubject      ::=   VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList";
         rdfs:label "TriplesSameSubject";
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                ttl:VarOrTerm
                ttl:PropertyListNotEmpty ) ]
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                ttl:TriplesNode
                ttl:PropertyList ) ] );
         g:nonTerminal ttl:language .
    
    ttl:UCHAR     a :Regex;
         rdf:value "41";
         rdfs:comment "[41]   UCHAR                   ::=   '\\' ( 'u' HEX HEX HEX HEX | 'U' HEX HEX HEX HEX HEX HEX HEX HEX )";
         rdfs:label "UCHAR";
         :seq  (
        "\\"
         [
                 a :Regex;
                 :alt  (
                 [
                         a :Regex;
                         :seq  (
                        "u"
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX ) ]
                 [
                         a :Regex;
                         :seq  (
                        "U"
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX
                        ttl:HEX ) ] ) ] ) .
    
    ttl:VAR1     a :Regex;
         rdf:value "29";
         rdfs:comment "[29]   VAR1                    ::=   '?' VARNAME";
         rdfs:label "VAR1";
         :seq  (
        "?"
        ttl:VARNAME ) .
    
    ttl:VAR2     a :Regex;
         rdf:value "30";
         rdfs:comment "[30]   VAR2                    ::=   '$' VARNAME";
         rdfs:label "VAR2";
         :seq  (
        "$"
        ttl:VARNAME ) .
    
    ttl:VARNAME     a :Regex;
         rdf:value "48";
         rdfs:comment "[48]   VARNAME                 ::=   ( NCCHAR1 | [0-9] ) ( NCCHAR1 | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040] )*";
         rdfs:label "VARNAME";
         :seq  (
         [
                 a :Regex;
                 :alt  (
                ttl:NCCHAR1
                 [
                         a :Regex;
                         :matches "[0-9]" ] ) ]
         [
                 a :Regex;
                 :star  [
                     a :Regex;
                     :alt  (
                    ttl:NCCHAR1
                     [
                             a :Regex;
                             :matches "[0-9]" ]
                     [
                             a :Regex;
                             :matches "[·]" ]
                     [
                             a :Regex;
                             :matches "[̀-ͯ]" ]
                     [
                             a :Regex;
                             :matches "[‿-⁀]" ] ) ] ] ) .
    
    ttl:Var     a g:Production;
         rdf:value "16";
         rdfs:comment "[16]   Var                     ::=   VAR1 | VAR2";
         rdfs:label "Var";
         g:alt  (
        ttl:VAR1
        ttl:VAR2 );
         g:nonTerminal ttl:language .
    
    ttl:VarOrTerm     a g:Production;
         rdf:value "14";
         rdfs:comment "[14]   VarOrTerm               ::=   Var | GraphTerm | Formula";
         rdfs:label "VarOrTerm";
         g:alt  (
        ttl:Var
        ttl:GraphTerm
        ttl:Formula );
         g:nonTerminal ttl:language .
    
    ttl:Verb     a g:Production;
         rdf:value "9";
         rdfs:comment "[9]    Verb                    ::=   IRIref | 'a' | '=>'";
         rdfs:label "Verb";
         g:alt  (
        ttl:IRIref
        "a"
        "=>" );
         g:nonTerminal ttl:language .
    
    ttl:WS     a :Regex;
         rdf:value "44";
         rdfs:comment "[44]   WS                      ::=   #x20 | #x9 | #xD | #xA";
         rdfs:label "WS";
         :alt  (
         [
                 a :Regex;
                 :matches "[ ]" ]
         [
                 a :Regex;
                 :matches "[\t]" ]
         [
                 a :Regex;
                 :matches "[\r]" ]
         [
                 a :Regex;
                 :matches "[\n]" ] ) .
    
    ttl:language     rdfs:isDefinedBy <turtle.n3>;
         g:start ttl:parse;
         g:terminal "(",
                ")",
                "+",
                ",",
                "-",
                ".",
                ";",
                "=>",
                "PREFIX",
                "[",
                "]",
                "^^",
                "a",
                "{",
                "}",
                ttl:ANON,
                ttl:BLANK_NODE_LABEL,
                ttl:DECIMAL,
                ttl:DOUBLE,
                ttl:INTEGER,
                ttl:LANGTAG,
                ttl:NIL,
                ttl:QNAME,
                ttl:QNAME_NS,
                ttl:Q_IRI_REF,
                ttl:STRING_LITERAL1,
                ttl:STRING_LITERAL2,
                ttl:STRING_LITERAL_LONG1,
                ttl:STRING_LITERAL_LONG2,
                ttl:VAR1,
                ttl:VAR2 .
    
    ttl:parse     a g:Production;
         rdf:value "1";
         rdfs:comment "[1]    parse                   ::=   Statement*";
         rdfs:label "parse";
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq () ]
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                ttl:Statement
                ttl:parse ) ] );
         g:nonTerminal ttl:language;
         g:star ttl:Statement .
    
    <#_g0>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq () ]
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                <#_g1>
                <#_g0> ) ] );
         g:nonTerminal ttl:language;
         g:star <#_g1> .
    
    <#_g1>     a g:Production;
         g:nonTerminal ttl:language;
         g:seq  (
        ";"
         [
                 a g:Production;
                 g:alt  (
                 [
                         a g:Production;
                         g:nonTerminal ttl:language;
                         g:seq () ]
                <#_g2> );
                 g:nonTerminal ttl:language;
                 g:opt <#_g2> ] ) .
    
    <#_g2>     a g:Production;
         g:nonTerminal ttl:language;
         g:seq  (
        ttl:Verb
        ttl:ObjectList ) .
    
    <#_g3>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq () ]
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                <#_g4>
                <#_g3> ) ] );
         g:nonTerminal ttl:language;
         g:star <#_g4> .
    
    <#_g4>     a g:Production;
         g:nonTerminal ttl:language;
         g:seq  (
        ","
        ttl:Object ) .
    
    <#_g5>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq () ]
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                <#_g6>
                <#_g5> ) ] );
         g:nonTerminal ttl:language;
         g:star <#_g6> .
    
    <#_g6>     a g:Production;
         g:nonTerminal ttl:language;
         g:seq  (
        "."
         [
                 a g:Production;
                 g:alt  (
                 [
                         a g:Production;
                         g:nonTerminal ttl:language;
                         g:seq () ]
                ttl:TriplesSameSubject );
                 g:nonTerminal ttl:language;
                 g:opt ttl:TriplesSameSubject ] ) .
    
    <#_g7>     a g:Production;
         g:alt  (
        "-"
        "+" );
         g:nonTerminal ttl:language .
    
    <#_g8>     a g:Production;
         g:alt  (
        ttl:Langtag
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                "^^"
                ttl:IRIref ) ] );
         g:nonTerminal ttl:language .
    
    <#_g9>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq () ]
         [
                 a g:Production;
                 g:nonTerminal ttl:language;
                 g:seq  (
                ttl:GraphNode
                <#_g9> ) ] );
         g:nonTerminal ttl:language;
         g:star ttl:GraphNode .
    
#ENDS
