org.coode.owlapi.obo12.parser.OBOParser.jj Maven / Gradle / Ivy
options {
JAVA_UNICODE_ESCAPE=true;
STATIC=false;
JAVA_TEMPLATE_TYPE = "modern";
EXCEPTIONS_SUPER_CLASS = "org.semanticweb.owlapi.io.OWLParserException";
SUPPORT_CLASS_VISIBILITY_PUBLIC=false;
}
PARSER_BEGIN(OBOParser)
package org.coode.owlapi.obo12.parser;
import org.semanticweb.owlapi.model.*;
import java.net.*;
import java.util.*;
@SuppressWarnings("all")
public class OBOParser {
private OBOParserHandler handler;
public void setHandler(OBOParserHandler handler) {
this.handler = handler;
}
}
PARSER_END(OBOParser)
SKIP: { <"\n"|"\r"|"\t"|" "> }
/////////////////////////////////////////////////////////////////////////////////////
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;} }
© 2015 - 2025 Weber Informatics LLC | Privacy Policy