/** * * Simplified FIPA SL grammar. * * This is grammar file of: * * FIPA SL Content Language Concrete Syntax * updated according to the document XC00008D * see http://www.fipa.org * and simplified to be completely ontology independent. * * THIS IS SUPERSET OF FIPA-SL as defined by FIPA. * * * This file is a SL parser source file for SableCC * (Sable Compiler Compiler by Etienne Gagnon and others) * which can be obtained at: http://sourceforge.net/projects/sablecc * This file is used to produce SL parser with related classes * and data structures. * * This is part of the New Zealand Distributed Information Systems (NZDIS) * project, conducted at the University of Otago, Dunedin, New Zealand, * under supervision of Professor Martin Purvis and Doctor Stephen Cranefield. * * * Copyright (C) 1998-2001 Mariusz Nowostawski and others. * All rights reserved. (see LICENSE and AUTHORS files) * * Contact: * e-mail: mariusz@rakiura.org * * This file is part of the nzdis-fipasl package. * * * Version 1.0 $Revision: 1.3 $ */ Package nzdis.lang.sl; Helpers tab = 9; cr = 13; lf = 10; eol = cr lf | cr | lf |; white = (' ' | tab | eol)+ ; l_par = '('; r_par = ')'; dot = '.'; q_mark = '?'; colon = ':'; hash = '#'; minus = '-'; plus = '+'; star = '*'; slash = '/'; semicolon = ';'; pipe = '|'; upper = ['A'..'Z']; lower = ['a'..'z']; digit = ['0'..'9']; special = [[hash + colon] + q_mark]; brackets = [l_par + r_par]; integer = minus? digit (digit)*; float = minus? digit (digit)* '.' digit (digit)* (('E' | 'e') ('+' | '-')? digit (digit)*)?; not = 'not'; and = 'and'; or = 'or'; implies = 'implies'; equiv = 'equiv'; true = 'true'; false = 'false'; sequence = 'sequence'; set = 'set'; forall = 'forall'; exists = 'exists'; feasible = 'feasible'; done = 'done'; action = 'action'; iota = 'iota'; any = 'any'; all = 'all'; Tokens line_comment = '/' '/' [[0 .. 0xffff] - [cr + lf]]* eol | ';' [[0 .. 0xffff] - [cr + lf]]* eol ; multiline_comment = '/' '*' [[0 .. 0xffff] - ['*' + '/']]* '*' '/' ; string_literal = '"' ([[0 .. 0xffff] - ['"' + '\']] | '\'[0 .. 0xffff])+ '"'; l_par = l_par; r_par = r_par; q_mark = q_mark; colon = colon; semicolon = semicolon; pipe = pipe; not = not; and = and; or = or; implies = implies; equiv = equiv; true = true; false = false; sequence = sequence; set = set; forall = forall; exists = exists; feasible = feasible; done = done; action = action; iota = iota; any = any; all = all; dot = dot; integer = integer; float = float; word = ( [[[[0 .. 0xffff] - [0 .. 0x20]] - brackets] - special ] ) ( [[[0 .. 0xffff]- [0 .. 0x20]] - brackets] )*; white = white; Ignored Tokens white, line_comment, multiline_comment; Productions content = l_par content_expression+ r_par; content_expression = {identifying} identifying_expression | {action} action_expression | {proposition} proposition ; proposition = {negation} l_par not proposition r_par | {disjunction} l_par or [left]:proposition [right]:proposition r_par | {implication} l_par implies [left]:proposition [right]:proposition r_par | {equivalence} l_par equiv [left]:proposition [right]:proposition r_par | {existential} l_par exists variable proposition r_par | {universal} l_par forall variable proposition r_par | {predicate} l_par predicate_symbol term+ r_par | {true} true | {false} false ; term = {variable} variable | {function} functional_term | {action} action_expression | {identifying} identifying_expression | {constant} constant | {sequence} P.sequence | {set} P.set; identifying_expression = {iota} l_par iota term proposition r_par | {any} l_par any term proposition r_par | {all} l_par all term proposition r_par; functional_term = {normal} l_par function_symbol term* r_par | {named} l_par function_symbol parameter+ r_par; constant = {integer} integer | {float} float | {string} string ; variable = q_mark string; action_expression = l_par action agent term r_par | {sequence} l_par pipe [left]:action_expression [right]:action_expression r_par | {alternative} l_par semicolon [left]:action_expression [right]:action_expression r_par; proposition_symbol = string; predicate_symbol = string; function_symbol = string | {tmp_and} and | {tmp_or} or | {tmp_not} not | {tmp_implies} implies | {tmp_equiv} equiv | {tmp_forall} forall | {tmp_exists} exists ; agent = term; sequence = l_par T.sequence term* r_par; set = l_par T.set term* r_par; parameter = parameter_name parameter_value; parameter_value = term; string = {word} word | {literal} string_literal ; parameter_name = colon string;
This site has been last updated by the web master
on 2007/6/24.