⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 turtleparser.java

📁 Jena推理机
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* Generated By:JavaCC: Do not edit this line. TurtleParser.java */
/*
 * (c) Copyright 2006, 2007 Hewlett-Packard Development Company, LP
 * All rights reserved.
 */

package com.hp.hpl.jena.n3.turtle.parser ;

import com.hp.hpl.jena.n3.turtle.ParserBase ;
import com.hp.hpl.jena.graph.* ;

public class TurtleParser extends ParserBase implements TurtleParserConstants {

// --- Entry point
  final public void parse() throws ParseException {
    label_1:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case PREFIX:
      case INTEGER:
      case DECIMAL:
      case DOUBLE:
      case STRING_LITERAL1:
      case STRING_LITERAL2:
      case STRING_LITERAL_LONG1:
      case STRING_LITERAL_LONG2:
      case Q_IRIref:
      case QNAME_NS:
      case QNAME:
      case BLANK_NODE_LABEL:
      case VAR1:
      case VAR2:
      case LPAREN:
      case NIL:
      case LBRACE:
      case LBRACKET:
      case ANON:
        ;
        break;
      default:
        jj_la1[0] = jj_gen;
        break label_1;
      }
      Statement();
    }
    jj_consume_token(0);
  }

  final public void Statement() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case PREFIX:
      Directive();
      break;
    case INTEGER:
    case DECIMAL:
    case DOUBLE:
    case STRING_LITERAL1:
    case STRING_LITERAL2:
    case STRING_LITERAL_LONG1:
    case STRING_LITERAL_LONG2:
    case Q_IRIref:
    case QNAME_NS:
    case QNAME:
    case BLANK_NODE_LABEL:
    case VAR1:
    case VAR2:
    case LPAREN:
    case NIL:
    case LBRACE:
    case LBRACKET:
    case ANON:
      TriplesSameSubject();
      break;
    default:
      jj_la1[1] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    jj_consume_token(DOT);
  }

  final public void Directive() throws ParseException {
                     Token t ; Node n ;
    jj_consume_token(PREFIX);
    t = jj_consume_token(QNAME_NS);
    n = Q_IRI_REF();
      String s = fixupPrefix(t.image, t.beginLine, t.beginColumn) ;
      setPrefix(s, n.getURI()) ;
  }

// N3

// ---- TRIPLES
// <<<<< SPARQL extract
  final public void TriplesSameSubject() throws ParseException {
                              Node s ;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER:
    case DECIMAL:
    case DOUBLE:
    case STRING_LITERAL1:
    case STRING_LITERAL2:
    case STRING_LITERAL_LONG1:
    case STRING_LITERAL_LONG2:
    case Q_IRIref:
    case QNAME_NS:
    case QNAME:
    case BLANK_NODE_LABEL:
    case VAR1:
    case VAR2:
    case NIL:
    case LBRACE:
    case ANON:
      s = VarOrTerm();
      PropertyListNotEmpty(s);
      break;
    case LPAREN:
    case LBRACKET:
      // Any of the triple generating syntax elements
        s = TriplesNode();
      PropertyList(s);
      break;
    default:
      jj_la1[2] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
  }

  final public void PropertyList(Node s) throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case KW_A:
    case Q_IRIref:
    case QNAME_NS:
    case QNAME:
    case ARROW:
      PropertyListNotEmpty(s);
      break;
    default:
      jj_la1[3] = jj_gen;
      ;
    }
  }

// >>>>> SPARQL extract

// Non-recursive for Turtle long PropertyList tests
  final public void PropertyListNotEmpty(Node s) throws ParseException {
                                      Node p ;
    p = Verb();
    ObjectList(s, p);
    label_2:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case SEMICOLON:
        ;
        break;
      default:
        jj_la1[4] = jj_gen;
        break label_2;
      }
      jj_consume_token(SEMICOLON);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case KW_A:
      case Q_IRIref:
      case QNAME_NS:
      case QNAME:
      case ARROW:
        p = Verb();
        ObjectList(s, p);
        break;
      default:
        jj_la1[5] = jj_gen;
        ;
      }
    }
  }

// Non-recursive for Turtle long PropertyList tests
  final public void ObjectList(Node s, Node p) throws ParseException {
                                   Node o ;
    Object(s, p);
    label_3:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case COMMA:
        ;
        break;
      default:
        jj_la1[6] = jj_gen;
        break label_3;
      }
      jj_consume_token(COMMA);
      Object(s, p);
    }
  }

  final public void Object(Node s, Node p) throws ParseException {
                               Node o ;
    o = GraphNode();
    Triple t = new Triple(s,p,o) ;
    emitTriple(token.beginLine, token.beginColumn, t) ;
  }

// <<<<< SPARQL extract
  final public Node Verb() throws ParseException {
               Node p ;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case Q_IRIref:
    case QNAME_NS:
    case QNAME:
      p = IRIref();
      break;
    case KW_A:
      jj_consume_token(KW_A);
                            p = nRDFtype ;
      break;
    case ARROW:
      jj_consume_token(ARROW);
        p = nLogImplies ;
        if ( strictTurtle )
          raiseException("=> (log:implies) not legalin Turtle",
                          token.beginLine, token.beginColumn ) ;
      break;
    default:
      jj_la1[7] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return p ;}
    throw new Error("Missing return statement in function");
  }

