Created
August 23, 2024 10:00
-
-
Save afs/416202c615625141f4102dc14c812ef5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |
<html> | |
<head> | |
<title>SHACL-C Grammar</title> | |
<link rel="stylesheet" type="text/css" href="https://www.w3.org/StyleSheets/TR/base.css" /> | |
<link rel="stylesheet" type="text/css" href="https://www.w3.org/2001/sw/DataAccess/rq23/local.css" /> | |
</head> | |
<body> | |
<!-- GRAMMAR --> | |
<div class="grammarTable"> | |
<table><tbody> | |
<tr style="vertical-align: baseline"> | |
<td><code>[1] </code></td> | |
<td><code><span class="doc-ref" id="rUnit">Unit</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rByteOrderMark">ByteOrderMark</a> <a href="#rshaclDoc">shaclDoc</a> EOF</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[2] </code></td> | |
<td><code><span class="doc-ref" id="rByteOrderMark">ByteOrderMark</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'\uFEFF'</span>?</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[3] </code></td> | |
<td><code><span class="doc-ref" id="rshaclDoc">shaclDoc</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rdirective">directive</a>* ( <a href="#rnodeShape">nodeShape</a> | <a href="#rshapeClass">shapeClass</a> )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[4] </code></td> | |
<td><code><span class="doc-ref" id="rdirective">directive</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rbaseDecl">baseDecl</a> | <a href="#rprefixDecl">prefixDecl</a> | <a href="#rimportDecl">importDecl</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[5] </code></td> | |
<td><code><span class="doc-ref" id="rbaseDecl">baseDecl</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'BASE'</span> <a href="#rIRIREF">IRIREF</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[6] </code></td> | |
<td><code><span class="doc-ref" id="rprefixDecl">prefixDecl</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'PREFIX'</span> <a href="#rPNAME_NS">PNAME_NS</a> <a href="#rIRIREF">IRIREF</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[7] </code></td> | |
<td><code><span class="doc-ref" id="rimportDecl">importDecl</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'IMPORTS'</span> <a href="#riri">iri</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[8] </code></td> | |
<td><code><span class="doc-ref" id="rnodeShape">nodeShape</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'shape'</span> <a href="#riri">iri</a> <a href="#rtargetClass">targetClass</a>? <a href="#rnodeShapeBody">nodeShapeBody</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[9] </code></td> | |
<td><code><span class="doc-ref" id="rshapeClass">shapeClass</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'shapeClass'</span> <a href="#riri">iri</a> <a href="#rnodeShapeBody">nodeShapeBody</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[10] </code></td> | |
<td><code><span class="doc-ref" id="rtargetClass">targetClass</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"->" <a href="#riri">iri</a>+</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[11] </code></td> | |
<td><code><span class="doc-ref" id="rnodeShapeBody">nodeShapeBody</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'{'</span> <a href="#rconstraint">constraint</a>* <span class="token">'}'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[12] </code></td> | |
<td><code><span class="doc-ref" id="rconstraint">constraint</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">( <a href="#rnodeOr">nodeOr</a>+ | <a href="#rpropertyShape">propertyShape</a> | <a href="#rshapeRef">shapeRef</a> ) <span class="token">'.'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[13] </code></td> | |
<td><code><span class="doc-ref" id="rnodeOr">nodeOr</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rnodeNot">nodeNot</a> ( <span class="token">'|'</span> <a href="#rnodeNot">nodeNot</a> )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[14] </code></td> | |
<td><code><span class="doc-ref" id="rnodeNot">nodeNot</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rnegation">negation</a>? <a href="#rnodeValue">nodeValue</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[15] </code></td> | |
<td><code><span class="doc-ref" id="rnegation">negation</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'!'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[16] </code></td> | |
<td><code><span class="doc-ref" id="rnodeValue">nodeValue</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rnodeParam">nodeParam</a> <span class="token">'='</span> ( <a href="#ririOrLiteral">iriOrLiteral</a> | <a href="#rarray">array</a> )</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[17] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyShape">propertyShape</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpath">path</a> ( <a href="#rpropertyCount">propertyCount</a> | <a href="#rpropertyOr">propertyOr</a> )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[18] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyOr">propertyOr</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpropertyNot">propertyNot</a> ( <span class="token">'|'</span> <a href="#rpropertyNot">propertyNot</a> )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[19] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyNot">propertyNot</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rnegation">negation</a>? <a href="#rpropertyAtom">propertyAtom</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[20] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyAtom">propertyAtom</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpropertyType">propertyType</a> | <a href="#rnodeKind">nodeKind</a> | <a href="#rshapeRef">shapeRef</a> | <a href="#rpropertyValue">propertyValue</a> | <a href="#rnodeShapeBody">nodeShapeBody</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[21] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyCount">propertyCount</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'['</span> <a href="#rpropertyMinCount">propertyMinCount</a> ".." <a href="#rpropertyMaxCount">propertyMaxCount</a> <span class="token">']' | |
## IRIref</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[22] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyMinCount">propertyMinCount</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rINTEGER">INTEGER</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[23] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyMaxCount">propertyMaxCount</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rINTEGER">INTEGER</a> | <span class="token">'*'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[24] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyType">propertyType</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#riri">iri</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[25] </code></td> | |
<td><code><span class="doc-ref" id="rnodeKind">nodeKind</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"BlankNode" | "IRI" | "Literal" | "BlankNodeOrIRI" | "BlankNodeOrLiteral" | "IRIOrLiteral"</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[26] </code></td> | |
<td><code><span class="doc-ref" id="rshapeRef">shapeRef</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rATPNAME_LN">ATPNAME_LN</a> | <a href="#rATPNAME_NS">ATPNAME_NS</a> | <span class="token">'@'</span> <a href="#rIRIREF">IRIREF</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[27] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyValue">propertyValue</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpropertyParam">propertyParam</a> <span class="token">'='</span> ( <a href="#ririOrLiteral">iriOrLiteral</a> | <a href="#rarray">array</a> )</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[28] </code></td> | |
<td><code><span class="doc-ref" id="rnodeParam">nodeParam</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"targetNode" | "targetObjectsOf" | "targetSubjectsOf" | "targetClass" | "deactivated" | "severity" | "message" | "class" | "datatype" | "nodeKind" | "minExclusive" | "minInclusive" | "maxExclusive" | "maxInclusive" | "minLength" | "maxLength" | "pattern" | "flags" | "languageIn" | "equals" | "disjoint" | "closed" | "ignoredProperties" | "hasValue" | "in"</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[29] </code></td> | |
<td><code><span class="doc-ref" id="rpropertyParam">propertyParam</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"deactivated" | "severity" | "message" | "class" | "datatype" | "nodeKind" | "minExclusive" | "minInclusive" | "maxExclusive" | "maxInclusive" | "minLength" | "maxLength" | "pattern" | "flags" | "languageIn" | "uniqueLang" | "equals" | "disjoint" | "lessThan" | "lessThanOrEquals" | "qualifiedValueShape" | "qualifiedMinCount" | "qualifiedMaxCount" | "qualifiedValueShapesDisjoint" | "closed" | "ignoredProperties" | "hasValue" | "in" | "group" | "order" | "name" | "description" | "defaultValue"</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[30] </code></td> | |
<td><code><span class="doc-ref" id="rPathUnit">PathUnit</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rByteOrderMark">ByteOrderMark</a> <a href="#rpath">path</a> EOF</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[31] </code></td> | |
<td><code><span class="doc-ref" id="rpath">path</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpathAlternative">pathAlternative</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[32] </code></td> | |
<td><code><span class="doc-ref" id="rpathAlternative">pathAlternative</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpathSequence">pathSequence</a> ( <span class="token">'|'</span> <a href="#rpathSequence">pathSequence</a> )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[33] </code></td> | |
<td><code><span class="doc-ref" id="rpathSequence">pathSequence</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpathEltOrInverse">pathEltOrInverse</a> ( <span class="token">'/'</span> <a href="#rpathEltOrInverse">pathEltOrInverse</a> )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[34] </code></td> | |
<td><code><span class="doc-ref" id="rpathElt">pathElt</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpathPrimary">pathPrimary</a> <a href="#rpathMod">pathMod</a>?</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[35] </code></td> | |
<td><code><span class="doc-ref" id="rpathEltOrInverse">pathEltOrInverse</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rpathElt">pathElt</a> | <span class="token">'^'</span> <a href="#rpathElt">pathElt</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[36] </code></td> | |
<td><code><span class="doc-ref" id="rpathMod">pathMod</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'?'</span> | <span class="token">'*'</span> | <span class="token">'+'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[37] </code></td> | |
<td><code><span class="doc-ref" id="rpathPrimary">pathPrimary</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">( <a href="#riri">iri</a> | <span class="token">'('</span> <a href="#rpath">path</a> <span class="token">')'</span> )</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[38] </code></td> | |
<td><code><span class="doc-ref" id="rarray">array</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'['</span> <a href="#ririOrLiteral">iriOrLiteral</a>* <span class="token">']' | |
## IRIref</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[39] </code></td> | |
<td><code><span class="doc-ref" id="ririOrLiteral">iriOrLiteral</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#riri">iri</a> | <a href="#rliteral">literal</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[40] </code></td> | |
<td><code><span class="doc-ref" id="rliteral">literal</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rrdfLiteral">rdfLiteral</a> | <a href="#rnumericLiteral">numericLiteral</a> | <a href="#rbooleanLiteral">booleanLiteral</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[41] </code></td> | |
<td><code><span class="doc-ref" id="rbooleanLiteral">booleanLiteral</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'true'</span> | <span class="token">'false'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[42] </code></td> | |
<td><code><span class="doc-ref" id="rnumericLiteral">numericLiteral</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rINTEGER">INTEGER</a> | <a href="#rDECIMAL">DECIMAL</a> | <a href="#rDOUBLE">DOUBLE</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[43] </code></td> | |
<td><code><span class="doc-ref" id="rrdfLiteral">rdfLiteral</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rstring">string</a> ( <a href="#rLANGTAG">LANGTAG</a> | ( "^^" <a href="#rdatatype">datatype</a> ) )?</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[44] </code></td> | |
<td><code><span class="doc-ref" id="rdatatype">datatype</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#riri">iri</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[45] </code></td> | |
<td><code><span class="doc-ref" id="rstring">string</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rSTRING_LITERAL1">STRING_LITERAL1</a> | <a href="#rSTRING_LITERAL2">STRING_LITERAL2</a> | <a href="#rSTRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a> | <a href="#rSTRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[46] </code></td> | |
<td><code><span class="doc-ref" id="riri">iri</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rIRIREF">IRIREF</a> | <a href="#rPrefixedName">PrefixedName</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[47] </code></td> | |
<td><code><span class="doc-ref" id="rPrefixedName">PrefixedName</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPNAME_LN">PNAME_LN</a> | <a href="#rPNAME_NS">PNAME_NS</a></code></td> | |
</tr> | |
</tbody></table> | |
</div> | |
<p>Productions for terminals:</p> | |
<div class="grammarTable"> | |
<table><tbody> | |
<tr style="vertical-align: baseline"> | |
<td><code>[48] </code></td> | |
<td><code><span class="doc-ref" id="rIRIREF">IRIREF</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><span class="token">'<' ([^<>"{}|^`\]-[#x00-#x20])* '>'</span></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[49] </code></td> | |
<td><code><span class="doc-ref" id="rHEX">HEX</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">[0-9] | [A-F] | [a-f]</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[50] </code></td> | |
<td><code><span class="doc-ref" id="rPNAME_NS">PNAME_NS</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">(<a href="#rPN_PREFIX">PN_PREFIX</a>)? ":'</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[51] </code></td> | |
<td><code><span class="doc-ref" id="rPNAME_LN">PNAME_LN</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPNAME_NS">PNAME_NS</a> <a href="#rPN_LOCAL">PN_LOCAL</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[52] </code></td> | |
<td><code><span class="doc-ref" id="rATPNAME_NS">ATPNAME_NS</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'@"<a href="#rPNAME_NS">PNAME_NS</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[53] </code></td> | |
<td><code><span class="doc-ref" id="rATPNAME_LN">ATPNAME_LN</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'@"<a href="#rPNAME_LN">PNAME_LN</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[54] </code></td> | |
<td><code><span class="doc-ref" id="rQUOTE_3D">QUOTE_3D</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'"""'</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[55] </code></td> | |
<td><code><span class="doc-ref" id="rQUOTE_3S">QUOTE_3S</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"'''"</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[56] </code></td> | |
<td><code><span class="doc-ref" id="rECHAR">ECHAR</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'\' [tbnrf"']</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[57] </code></td> | |
<td><code><span class="doc-ref" id="rUCHAR">UCHAR</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rUCHAR4">UCHAR4</a> | <a href="#rUCHAR8">UCHAR8</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[58] </code></td> | |
<td><code><span class="doc-ref" id="rUCHAR4">UCHAR4</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'\u' <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[59] </code></td> | |
<td><code><span class="doc-ref" id="rUCHAR8">UCHAR8</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'\U" <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[60] </code></td> | |
<td><code><span class="doc-ref" id="rSTRING_LITERAL1">STRING_LITERAL1</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"'" ( ([^#x27#x5C#xA#xD]) | <a href="#rECHAR">ECHAR</a> )* "'"</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[61] </code></td> | |
<td><code><span class="doc-ref" id="rSTRING_LITERAL2">STRING_LITERAL2</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'"' ( ([^#x22#x5C#xA#xD]) | <a href="#rECHAR">ECHAR</a> )* '"'</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[62] </code></td> | |
<td><code><span class="doc-ref" id="rSTRING_LITERAL_LONG1">STRING_LITERAL_LONG1</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">"'''" ( ( "'" | "''" )? ( [^'\] | <a href="#rECHAR">ECHAR</a> ) )* "'''"</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[63] </code></td> | |
<td><code><span class="doc-ref" id="rSTRING_LITERAL_LONG2">STRING_LITERAL_LONG2</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'"""' ( ( '"' | '""' )? ( [^"\] | <a href="#rECHAR">ECHAR</a> ) )* '"""'</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[64] </code></td> | |
<td><code><span class="doc-ref" id="rINTEGER">INTEGER</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">(<span class="token">'+'</span>|<span class="token">'-'</span>)? [0-9]+</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[65] </code></td> | |
<td><code><span class="doc-ref" id="rDECIMAL">DECIMAL</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">(<span class="token">'+'</span>|<span class="token">'-'</span>)? ( [0-9]* '.' [0-9]+ )</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[66] </code></td> | |
<td><code><span class="doc-ref" id="rDOUBLE">DOUBLE</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">(<span class="token">'+'</span>|<span class="token">'-'</span>)? [0-9]+ '.' [0-9]* <a href="#rEXPONENT">EXPONENT</a> | '.' ([0-9])+ <a href="#rEXPONENT">EXPONENT</a> | ([0-9])+ <a href="#rEXPONENT">EXPONENT</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[67] </code></td> | |
<td><code><span class="doc-ref" id="rEXPONENT">EXPONENT</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">[eE] [+-]? [0-9]+</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[68] </code></td> | |
<td><code><span class="doc-ref" id="rLANGTAG">LANGTAG</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'@' [a-zA-Z]+ ('-' [a-zA-Z0-9]+)*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[69] </code></td> | |
<td><code><span class="doc-ref" id="rPN_CHARS_BASE">PN_CHARS_BASE</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">[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]</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[70] </code></td> | |
<td><code><span class="doc-ref" id="rPN_CHARS_U">PN_CHARS_U</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPN_CHARS_BASE">PN_CHARS_BASE</a> | '_'</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[71] </code></td> | |
<td><code><span class="doc-ref" id="rVARNAME">VARNAME</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">( <a href="#rPN_CHARS_U">PN_CHARS_U</a> | ["0"-"9"] ) | |
( <a href="#rPN_CHARS_U">PN_CHARS_U</a> | ["0"-"9"] | "\u00B7" |["\u0300"-"\u036F"] | ["\u203F"-"\u2040"] )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[72] </code></td> | |
<td><code><span class="doc-ref" id="rPN_CHARS">PN_CHARS</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPN_CHARS_U">PN_CHARS_U</a> | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[73] </code></td> | |
<td><code><span class="doc-ref" id="rPN_PREFIX">PN_PREFIX</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPN_CHARS_BASE">PN_CHARS_BASE</a> ((<a href="#rPN_CHARS">PN_CHARS</a>|'.')* <a href="#rPN_CHARS">PN_CHARS</a>)?</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[74] </code></td> | |
<td><code><span class="doc-ref" id="rPN_LOCAL">PN_LOCAL</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">(<a href="#rPN_CHARS_U">PN_CHARS_U</a> | ':' | [0-9] | <a href="#rPLX">PLX</a> ) ((<a href="#rPN_CHARS">PN_CHARS</a> | '.' | ':' | <a href="#rPLX">PLX</a>)* (<a href="#rPN_CHARS">PN_CHARS</a> | ':' | <a href="#rPLX">PLX</a>) )?</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[75] </code></td> | |
<td><code><span class="doc-ref" id="rPLX">PLX</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPERCENT">PERCENT</a> | <a href="#rPN_LOCAL_ESC">PN_LOCAL_ESC</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[76] </code></td> | |
<td><code><span class="doc-ref" id="rVARNAME">VARNAME</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">( <a href="#rPN_CHARS_U">PN_CHARS_U</a> | ["0"-"9"] ) | |
( <a href="#rPN_CHARS_U">PN_CHARS_U</a> | ["0"-"9"] | "\u00B7" |["\u0300"-"\u036F"] | ["\u203F"-"\u2040"] )*</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[77] </code></td> | |
<td><code><span class="doc-ref" id="rPN_LOCAL_ESC">PN_LOCAL_ESC</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )</code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[78] </code></td> | |
<td><code><span class="doc-ref" id="rPLX">PLX</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody"><a href="#rPERCENT">PERCENT</a> | <a href="#rPN_LOCAL_ESC">PN_LOCAL_ESC</a></code></td> | |
</tr> | |
<tr style="vertical-align: baseline"> | |
<td><code>[79] </code></td> | |
<td><code><span class="doc-ref" id="rPERCENT">PERCENT</span></code></td> | |
<td> ::= </td> | |
<td><code class="gRuleBody">'%' <a href="#rHEX">HEX</a> <a href="#rHEX">HEX</a></code></td> | |
</tr> | |
</tbody></table> | |
</div> | |
<!-- GRAMMAR --> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment