Blame | Letzte Änderung | Log anzeigen | RSS feed
// CodeMirror, copyright (c) by Marijn Haverbeke and others// Distributed under an MIT license: http://codemirror.net/LICENSE/*********************************************************** This script provides syntax highlighting support for* the Ntriples format.* Ntriples format specification:* http://www.w3.org/TR/rdf-testcases/#ntriples***********************************************************//*The following expression defines the defined ASF grammar transitions.pre_subject ->{( writing_subject_uri | writing_bnode_uri )-> pre_predicate-> writing_predicate_uri-> pre_object-> writing_object_uri | writing_object_bnode |(writing_object_literal-> writing_literal_lang | writing_literal_type)-> post_object-> BEGIN} otherwise {-> ERROR}*/(function(mod) {if (typeof exports == "object" && typeof module == "object") // CommonJSmod(require("../../lib/codemirror"));else if (typeof define == "function" && define.amd) // AMDdefine(["../../lib/codemirror"], mod);else // Plain browser envmod(CodeMirror);})(function(CodeMirror) {"use strict";CodeMirror.defineMode("ntriples", function() {var Location = {PRE_SUBJECT : 0,WRITING_SUB_URI : 1,WRITING_BNODE_URI : 2,PRE_PRED : 3,WRITING_PRED_URI : 4,PRE_OBJ : 5,WRITING_OBJ_URI : 6,WRITING_OBJ_BNODE : 7,WRITING_OBJ_LITERAL : 8,WRITING_LIT_LANG : 9,WRITING_LIT_TYPE : 10,POST_OBJ : 11,ERROR : 12};function transitState(currState, c) {var currLocation = currState.location;var ret;// Opening.if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI;else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI;else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI;else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI;else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE;else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL;// Closing.else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED;else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED;else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ;else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ;else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ;else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ;else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ;else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ;// Closing typed and language literal.else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG;else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE;// Spaces.else if( c == ' ' &&(currLocation == Location.PRE_SUBJECT ||currLocation == Location.PRE_PRED ||currLocation == Location.PRE_OBJ ||currLocation == Location.POST_OBJ)) ret = currLocation;// Reset.else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT;// Errorelse ret = Location.ERROR;currState.location=ret;}return {startState: function() {return {location : Location.PRE_SUBJECT,uris : [],anchors : [],bnodes : [],langs : [],types : []};},token: function(stream, state) {var ch = stream.next();if(ch == '<') {transitState(state, ch);var parsedURI = '';stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} );state.uris.push(parsedURI);if( stream.match('#', false) ) return 'variable';stream.next();transitState(state, '>');return 'variable';}if(ch == '#') {var parsedAnchor = '';stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;});state.anchors.push(parsedAnchor);return 'variable-2';}if(ch == '>') {transitState(state, '>');return 'variable';}if(ch == '_') {transitState(state, ch);var parsedBNode = '';stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;});state.bnodes.push(parsedBNode);stream.next();transitState(state, ' ');return 'builtin';}if(ch == '"') {transitState(state, ch);stream.eatWhile( function(c) { return c != '"'; } );stream.next();if( stream.peek() != '@' && stream.peek() != '^' ) {transitState(state, '"');}return 'string';}if( ch == '@' ) {transitState(state, '@');var parsedLang = '';stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;});state.langs.push(parsedLang);stream.next();transitState(state, ' ');return 'string-2';}if( ch == '^' ) {stream.next();transitState(state, '^');var parsedType = '';stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} );state.types.push(parsedType);stream.next();transitState(state, '>');return 'variable';}if( ch == ' ' ) {transitState(state, ch);}if( ch == '.' ) {transitState(state, ch);}}};});CodeMirror.defineMIME("text/n-triples", "ntriples");});