Add bnf from yacker
authorGavin Carothers <gavin@carothers.name>
Fri, 10 Jun 2011 14:34:17 -0700
changeset 35 9bc251715597
parent 34 85dd2ec79370
child 36 482882d1bcb6
Add bnf from yacker
rdf-turtle/bnf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rdf-turtle/bnf	Fri Jun 10 14:34:17 2011 -0700
@@ -0,0 +1,64 @@
+[1]  Query			::= Prologue ConstructQuery
+[2]  Prologue			::= BaseDecl? PrefixDecl*
+[3]  BaseDecl			::= BASE IRI_REF '.'
+[4]  PrefixDecl			::= PREFIX PNAME_NS IRI_REF '.'
+[6]  ConstructQuery		::= ConstructTemplate
+[30] ConstructTemplate		::= ConstructTriples?
+[31] ConstructTriples		::= TriplesSameSubject ( '.' ConstructTriples? )?
+[32] TriplesSameSubject		::= GraphTerm PropertyListNotEmpty | TriplesNode PropertyList
+[33] PropertyListNotEmpty	::= Verb ObjectList ( ';' ( Verb ObjectList )? )*
+[34] PropertyList		::= PropertyListNotEmpty?
+[35] ObjectList			::= Object ( ',' Object )*
+[36] Object			::= GraphNode
+[37] Verb			::= IRIref | 'a'
+[38] TriplesNode		::= Collection | BlankNodePropertyList
+[39] BlankNodePropertyList	::= '[' PropertyListNotEmpty ']'
+[40] Collection			::= '(' GraphNode+ ')'
+[41] GraphNode			::= GraphTerm | TriplesNode
+[45] GraphTerm			::= IRIref | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | NIL
+[60] RDFLiteral			::= String ( LANGTAG | ( '^^' IRIref ) )?
+[61] NumericLiteral		::= NumericLiteralUnsigned | NumericLiteralPositive | NumericLiteralNegative
+[62] NumericLiteralUnsigned	::= INTEGER | DECIMAL | DOUBLE
+[63] NumericLiteralPositive	::= INTEGER_POSITIVE | DECIMAL_POSITIVE | DOUBLE_POSITIVE
+[64] NumericLiteralNegative	::= INTEGER_NEGATIVE | DECIMAL_NEGATIVE | DOUBLE_NEGATIVE
+[65] BooleanLiteral		::= 'true' | 'false'
+[66] String			::= STRING_LITERAL1 | STRING_LITERAL2 | STRING_LITERAL_LONG1 | STRING_LITERAL_LONG2
+[67] IRIref			::= IRI_REF | PrefixedName
+[68] PrefixedName		::= PNAME_LN | PNAME_NS
+[69] BlankNode			::= BLANK_NODE_LABEL | ANON
+
+@terminals
+
+[70] IRI_REF			::= '<' ([^<>\"{}|^`\\]-[#x00-#x20])* '>'
+[71] PNAME_NS			::= PN_PREFIX? ':'
+[72] PNAME_LN			::= PNAME_NS PN_LOCAL
+[73] BLANK_NODE_LABEL		::= '_:' PN_LOCAL
+[74] BASE                       ::= '@base'
+[75] PREFIX                     ::= '@prefix'
+[76] LANGTAG			::= BASE | PREFIX | '@999' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*
+[77] INTEGER			::= [0-9]+
+[78] DECIMAL			::= [0-9]* '.' [0-9]+
+[79] DOUBLE			::= [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT
+[80] INTEGER_POSITIVE		::= '+' INTEGER
+[81] DECIMAL_POSITIVE		::= '+' DECIMAL
+[82] DOUBLE_POSITIVE		::= '+' DOUBLE
+[83] INTEGER_NEGATIVE		::= '-' INTEGER
+[84] DECIMAL_NEGATIVE		::= '-' DECIMAL
+[85] DOUBLE_NEGATIVE		::= '-' DOUBLE
+[86] EXPONENT			::= [eE] [+-]? [0-9]+
+[87] STRING_LITERAL1		::= "'" ( ([^#x27#x5C#xA#xD]) | ECHAR )* "'"
+[88] STRING_LITERAL2		::= '"' ( ([^#x22#x5C#xA#xD]) | ECHAR )* '"'
+[89] STRING_LITERAL_LONG1	::= "'''" ( ( "'" | "''" )? ( [^'\\] | ECHAR ) )* "'''"
+[90] STRING_LITERAL_LONG2	::= '"""' ( ( '"' | '""' )? ( [^"\\] | ECHAR ) )* '"""'
+[91] ECHAR			::= '\\' [tbnrf\\"']
+[92] NIL			::= '(' WS* ')'
+[93] WS				::= #x20 | #x9 | #xD | #xA
+[94] ANON			::= '[' WS* ']'
+[95] PN_CHARS_BASE		::= [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]
+[96] PN_CHARS_U			::= PN_CHARS_BASE | '_'
+[98] PN_CHARS			::= PN_CHARS_U | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
+[99] PN_PREFIX			::= PN_CHARS_BASE ((PN_CHARS|'.')* PN_CHARS)?
+[100] PN_LOCAL			::= ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
+
+@pass: [ \t\r\n]+ | '#' [^\r\n]*
+