org.coode.owlapi.obo.parser.OBOParser.jj Maven / Gradle / Ivy
options {
JAVA_UNICODE_ESCAPE=true;
STATIC=false;
// DEBUG_TOKEN_MANAGER=true;
}
PARSER_BEGIN(OBOParser)
package org.coode.owlapi.obo.parser;
import org.semanticweb.owlapi.model.*;
import java.net.*;
import java.util.*;
import org.coode.string.*;
@SuppressWarnings("all")
public class OBOParser {
private OBOParserHandler handler;
public void setHandler(OBOParserHandler handler) {
this.handler = handler;
}
}
PARSER_END(OBOParser)
/////////////////////////////////////////////////////////////////////////////////
SKIP:
{
<"\n">
}
SKIP:
{
<"\r">
}
SKIP:
{
<"\t">
}
SKIP:
{
<" ">
}
/////////////////////////////////////////////////////////////////////////////////////
SKIP :
{
}
TOKEN:
{
: IN_STANZA_HEADER
}
TOKEN:
{
}
TOKEN:
{
: DEFAULT
}
TOKEN:
{
: IN_TAG_VALUE_PAIR
}
SKIP:
{
: IN_TAG_VALUE
}
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
////
////
////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
SKIP:
{
: IN_QUOTED_STRING
}
TOKEN :
{
}
SKIP :
{
: IN_TAG_VALUE // To allow for malformed files - they do exist!
}
SKIP :
{
: DEFAULT
}
TOKEN:
{
}
TOKEN :
{
}
SKIP:
{
: DEFAULT
}
SKIP:
{
: IN_COMMENT
}
TOKEN:
{
}
SKIP :
{
: DEFAULT
}
TOKEN:
{
}
public void parse() :
{
}
{
Header()(Stanza())+
}
void Header() :
{
}
{
{handler.startHeader();}
((TagValuePair())*)
{handler.endHeader();}
}
void Stanza() :
{
Token t;
}
{
(t={handler.startFrame(t.image);} (TagValuePair())*)
{handler.endFrame();}
}
void TagValuePair() :
{
Token tagToken = null;
Token valToken = null;
String qualifierBlock = "";
String comment = "";
Token t;
StringBuilder sb = new StringBuilder();
}
{
tagToken= ((t={sb.append(t.image);} | t={sb.append(t.image);} | t={sb.append(t.image);}))* (comment=Comment())? {
String name = tagToken.image.trim();
String val = sb.toString().trim();
// This a real mess. The OBO format allows qualifier blocks at the end of lines. However, things that look
// like qualifier blocks can appear in the middle of values for comment tags.
if(val.endsWith("}")) {
int qualifierStart = val.lastIndexOf("{");
if(qualifierStart != -1) {
qualifierBlock = val.substring(qualifierStart);
val = val.substring(0, qualifierStart).trim();
}
}
handler.handleTagValue(name, val, qualifierBlock, comment);
}
}
String Comment() :
{
Token t;
}
{
t= {return t.image;}
}