// -------- Triple expansions

// Anything that can stand in a node slot and which is
// a number of triples
  final public Node TriplesNode() throws ParseException {
                       Node n ;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case LPAREN:
      n = Collection();
                     {if (true) return n ;}
      break;
    case LBRACKET:
      n = BlankNodePropertyList();
                                {if (true) return n ;}
      break;
    default:
      jj_la1[8] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  final public Node BlankNodePropertyList() throws ParseException {
    jj_consume_token(LBRACKET);
      Node n = createBNode() ;
    PropertyListNotEmpty(n);
    jj_consume_token(RBRACKET);
      {if (true) return n ;}
    throw new Error("Missing return statement in function");
  }

// ------- RDF collections

// Code not as SPARQL/ARQ because of output ordering.
  final public Node Collection() throws ParseException {
      Node listHead = nRDFnil ; Node lastCell = null ; Node n ;
    jj_consume_token(LPAREN);
    label_4:
    while (true) {
      Node cell = createBNode() ;
      if ( listHead == nRDFnil )
         listHead = cell ;
      if ( lastCell != null )
        emitTriple(token.beginLine, token.beginColumn,
                   new Triple(lastCell, nRDFrest,  cell)) ;
      n = GraphNode();
      emitTriple(token.beginLine, token.beginColumn,
                 new Triple(cell, nRDFfirst,  n)) ;
      lastCell = cell ;
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER:
      case DECIMAL:
      case DOUBLE:
      case STRING_LITERAL1:
      case STRING_LITERAL2:
      case STRING_LITERAL_LONG1:
      case STRING_LITERAL_LONG2:
      case Q_IRIref:
      case QNAME_NS:
      case QNAME:
      case BLANK_NODE_LABEL:
      case VAR1:
      case VAR2:
      case LPAREN:
      case NIL:
      case LBRACE:
      case LBRACKET:
      case ANON:
        ;
        break;
      default:
        jj_la1[9] = jj_gen;
        break label_4;
      }
    }
    jj_consume_token(RPAREN);
     if ( lastCell != null )
       emitTriple(token.beginLine, token.beginColumn,
                  new Triple(lastCell, nRDFrest,  nRDFnil)) ;
     {if (true) return listHead ;}
    throw new Error("Missing return statement in function");
  }

// -------- Nodes in a graph pattern or template
  final public Node GraphNode() throws ParseException {
                     Node n ;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case INTEGER:
    case DECIMAL:
    case DOUBLE:
    case STRING_LITERAL1:
    case STRING_LITERAL2:
    case STRING_LITERAL_LONG1:
    case STRING_LITERAL_LONG2:
    case Q_IRIref:
    case QNAME_NS:
    case QNAME:
    case BLANK_NODE_LABEL:
    case VAR1:
    case VAR2:
    case NIL:
    case LBRACE:
    case ANON:
      n = VarOrTerm();
                    {if (true) return n ;}
      break;
    case LPAREN:
    case LBRACKET:
      n = TriplesNode();
                      {if (true) return n ;}
      break;
    default:
      jj_la1[10] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    throw new Error("Missing return statement in function");
  }

  final public Node VarOrTerm() throws ParseException {
                    Node n = null ;
    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
    case VAR1:
    case VAR2:
      n = Var();
      break;
    case INTEGER:
    case DECIMAL:
    case DOUBLE:
    case STRING_LITERAL1:
    case STRING_LITERAL2:
    case STRING_LITERAL_LONG1:
    case STRING_LITERAL_LONG2:
    case Q_IRIref:
    case QNAME_NS:
    case QNAME:
    case BLANK_NODE_LABEL:
    case NIL:
    case ANON:
      n = GraphTerm();
      break;
    case LBRACE:
      n = Formula();
      break;
    default:
      jj_la1[11] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
    {if (true) return n ;}
    throw new Error("Missing return statement in function");
  }

  final public Node Formula() throws ParseException {
                  Token t ;
    t = jj_consume_token(LBRACE);
                   startFormula(t.beginLine, t.beginColumn) ;
    TriplesSameSubject();
    label_5:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case DOT:
        ;
        break;
      default:
        jj_la1[12] = jj_gen;
        break label_5;
      }
      jj_consume_token(DOT);
      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
      case INTEGER:
      case DECIMAL:
      case DOUBLE:
      case STRING_LITERAL1:
      case STRING_LITERAL2:
      case STRING_LITERAL_LONG1:
      case STRING_LITERAL_LONG2:
      case Q_IRIref:
      case QNAME_NS:
      case QNAME:
      case BLANK_NODE_LABEL:
      case VAR1:
      case VAR2:
      case LPAREN:
      case NIL:
      case LBRACE:
      case LBRACKET:
      case ANON:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -