#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/notation3#> .
    @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 re: <http://www.w3.org/2000/10/swap/grammar/regex#> .
    
     @forSome <#_g0>,
                <#_g1>,
                <#_g2>,
                <#_g3>,
                <#_g4>,
                <#_g5>,
                <#_g6>,
                <#_g7>,
                <#_g8>,
                <#_g9>,
                <#_g10>,
                <#_g11>,
                <#_g12>,
                <#_g13>,
                <#_g14>,
                <#_g15>,
                <#_g16> .
    
    "."     g:follow "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar .
    
    "<="     g:follow "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar .
    
    "="     g:follow "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar .
    
    "=>"     g:follow "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar .
    
    "@a"     g:follow "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar .
    
    "@false"     g:follow "!",
                "^" .
    
    "@true"     g:follow "!",
                "^" .
    
    <ebnf2bnf.n3>     <http://purl.org/dc/elements/1.1/description> "$Id: notation3-ll1.n3,v 1.2 2006/06/21 13:42:45 connolly Exp $",
                """reduce EBNF to BNF;
i.e. rewrite ?, +, * operators using alt and seq
""";
         rdfs:seeAlso <ebnf>,
                <ebnf.n3>,
                <ebnf.rdf> .
    
    <first_follow.n3>     <http://purl.org/dc/elements/1.1/description> "$Id: notation3-ll1.n3,v 1.2 2006/06/21 13:42:45 connolly Exp $";
         <http://purl.org/dc/elements/1.1/source> <http://en.wikipedia.org/wiki/LL_parser#Constructing_an_LL.281.29_parsing_table>;
         <http://purl.org/dc/elements/1.1/title> "first and follow rules for LL(1) grammars" .
    
    <http://en.wikipedia.org/wiki/LL_parser#Constructing_an_LL.281.29_parsing_table>     <http://purl.org/dc/elements/1.1/description> "The same material is covered in page 44-48 of Aho, Sethi, Ullman";
         <http://purl.org/dc/elements/1.1/relation> <http://en.wikipedia.org/wiki/Compilers:_Principles%2C_Techniques%2C_and_Tools>;
         <http://purl.org/dc/elements/1.1/title> "Constructing an LL(1) parsing table" .
    
    g:alt     rdfs:domain g:Production .
    
    g:seq     rdfs:domain g:Production .
    
    :ECHAR     a re:Regex;
         rdf:value "40";
         rdfs:comment "[40] ECHAR ::= #x5C [tbnrf#x5C#x22']";
         rdfs:label "ECHAR";
         re:seq  (
         [
                 a re:Regex;
                 re:matches "[\\\\]" ]
         [
                 a re:Regex;
                 re:matches "[tbnrf\\\\\"']" ] ) .
    
    :HEX     a re:Regex;
         rdf:value "42";
         rdfs:comment "[42]   HEX                     ::=   [0-9] | [A-F] | [a-f]";
         rdfs:label "HEX";
         re:alt  (
         [
                 a re:Regex;
                 re:matches "[0-9]" ]
         [
                 a re:Regex;
                 re:matches "[A-F]" ]
         [
                 a re:Regex;
                 re:matches "[a-f]" ] ) .
    
    :NameChar3     a re:Regex;
         rdf:value "34";
         rdfs:comment """[34]   	NameChar3	   ::=   	NameStartChar3 | "-" | "_" | [0-9]""";
         rdfs:label "NameChar3";
         re:alt  (
        :NameStartChar3
        "-"
        "_"
         [
                 a re:Regex;
                 re:matches "[0-9]" ] ) .
    
    :NameChar3x     a re:Regex;
         rdf:value "34x";
         rdfs:comment """[34x]   	NameChar3x	   ::=   	NameStartChar3 | "-" | "_" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]""";
         rdfs:label "NameChar3x";
         re:alt  (
        :NameStartChar3
        "-"
        "_"
         [
                 a re:Regex;
                 re:matches "[0-9]" ]
         [
                 a re:Regex;
                 re:matches "[·]" ]
         [
                 a re:Regex;
                 re:matches "[̀-ͯ]" ]
         [
                 a re:Regex;
                 re:matches "[‿-⁀]" ] ) .
    
    :NameStartChar3     a re:Regex;
         rdf:value "33";
         rdfs:comment "[33] NameStartChar3\t   ::=   \t[A-Z] | [a-z]";
         rdfs:label "NameStartChar3";
         re:alt  (
         [
                 a re:Regex;
                 re:matches "[A-Z]" ]
         [
                 a re:Regex;
                 re:matches "[a-z]" ] ) .
    
    :NameStartChar3x     a re:Regex;
         rdf:value "33x";
         rdfs:comment "[33x] NameStartChar3x\t   ::=   \t[A-Z] | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]";
         rdfs:label "NameStartChar3x";
         re:alt  (
         [
                 a re:Regex;
                 re:matches "[A-Z]" ]
         [
                 a re:Regex;
                 re:matches "[a-z]" ]
         [
                 a re:Regex;
                 re:matches "[À-Ö]" ]
         [
                 a re:Regex;
                 re:matches "[Ø-ö]" ]
         [
                 a re:Regex;
                 re:matches "[ø-˿]" ]
         [
                 a re:Regex;
                 re:matches "[Ͱ-ͽ]" ]
         [
                 a re:Regex;
                 re:matches "[Ϳ-῿]" ]
         [
                 a re:Regex;
                 re:matches "[‌-‍]" ]
         [
                 a re:Regex;
                 re:matches "[⁰-↏]" ]
         [
                 a re:Regex;
                 re:matches "[Ⰰ-⿯]" ]
         [
                 a re:Regex;
                 re:matches "[、-퟿]" ]
         [
                 a re:Regex;
                 re:matches "[豈-﷏]" ]
         [
                 a re:Regex;
                 re:matches "[ﷰ-�]" ]
         [
                 a re:Regex;
                 re:matches "[ -￿]" ] ) .
    
    :STRING_LITERAL2     a re:Regex;
         rdf:value "38";
         rdfs:comment """[38] STRING_LITERAL2 ::= '"' ( [^#x22#x5C#x0A#x0D] | ECHAR | UCHAR)* '"'""";
         rdfs:label "STRING_LITERAL2";
         g:follow "^^";
         re:seq  (
        "\""
         [
                 a re:Regex;
                 re:star  [
                     a re:Regex;
                     re:alt  (
                     [
                             a re:Regex;
                             re:matches "[^\"\\\\\n\r]" ]
                    :ECHAR
                    :UCHAR ) ] ]
        "\"" ) .
    
    :STRING_LITERAL_LONG2     a re:Regex;
         rdf:value "39";
         rdfs:comment """[39] STRING_LITERAL_LONG2 ::= '\"""' ( ( '"' | '""' )? ( [^#x22#x5C] | ECHAR | UCHAR ) )* '\"""'""";
         rdfs:label "STRING_LITERAL_LONG2";
         g:follow "^^";
         re:seq  (
        "\"\"\""
         [
                 a re:Regex;
                 re:star  [
                     a re:Regex;
                     re:seq  (
                     [
                             a re:Regex;
                             re:opt  [
                                 a re:Regex;
                                 re:alt  (
                                "\""
                                "\"\"" ) ] ]
                     [
                             a re:Regex;
                             re:alt  (
                             [
                                     a re:Regex;
                                     re:matches "[^\"\\\\]" ]
                            :ECHAR
                            :UCHAR ) ] ) ] ]
        "\"\"\"" ) .
    
    :UCHAR     a re: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";
         re:seq  (
        "\\"
         [
                 a re:Regex;
                 re:alt  (
                 [
                         a re:Regex;
                         re:seq  (
                        "u"
                        :HEX
                        :HEX
                        :HEX
                        :HEX ) ]
                 [
                         a re:Regex;
                         re:seq  (
                        "U"
                        :HEX
                        :HEX
                        :HEX
                        :HEX
                        :HEX
                        :HEX
                        :HEX
                        :HEX ) ] ) ] ) .
    
    :barename     a g:Production;
         rdf:value "8";
         rdfs:comment "[8] barename ::= qname";
         rdfs:label "barename";
         g:first :qname;
         g:follow ",";
         g:nonTerminal :language;
         g:seq  (
        :qname ) .
    
    :boolean     a g:Production;
         rdf:value "17";
         rdfs:comment "[17] boolean ::= \"@true\" | \"@false\"";
         rdfs:label "boolean";
         g:alt  (
        "@true"
        "@false" );
         g:first "@false",
                "@true";
         g:follow "!",
                "^";
         g:nonTerminal :language .
    
    :decimal     a re:Regex;
         rdf:value "28";
         rdfs:comment """[28] decimal	::= [+-]? [0-9]+ ("." [0-9]+)?""";
         rdfs:label "decimal";
         g:follow "!",
                "^";
         re:seq  (
         [
                 a re:Regex;
                 re:opt  [
                     a re:Regex;
                     re:matches "[+-]" ] ]
         [
                 a re:Regex;
                 re:rep  [
                     a re:Regex;
                     re:matches "[0-9]" ] ]
         [
                 a re:Regex;
                 re:opt  [
                     a re:Regex;
                     re:seq  (
                    "."
                     [
                             a re:Regex;
                             re:rep  [
                                 a re:Regex;
                                 re:matches "[0-9]" ] ] ) ] ] ) .
    
    :declaration     a g:Production;
         rdf:value "7";
         rdfs:comment """[7] declaration ::= "@prefix" prefix uriref |   "@keywords" (barename ("," barename)*)?""";
         rdfs:label "declaration";
         g:alt  (
         [
                 a g:Production;
                 g:first "@prefix";
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq  (
                "@prefix"
                :prefix
                :uriref ) ]
         [
                 a g:Production;
                 g:first "@keywords";
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq  (
                "@keywords"
                <#_g7> ) ] );
         g:first "@keywords",
                "@prefix";
         g:follow ".";
         g:nonTerminal :language .
    
    :document     a g:Production;
         rdf:value "1";
         rdfs:comment """[1] document ::= (statement ".")*""";
         rdfs:label "document";
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow g:eof;
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first "(",
                        "@false",
                        "@forAll",
                        "@forSome",
                        "@keywords",
                        "@prefix",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:follow g:eof;
                 g:nonTerminal :language;
                 g:seq  (
                <#_g0>
                :document ) ] );
         g:first "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                g:eps,
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow g:eof;
         g:nonTerminal :language;
         g:star <#_g0> .
    
    :double     a re:Regex;
         rdf:value "27";
         rdfs:comment """[27] double	::= [+-]? [0-9]+ ("." [0-9]+)? ( [eE] [+-]? [0-9]+)""";
         rdfs:label "double";
         g:follow "!",
                "^";
         re:seq  (
         [
                 a re:Regex;
                 re:opt  [
                     a re:Regex;
                     re:matches "[+-]" ] ]
         [
                 a re:Regex;
                 re:rep  [
                     a re:Regex;
                     re:matches "[0-9]" ] ]
         [
                 a re:Regex;
                 re:opt  [
                     a re:Regex;
                     re:seq  (
                    "."
                     [
                             a re:Regex;
                             re:rep  [
                                 a re:Regex;
                                 re:matches "[0-9]" ] ] ) ] ]
         [
                 a re:Regex;
                 re:seq  (
                 [
                         a re:Regex;
                         re:matches "[eE]" ]
                 [
                         a re:Regex;
                         re:opt  [
                             a re:Regex;
                             re:matches "[+-]" ] ]
                 [
                         a re:Regex;
                         re:rep  [
                             a re:Regex;
                             re:matches "[0-9]" ] ] ) ] ) .
    
    :evar     a re:Regex;
         rdf:value "36";
         rdfs:comment """[36] evar ::= "_:" localname""";
         rdfs:label "evar";
         g:follow "!",
                "^";
         re:seq  (
        "_:"
        :localname ) .
    
    :existential     a g:Production;
         rdf:value "5";
         rdfs:comment """[5] existential ::= "@forSome" varlist""";
         rdfs:label "existential";
         g:first "@forSome";
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        "@forSome"
        :varlist ) .
    
    :formulacontent     a g:Production;
         rdf:value "2";
         rdfs:comment """[2] formulacontent ::= (statement ("." statement)*)?""";
         rdfs:label "formulacontent";
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:nonTerminal :language;
                 g:seq () ]
        <#_g1> );
         g:first "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                g:eps,
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language;
         g:opt <#_g1> .
    
    :integer     a re:Regex;
         rdf:value "26";
         rdfs:comment "[26] integer ::= [+-]? [0-9]+";
         rdfs:label "integer";
         g:follow "!",
                "^";
         re:seq  (
         [
                 a re:Regex;
                 re:opt  [
                     a re:Regex;
                     re:matches "[+-]" ] ]
         [
                 a re:Regex;
                 re:rep  [
                     a re:Regex;
                     re:matches "[0-9]" ] ] ) .
    
    :langstring     a re:Regex;
         rdf:value "37";
         rdfs:comment """[37] langstring ::= (STRING_LITERAL2 | STRING_LITERAL_LONG2) "@" [a-z]+ ("-" [a-z0-9]+)*""";
         rdfs:label "langstring";
         g:follow "!",
                "^";
         re:seq  (
         [
                 a re:Regex;
                 re:alt  (
                :STRING_LITERAL2
                :STRING_LITERAL_LONG2 ) ]
        "@"
         [
                 a re:Regex;
                 re:rep  [
                     a re:Regex;
                     re:matches "[a-z]" ] ]
         [
                 a re:Regex;
                 re:star  [
                     a re:Regex;
                     re:seq  (
                    "-"
                     [
                             a re:Regex;
                             re:rep  [
                                 a re:Regex;
                                 re:matches "[a-z0-9]" ] ] ) ] ] ) .
    
    :language     rdfs:isDefinedBy <notation3.n3>;
         g:start :document;
         g:terminal "!",
                "(",
                ")",
                ",",
                ".",
                ";",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@forAll",
                "@forSome",
                "@has",
                "@is",
                "@keywords",
                "@of",
                "@prefix",
                "@true",
                "[",
                "]",
                "^",
                "^^",
                "{",
                "}",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :prefix,
                :qname,
                :uriref,
                :uvar .
    
    :literal     a g:Production;
         rdf:value "16";
         rdfs:comment """[16] literal ::= (STRING_LITERAL2 | STRING_LITERAL_LONG2) ("^^" symbol) | langstring""";
         rdfs:label "literal";
         g:alt  (
         [
                 a g:Production;
                 g:first :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2;
                 g:follow "!",
                        "^";
                 g:nonTerminal :language;
                 g:seq  (
                 [
                         a g:Production;
                         g:alt  (
                        :STRING_LITERAL2
                        :STRING_LITERAL_LONG2 );
                         g:first :STRING_LITERAL2,
                                :STRING_LITERAL_LONG2;
                         g:follow "^^";
                         g:nonTerminal :language ]
                <#_g16> ) ]
        :langstring );
         g:first :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :langstring;
         g:follow "!",
                "^";
         g:nonTerminal :language .
    
    :localname     a re:Regex;
         rdf:value "31";
         rdfs:comment """[31] localname ::= (NameStartChar3|"_") NameChar3*""";
         rdfs:label "localname";
         re:seq  (
         [
                 a re:Regex;
                 re:alt  (
                :NameStartChar3
                "_" ) ]
         [
                 a re:Regex;
                 re:star :NameChar3 ] ) .
    
    :numeral     a g:Production;
         rdf:value "19";
         rdfs:comment "[19] numeral ::= integer | double | decimal";
         rdfs:label "numeral";
         g:alt  (
        :integer
        :double
        :decimal );
         g:first :decimal,
                :double,
                :integer;
         g:follow "!",
                "^";
         g:nonTerminal :language .
    
    :objecttail     a g:Production;
         rdf:value "11";
         rdfs:comment """[11] objecttail ::= ("," term)*""";
         rdfs:label "objecttail";
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first ",";
                 g:nonTerminal :language;
                 g:seq  (
                <#_g14>
                :objecttail ) ] );
         g:first ",",
                g:eps;
         g:nonTerminal :language;
         g:star <#_g14> .
    
    :pathitem     a g:Production;
         rdf:value "15";
         rdfs:comment """[15] pathitem ::= symbol | evar | uvar | numeral | literal | "{" formulacontent "}" | "[" propertylist "]" |  "("  term* ")" | boolean""";
         rdfs:label "pathitem";
         g:alt  (
        :symbol
        :evar
        :uvar
        :numeral
        :literal
         [
                 a g:Production;
                 g:first "{";
                 g:follow "!",
                        "^";
                 g:nonTerminal :language;
                 g:seq  (
                "{"
                :formulacontent
                "}" ) ]
         [
                 a g:Production;
                 g:first "[";
                 g:follow "!",
                        "^";
                 g:nonTerminal :language;
                 g:seq  (
                "["
                :propertylist
                "]" ) ]
         [
                 a g:Production;
                 g:first "(";
                 g:follow "!",
                        "^";
                 g:nonTerminal :language;
                 g:seq  (
                "("
                <#_g15>
                ")" ) ]
        :boolean );
         g:first "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow "!",
                "^";
         g:nonTerminal :language .
    
    :pathtail     a g:Production;
         rdf:value "14";
         rdfs:comment """[14] pathtail ::= | "!" term | "^" term""";
         rdfs:label "pathtail";
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow "(",
                        ",",
                        ";",
                        "<=",
                        "=",
                        "=>",
                        "@a",
                        "@false",
                        "@has",
                        "@is",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first "!";
                 g:follow "(",
                        ",",
                        ";",
                        "<=",
                        "=",
                        "=>",
                        "@a",
                        "@false",
                        "@has",
                        "@is",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:nonTerminal :language;
                 g:seq  (
                "!"
                :term ) ]
         [
                 a g:Production;
                 g:first "^";
                 g:follow "(",
                        ",",
                        ";",
                        "<=",
                        "=",
                        "=>",
                        "@a",
                        "@false",
                        "@has",
                        "@is",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:nonTerminal :language;
                 g:seq  (
                "^"
                :term ) ] );
         g:first "!",
                "^",
                g:eps;
         g:follow "(",
                ",",
                ";",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@has",
                "@is",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language .
    
    :prefix     a re:Regex;
         rdf:value "32";
         rdfs:comment "[32] prefix  ::= ((\"_\" NameChar3+) | (NameStartChar3 NameChar3*))? \":\"";
         rdfs:label "prefix";
         re:seq  (
         [
                 a re:Regex;
                 re:opt  [
                     a re:Regex;
                     re:alt  (
                     [
                             a re:Regex;
                             re:seq  (
                            "_"
                             [
                                     a re:Regex;
                                     re:rep :NameChar3 ] ) ]
                     [
                             a re:Regex;
                             re:seq  (
                            :NameStartChar3
                             [
                                     a re:Regex;
                                     re:star :NameChar3 ] ) ] ) ] ]
        ":" ) .
    
    :property     a g:Production;
         rdf:value "10a";
         rdfs:comment "[10a] property ::= verb term objecttail";
         rdfs:label "property";
         g:first "(",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@has",
                "@is",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow ";";
         g:nonTerminal :language;
         g:seq  (
        :verb
        :term
        :objecttail ) .
    
    :propertylist     a g:Production;
         rdf:value "10";
         rdfs:comment """[10] propertylist ::= (property (";" property)*)?""";
         rdfs:label "propertylist";
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq () ]
        <#_g11> );
         g:first "(",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@has",
                "@is",
                "@true",
                "[",
                "{",
                g:eps,
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow ".";
         g:nonTerminal :language;
         g:opt <#_g11> .
    
    :qname     a re:Regex;
         rdf:value "30";
         rdfs:comment "[30] qname  ::= prefix? localname";
         rdfs:label "qname";
         g:follow "!",
                ",",
                "^";
         re:seq  (
         [
                 a re:Regex;
                 re:opt :prefix ]
        :localname ) .
    
    :simpleStatement     a g:Production;
         rdf:value "9";
         rdfs:comment "[9] simpleStatement ::= term propertylist";
         rdfs:label "simpleStatement";
         g:first "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        :term
        :propertylist ) .
    
    :statement     a g:Production;
         rdf:value "3";
         rdfs:comment "[3] statement  ::= declaration | universal | existential | simpleStatement";
         rdfs:label "statement";
         g:alt  (
        :declaration
        :universal
        :existential
        :simpleStatement );
         g:first "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow ".";
         g:nonTerminal :language .
    
    :symbol     a g:Production;
         rdf:value "18";
         rdfs:comment "[18] symbol ::= uriref | qname";
         rdfs:label "symbol";
         g:alt  (
        :uriref
        :qname );
         g:first :qname,
                :uriref;
         g:follow "!",
                ",",
                "^";
         g:nonTerminal :language .
    
    :term     a g:Production;
         rdf:value "13";
         rdfs:comment "[13] term ::= pathitem pathtail";
         rdfs:label "term";
         g:first "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow "(",
                ",",
                ";",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@has",
                "@is",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language;
         g:seq  (
        :pathitem
        :pathtail ) .
    
    :universal     a g:Production;
         rdf:value "4";
         rdfs:comment """[4] universal ::= "@forAll" varlist""";
         rdfs:label "universal";
         g:first "@forAll";
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        "@forAll"
        :varlist ) .
    
    :uriref     a re:Regex;
         rdf:value "29";
         rdfs:comment "[29] uriref ::=\t'<' ([^<>'{}|^`]-[#x01-#x20])* '>'";
         rdfs:label "uriref";
         g:follow "!",
                ",",
                "^";
         re:seq  (
        "<"
         [
                 a re:Regex;
                 re:star  [
                     a re:Regex;
                     re:diff  (
                     [
                             a re:Regex;
                             re:matches "[^<>'{}|^`]" ]
                     [
                             a re:Regex;
                             re:matches "[- ]" ] ) ] ]
        ">" ) .
    
    :uvar     a re:Regex;
         rdf:value "35";
         rdfs:comment """[35] uvar ::= "?" localname""";
         rdfs:label "uvar";
         g:follow "!",
                "^";
         re:seq  (
        "?"
        :localname ) .
    
    :varlist     a g:Production;
         rdf:value "6";
         rdfs:comment """[6] varlist ::= (symbol ("," symbol)*)?""";
         rdfs:label "varlist";
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq () ]
        <#_g4> );
         g:first g:eps,
                :qname,
                :uriref;
         g:follow ".";
         g:nonTerminal :language;
         g:opt <#_g4> .
    
    :verb     a g:Production;
         rdf:value "12";
         rdfs:comment "[12] verb ::= term | \"@has\" term | \"@is\" term \"@of\" | \"@a\" | \"=\" | \"=>\" | \"<=\"";
         rdfs:label "verb";
         g:alt  (
        :term
         [
                 a g:Production;
                 g:first "@has";
                 g:follow "(",
                        "@false",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:nonTerminal :language;
                 g:seq  (
                "@has"
                :term ) ]
         [
                 a g:Production;
                 g:first "@is";
                 g:follow "(",
                        "@false",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:nonTerminal :language;
                 g:seq  (
                "@is"
                :term
                "@of" ) ]
        "@a"
        "="
        "=>"
        "<=" );
         g:first "(",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@has",
                "@is",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow "(",
                "@false",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language .
    
    re:alt     rdfs:domain re:Regex .
    
    re:diff     rdfs:domain re:Regex .
    
    re:matches     rdfs:domain re:Regex .
    
    re:opt     rdfs:domain re:Regex .
    
    re:rep     rdfs:domain re:Regex .
    
    re:seq     rdfs:domain re:Regex .
    
    re:star     rdfs:domain re:Regex .
    
    <#_g0>     a g:Production;
         g:first "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language;
         g:seq  (
        :statement
        "." ) .
    
    <#_g1>     a g:Production;
         g:first "(",
                "@false",
                "@forAll",
                "@forSome",
                "@keywords",
                "@prefix",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language;
         g:seq  (
        :statement
        <#_g2> ) .
    
    <#_g2>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first ".";
                 g:nonTerminal :language;
                 g:seq  (
                <#_g3>
                <#_g2> ) ] );
         g:first ".",
                g:eps;
         g:nonTerminal :language;
         g:star <#_g3> .
    
    <#_g3>     a g:Production;
         g:first ".";
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        "."
        :statement ) .
    
    <#_g4>     a g:Production;
         g:first :qname,
                :uriref;
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        :symbol
        <#_g5> ) .
    
    <#_g5>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first ",";
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq  (
                <#_g6>
                <#_g5> ) ] );
         g:first ",",
                g:eps;
         g:follow ".";
         g:nonTerminal :language;
         g:star <#_g6> .
    
    <#_g6>     a g:Production;
         g:first ",";
         g:follow ",";
         g:nonTerminal :language;
         g:seq  (
        ","
        :symbol ) .
    
    <#_g7>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq () ]
        <#_g8> );
         g:first g:eps,
                :qname;
         g:follow ".";
         g:nonTerminal :language;
         g:opt <#_g8> .
    
    <#_g8>     a g:Production;
         g:first :qname;
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        :barename
        <#_g9> ) .
    
    <#_g9>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first ",";
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq  (
                <#_g10>
                <#_g9> ) ] );
         g:first ",",
                g:eps;
         g:follow ".";
         g:nonTerminal :language;
         g:star <#_g10> .
    
    <#_g10>     a g:Production;
         g:first ",";
         g:follow ",";
         g:nonTerminal :language;
         g:seq  (
        ","
        :barename ) .
    
    <#_g11>     a g:Production;
         g:first "(",
                "<=",
                "=",
                "=>",
                "@a",
                "@false",
                "@has",
                "@is",
                "@true",
                "[",
                "{",
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:follow ".";
         g:nonTerminal :language;
         g:seq  (
        :property
        <#_g12> ) .
    
    <#_g12>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first ";";
                 g:follow ".";
                 g:nonTerminal :language;
                 g:seq  (
                <#_g13>
                <#_g12> ) ] );
         g:first ";",
                g:eps;
         g:follow ".";
         g:nonTerminal :language;
         g:star <#_g13> .
    
    <#_g13>     a g:Production;
         g:first ";";
         g:follow ";";
         g:nonTerminal :language;
         g:seq  (
        ";"
        :property ) .
    
    <#_g14>     a g:Production;
         g:first ",";
         g:follow ",";
         g:nonTerminal :language;
         g:seq  (
        ","
        :term ) .
    
    <#_g15>     a g:Production;
         g:alt  (
         [
                 a g:Production;
                 g:first g:eps;
                 g:nonTerminal :language;
                 g:seq () ]
         [
                 a g:Production;
                 g:first "(",
                        "@false",
                        "@true",
                        "[",
                        "{",
                        :STRING_LITERAL2,
                        :STRING_LITERAL_LONG2,
                        :decimal,
                        :double,
                        :evar,
                        :integer,
                        :langstring,
                        :qname,
                        :uriref,
                        :uvar;
                 g:nonTerminal :language;
                 g:seq  (
                :term
                <#_g15> ) ] );
         g:first "(",
                "@false",
                "@true",
                "[",
                "{",
                g:eps,
                :STRING_LITERAL2,
                :STRING_LITERAL_LONG2,
                :decimal,
                :double,
                :evar,
                :integer,
                :langstring,
                :qname,
                :uriref,
                :uvar;
         g:nonTerminal :language;
         g:star :term .
    
    <#_g16>     a g:Production;
         g:first "^^";
         g:follow "!",
                "^";
         g:nonTerminal :language;
         g:seq  (
        "^^"
        :symbol ) .
      [      a g:Production;
             g:seq  (
            "." ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@forAll",
                    "@forSome",
                    "@keywords",
                    "@prefix",
                    "@true",
                    "[",
                    "{",
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :statement ) ].
    
      [      a g:Production;
             g:first ".",
                    g:eps;
             g:seq  (
            <#_g2> ) ].
    
      [      a g:Production;
             g:first g:eps,
                    :qname,
                    :uriref;
             g:seq  (
            :varlist ) ].
    
      [      a g:Production;
             g:first :qname,
                    :uriref;
             g:seq  (
            :symbol ) ].
    
      [      a g:Production;
             g:first ",",
                    g:eps;
             g:seq  (
            <#_g5> ) ].
    
      [      a g:Production;
             g:seq  (
            :prefix
            :uriref ) ].
    
      [      a g:Production;
             g:first :qname;
             g:seq  (
            :barename ) ].
    
      [      a g:Production;
             g:first ",",
                    g:eps;
             g:seq  (
            <#_g9> ) ].
    
      [      a g:Production;
             g:first g:eps,
                    :qname;
             g:seq  (
            <#_g7> ) ].
    
      [      a g:Production;
             g:first g:eps;
             g:seq () ].
    
      [      a g:Production;
             g:first "(",
                    "<=",
                    "=",
                    "=>",
                    "@a",
                    "@false",
                    "@has",
                    "@is",
                    "@true",
                    "[",
                    "{",
                    g:eps,
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :propertylist ) ].
    
      [      a g:Production;
             g:first "(",
                    "<=",
                    "=",
                    "=>",
                    "@a",
                    "@false",
                    "@has",
                    "@is",
                    "@true",
                    "[",
                    "{",
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :property ) ].
    
      [      a g:Production;
             g:first ";",
                    g:eps;
             g:seq  (
            <#_g12> ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@true",
                    "[",
                    "{",
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :term
            :objecttail ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@true",
                    "[",
                    "{",
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :term ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@true",
                    "[",
                    "{",
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :term
            "@of" ) ].
    
      [      a g:Production;
             g:first "!",
                    "^",
                    g:eps;
             g:seq  (
            :pathtail ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@forAll",
                    "@forSome",
                    "@keywords",
                    "@prefix",
                    "@true",
                    "[",
                    "{",
                    g:eps,
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :formulacontent
            "}" ) ].
    
      [      a g:Production;
             g:first "(",
                    "<=",
                    "=",
                    "=>",
                    "@a",
                    "@false",
                    "@has",
                    "@is",
                    "@true",
                    "[",
                    "{",
                    g:eps,
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :propertylist
            "]" ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@true",
                    "[",
                    "{",
                    g:eps,
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            <#_g15>
            ")" ) ].
    
      [      a g:Production;
             g:first "^^";
             g:seq  (
            <#_g16> ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@forAll",
                    "@forSome",
                    "@keywords",
                    "@prefix",
                    "@true",
                    "[",
                    "{",
                    g:eps,
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            :document ) ].
    
      [      a g:Production;
             g:first ",",
                    g:eps;
             g:seq  (
            :objecttail ) ].
    
      [      a g:Production;
             g:first "(",
                    "@false",
                    "@true",
                    "[",
                    "{",
                    g:eps,
                    :STRING_LITERAL2,
                    :STRING_LITERAL_LONG2,
                    :decimal,
                    :double,
                    :evar,
                    :integer,
                    :langstring,
                    :qname,
                    :uriref,
                    :uvar;
             g:seq  (
            <#_g15> ) ].
    
      [      a g:Production;
             g:seq  (
            :uriref ) ].
    
      [      a g:Production;
             g:seq  (
            "@of" ) ].
    
      [      a g:Production;
             g:seq  (
            "}" ) ].
    
      [      a g:Production;
             g:seq  (
            "]" ) ].
    
      [      a g:Production;
             g:seq  (
            ")" ) ].
    
#ENDS
