[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Fwd: ABNF
Joseph,Thank you for extending this all the way through. I finally got a chance to look this over at a high level, and it looks pretty clean. Obviously it needs review at a much lower and more detailed level, as you have been doing in putting it together and testing it, but I won't be able to do that until at least Thursday and more likely next week.The question of changing nesting order or switching symbols is obviously a very big one—I'm loathe to make any changes to syntax at this point unless there is an overwhelming good reason—but as you work through it, lay out your case.Markus, I think we should schedule at least a report on this progress for this Friday's TC call (given that we won't be having one next week).Thanks,=DrummondOn Sun, Nov 16, 2014 at 4:52 PM, Joseph Boyle <boyle.joseph@gmail.com> wrote:This is not complete, but I wanted to keep you up on progress, and give Markus and Hubert a sample grammar that generates successfully with http://www.coasttocoastresearch.com/interactiveapgSome problems with interaction between successive lines (e.g. when object ends with &) so best to test one XDI statement at a time.Extra whitespace / blanklines are not provided for.Literal statements use /&/ not old form &/&/The following are workarounds added for features that are not working:xdi-name-char is relaxed to include “:” because xdi-uuid is failing to match (an example in isolation works, not sure where bad interaction is)Relaxed constraint that attribute collection with no attribute member can’t be used for literal because greedy matching is breaking itDrummond: the part in red reflects our work this last week on which combinations are allowable, if you want to check. There’s some extra complexity in order to get the brackets in the nesting order we currently specify - I’d like to consider the best order, and also whether to switch {} and ||.xdi-statements = xdi-statement *( ENDLINE xdi-statement ) *ENDLINExdi-statement = contextual-statement / relational-statement / literal-statementcontextual-statement = peer-root-context / inner-root-context / entity-part-context / entity-member-contextattr-part-context / attr-member-contextrelational-statement = rooted-address "/" common-address "/" xdi-addressliteral-statement = rooted-address "/&/" json-valuepeer-root-context = *peer-root "//" peer-rootinner-root-context = root-address "//" inner-rootentity-part-context = root-address *entity-part "//" ( entity-singleton / entity-collection )entity-member-context = root-address *entity-part entity-collection "//" entity-memberattr-part-context = rooted-address "//" ( attr-singleton / attr-collection )attr-member-context = rooted-address attr-collection "//" attr-memberxdi-address = literal-address / rooted-addressrooted-address = root-address common-addressroot-address = *peer-root *inner-rootcommon-address = entity-address attr-addressentity-address = *entity-partattr-address = *attr-partliteral-address = rooted-address attr-unit "&"arc-address = peer-root / inner-root / entity-singleton / entity-collection / entity-member /attr-singleton / attr-collection / attr-memberpeer-root = "(" common-address ")"inner-root = "(" common-address "/" common-address ")"entity-unit = ( entity-collection entity-member ) / entity-singletonentity-part = ( entity-collection [ entity-member ] ) / entity-singletonattr-unit = ( attr-collection attr-member ) / attr-singletonattr-part = ( attr-collection [ attr-member ] ) / attr-singletonentity-singleton = authority-singleton / authority-variable / class-singleton / class-variable / class-definitionauthority-variable = VARL authority-singleton VARRclass-variable = VARL class-singleton VARRclass-definition = DEFL class-singleton DEFLauthority-singleton = person-singleton / legal-singleton / general-singletonclass-singleton = unreserved-class / reserved-classperson-singleton = "=" C-I name-scheme-xreflegal-singleton = "+" C-I name-scheme-xrefgeneral-singleton = "*" C-I name-scheme-xrefunreserved-class = "#" C-I name-scheme-xrefreserved-class = "$" C-I xdi-nameentity-collection = authority-collection / auth-var-coll / class-collection / class-var-collauth-var-coll = VARL authority-collection VARRclass-var-coll = VARL class-collection VARRauthority-collection = person-collection / legal-collection / general-collectionclass-collection = reserved-collection / unreserved-collectionperson-collection = COLL "=" COLRlegal-collection = COLL "+" COLRgeneral-collection = COLL "*" COLRreserved-collection = COLL reserved-class COLRunreserved-collection= COLL unreserved-class COLRentity-member = membermember = ordered-member / unordered-memberordered-member = "@" C-I ( ( %x31-39 DIGIT ) / "0" )unordered-member = "!" name-scheme-xrefattr-singleton = attr-class/ attr-var / attr-defnattr-collection = attr-coll-nonvar / attr-coll-varattr-coll-var = VARL attr-coll-nonvar VARRattr-var = VARL attr-class VARRattr-coll-nonvar = COLL attr-class COLRattr-defn = DEFL attr-class DEFRattr-class = ATTL C-I class-singleton ATTRattr-member = ATTL C-I member ATTRCOLL = "["COLR = "]"ATTL = "<"ATTR = ">"DEFL = "|"DEFR = "|"VARL = "{"VARR = "}"C-I = ""name-scheme-xref = xdi-name / xdi-scheme / xrefxref = "(" ( common-address / xdi-iri / xdi-name ) ")"xdi-scheme = xdi-sha-256 / xdi-sha-384 / xdi-sha-512 / xdi-uuid / xdi-ipv6xdi-uuid = ":uuid:" 8HEX "-" 4HEX "-" 4HEX "-" 4HEX "-" 12HEXxdi-sha-256 = ":sha-256:" 64HEXxdi-sha-384 = ":sha-384:" 96HEXxdi-sha-512 = ":sha-512:" 128HEXxdi-ipv6 = ":ipv6:" 4HEX 7*( ":" 4HEX )xdi-name = *xdi-name-charxdi-name-char = UPPER / LOWER / DIGIT / "-" / "." / "_" / ":" / %x80-EFFFDcontext-symbol = "!" / "*" / "=" / "#" / "+" / "$"LOWER = %x61-7AUPPER = %x41-5AHEX = DIGIT / %x61-66DIGIT = %x30-39NZDIG = %x31-39QUOTE = %x22ENDLINE = %x0D / %x0A / ( %x0D %x0A )xdi-iri = iri-scheme ":" *iri-bodyiri-scheme = LOWER *( LOWER / DIGIT )iri-body = ( "(" iri-body ")" ) / *iri-chariri-char = xdi-name-char / context-symbol / iri-delimiri-delim = "/" / "?" / "#" / "[" / "]" / "'" / ","json-value = json-object / json-array / json-string / json-number / "true" / "false" / "null"json-object = "{" [ json-string ":" json-value *( "," json-string ":" json-value ) ] "}"json-array = "[" [ json-value *( "," json-value ) ] "]"json-string = QUOTE *( " " / "!" / %x23-5B / %x5D-EFFFD / json-escape ) QUOTEjson-escape = "\" ("\" / "/" / "b" / "f" / "n" / "r" / "t" / QUOTE / ( "u" 4HEX ) )json-number = ( "0" / [ "-" ] noleading ) [ "." notrailing ] [ "E" [ "-" ] noleading ]noleading = %x31-39 *DIGITnotrailing = *DIGIT %x31-39
Attachment:
xdi.2014-11-18.modified.abnf
Description: Binary data
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]