BLC.grm

// FILE. . . . . /home/hak/ilt/src/ilog/rif/BLC.grm
// EDIT BY . . . Hassan Ait-Kaci
// ON MACHINE. . 4j4zn71
// STARTED ON. . Wed Apr 02 14:08:56 2008

// Last modified on Fri Nov 14 07:59:43 2008 by hak

////////////////////////////////////////////////////////////////////////
// The BLD Condition Language:
////////////////////////////////////////////////////////////////////////

// Meta-annotations:

IriMeta
  : OPENMETA IriConst_opt IriMetaBody_opt CLOSEMETA
  ;

IriMetaBody
  : Frame
  | AND OPENPAR Frame_star CLOSEPAR
  ;

////////////////////////////////////////////////////////////////////////

// Terms and formulae:

Formula
  : IriMeta_opt RawFormula
  ;

RawFormula
  : AtomicFormula
  | AND OPENPAR Formula_star CLOSEPAR
  | OR OPENPAR Formula_star CLOSEPAR
  | EXISTS Var_plus OPENPAR Formula CLOSEPAR
  | EXTERNAL OPENPAR AtomOrFrame CLOSEPAR
  ;

AtomicFormula
  : Atom
  | Equal
  | Member
  | Subclass
  | Frame
  ;

AtomOrFrame
  : Atom
  | Frame
  ;

Atom
  : UniTerm
  ;

UniTerm
  : Const OPENPAR UniTermBody CLOSEPAR
  ;

Equal
  : Term EQUAL Term
  ;

Member
  : Term MEMBER Term
  ;

Subclass
  : Term SUBCLASS Term
  ;

Frame
  : Term OPENBRA FrameAttribute_star CLOSEBRA
  ;

FrameAttribute
  : Term ARROW Term
  ;

Term
  : IriMeta_opt RawTerm
  ;

RawTerm
  : Const
  | Var
  | Expr
  | EXTERNAL OPENPAR Expr CLOSEPAR
  ;

Expr
  : UniTerm
  ;

Const
  : FullyQualifiedConstant
  | ConstShort
  ;

FullyQualifiedConstant
  : STRING LEXSPACE SymSpace
  ;

SymSpace
  : Curie
//   | ANGLEBRACKETIRI
  ;  

ConstShort
 : NUMBER	 	// shorthand for "..."^^xs:integer,xs:decimal,xs:double
 | STRING		// shorthand for "..."^^xs:string
 | LOCALNAME		// shorthand for "..."^^rif:local
 | ANGLEBRACKETIRI	// shorthand for "..."^^rif:iri
 | Curie		// shorthand for "..."^^rif:iri
 ;

Var
  : VARIABLE
  ;

// UniTermBody
//   : Term_star
//   | TermAttribute_star
//   ;

// The above rules create an unliftable R/R conflict; so we use the
// following rules instead. This is not quite correct as it allows
// mixing slotted and non-slotted subterms in UniTerms, but it'll do for
// now.

UniTermBody
  : TermArgument_star
  ;

TermArgument
  : Term /*
  | TermAttribute */
  ;

// TermAttribute
//   : Name ARROW Term
//   ;

////////////////////////////////////////////////////////////////////////

Var_plus
  : Var
  | Var_plus Var
  ;

IriMeta_opt
  : /* empty */		%prec LEASTPREC
  | IriMeta
  ;

IriConst_opt
  : /* empty */		%prec LEASTPREC
  | IriConst
  ;

IriMetaBody_opt
  : /* empty */		%prec LEASTPREC
  | IriMetaBody
  ;

Formula_star
  : /* empty */		%prec LEASTPREC
  | Formula_star Formula
  ;

// Term_star
//   : /* empty */		%prec LEASTPREC
//   | Term_star Term
//   ;

// TermAttribute_star
//   : /* empty */		%prec LEASTPREC
//   | TermAttribute_star TermAttribute
//   ;

TermArgument_star
  : /* empty */		%prec LEASTPREC
  | TermArgument TermArgument_star 		%prec HIGHESTPREC
  ;

Frame_star
  : /* empty */		%prec LEASTPREC
  | Frame_star Frame
  ;

FrameAttribute_star
  : /* empty */		%prec LEASTPREC
  | FrameAttribute_star FrameAttribute
  ;

////////////////////////////////////////////////////////////////////////


This file was generated on Mon Nov 17 15:35:41 PST 2008 from file BLC.grm
by the ilog.language.tools.Hilite Java tool written by Hassan Aït-Kaci