java parser generator
home
features
documentation
grammars
downloads
site originally designed by ninth ave
/**
 *
 *               dpANSI KIF grammar
 *              for pattern matcher.
 * 
 *            This is grammar file of:
 *                  patterns for
 *           Knowledge Interchange Format
 *    draft proposed American National Standard
 *                 (dpANS KIF)
 *               NCITS.T2/98-004
 *
 * This file is a KIF parser source file for SableCC
 * (Sable Compiler Compiler by Etienne Gagnon).
 *
 * Copyright (C) 1998-2001 Mariusz Nowostawski and others.
 * All rights reserved.  (see doc/LICENSE and doc/AUTHORS)
 *
 * Contact:
 *        e-mail: mariusz@rakiura.org
 * 
 */



Package nzdis.lang.kif.pattern;

Helpers

 tab = 9;
 cr = 13;
 lf = 10;
 eol = cr lf | cr | lf |;
 white = (' ' | tab | eol)+ ;

 upper = ['A'..'Z'];
 lower = ['a'..'z'];
 digit = ['0'..'9'];

 alpha = [
          [
           [['!' + '$'] + ['%' + '&']] 
          +
           [['*' + '+'] + ['-' + '.']]
          ]
         +
          [
           [['/' + '<'] + ['@' + '?']]
          +
	   [['>' + '='] + ['_' + '~']]
          ]
         ];

 special = [[[['"' + '#'] + ['(' + ')']] + [[',' + '\'] + ['^' + '`']]] + '''] ;

 normal = [[upper + lower] + [digit + alpha]] ;

 word = (normal | '\' [[0 .. 0xffff] - [[10 + 13] + [9 + ' ']]]  )+;

 l_par  = '(';
 r_par  = ')';
 r_ap   = ''';
 u_arrow = '^';
 eq     = '=';
 ineq   = '/=';
 at     = '@';
 q_mark = '?';
 col_eq = ':=';
 quote = 'qoute';

 defobject   = 'defobject';
 deffunction = 'deffunction';
 defrelation = 'defrelation';
 deflogical  = 'deflogical';

 not = 'not';
 and = 'and';
 or  = 'or';
 dbl_r_arrow = '=>';
 dbl_l_arrow = '<=';
 arrow_dbl_arrow = '<=>';

 if  = 'if';
 cond = 'cond';
 value = 'value'; 
 listof = 'listof';
 holds = 'holds';
 forall = 'forall';
 exists = 'exists';

 col_dbl_r_arrow = ':=>';
 col_dbl_l_arrow = ':<=';
 col_r_arrow = ':->';
 

Tokens

 line_comment = '/' '/' [[0 .. 0xffff] - [cr + lf]]* eol |
                ';' [[0 .. 0xffff] - [cr + lf]]* eol ;

 multiline_comment = '/' '*' [[0 .. 0xffff] - ['*' + '/']]* '*' '/' ;

 string = '"' ([[0 .. 0xffff] - ['"' + '\']] | '\'[0 .. 0xffff])+ '"';

 charref = '#' '\' [0 .. 0xffff];

 l_par  = l_par;
 r_par  = r_par;
 r_ap   = r_ap;
 u_arrow = u_arrow;
 eq     = eq;
 ineq   = ineq;
 at     = at;
 q_mark = q_mark;
 col_eq = col_eq;
 quote = quote;

 defobject   = defobject;
 deffunction = deffunction;
 defrelation = defrelation;
 deflogical  = deflogical;

 not = not;
 and = and;
 or  = or;
 dbl_r_arrow = dbl_r_arrow;
 dbl_l_arrow = dbl_l_arrow;
 arrow_dbl_arrow = arrow_dbl_arrow;

 col_dbl_r_arrow = col_dbl_r_arrow;
 col_dbl_l_arrow = col_dbl_l_arrow;
 col_r_arrow = col_r_arrow;

 if  = if;
 cond = cond;
 value = value; 
 listof = listof;
 holds = holds;
 forall = forall;
 exists = exists;
 
 t_seqvar = '@' word ;
 t_indvar = '?' word ;

 ref_seqvar = ',@' word ;
 ref_indvar = ',?' word ;

 p_var  =  ':' word ;
 p_list = '::' word ;

 word = word;

 white = white;



Ignored Tokens

 white, line_comment, multiline_comment;



Productions

 query = term ;

 term  = {constant} constant |
         {p_var} p_var |
         {expression} expression ;

 expression = l_par [left]:term* list? r_par ;
       list = p_list term* ;

 constant = {indvar} indvar | 
            {seqvar}  seqvar |
	    {word} word |
	    {string} string |	
            {charref} charref |
	    {seqvar_ref} ref_seqvar |
            {indvar_ref} ref_indvar |
	    {defined} defined ;

 indvar = t_indvar;
 seqvar = t_seqvar;

 defined = {r_ap} r_ap |
	   {u_arrow} u_arrow |
	   {eq} eq |
	   {ineq} ineq |
	 {at} at |
	 {q_mark} q_mark |
	 {col_eq} col_eq |
	 {quote} quote |
	 {defobject} defobject |
	 {deffunction} deffunction |
	 {defrelation} defrelation |
	 {deflogical} deflogical |
	 {not} not |
	 {and} and |
	 {or} or |
	 {dbl_r_arrow} dbl_r_arrow |
	 {dbl_l_arrow} dbl_l_arrow |
	 {arrow_dbl_arrow} arrow_dbl_arrow |
	 {col_dbl_r_arrow} col_dbl_r_arrow |
	 {col_dbl_l_arrow} col_dbl_l_arrow |
	 {col_r_arrow} col_r_arrow |
	 {if} if |
	 {cond} cond |
	 {value} value |
	 {listof} listof |
	 {holds} holds |
	 {forall} forall |
	 {exists} exists ;


/* ***********    end of file    *********** */

This site has been last updated by the web master on 2007/6/24.