|
fff-grammar-rules.grm
|
// FILE. . . . . d:/hak/hlt/src/hlt/fot/fuz/syntax/sources/fff-grammar-rules.grm // EDIT BY . . . Hassan Ait-Kaci // ON MACHINE. . Hak-Laptop // STARTED ON. . Tue Aug 21 05:18:27 2018 // Last modified on Wed Sep 26 08:30:03 2018 by hak
|
|
%%
| Interaction |
Session : Clauses Exit | Exit ; Clauses : Clause | Clauses Clause ; Clause : Pragma { executePragma(); FuzzyFOTLatticeTokenizer.prompt(); } ';' | SimilarityDegree { processSimilarityDegree(); FuzzyFOTLatticeTokenizer.prompt(); } ';' | Unification { processUnification(); FuzzyFOTLatticeTokenizer.prompt(); } ';' | Generalization { processGeneralization(); FuzzyFOTLatticeTokenizer.prompt(); } ';' | error { // errorManager().reportErrors(true); FuzzyFOTLatticeTokenizer.prompt(); } ';' ; Exit : 'exit' { out.println("*** So long - and thanks for playing with FFF..."); out.println("*** We hope that you had some FFFuzzy FFFun! 8^D"); System.exit(0); } ';' ;
| Pragmas |
Pragma : HelpPragma | FunPragma | SigPragma | SimPragma | ClosePragma | ShowPragma | FunclassPragma | TermclassPragma | FunrepPragma | TermrepPragma | MapPragma // not yet done | CompPragma // not yet done | LoadPragma | TracePragma | ResetPragma ; /* ******************************************************************** */ // HelpPragma HelpPragma : HELP PragmaName_opt ; PragmaName_opt : /* empty */ { helpPragmaName = ""; inputClause = ""; } | PragmaName { helpPragmaName = $1.svalue(); inputClause += " "+helpPragmaName; } ; PragmaName : HELP | FUN | SIG | SIM | CLOSE | SHOW | FUNCLASS | TERMCLASS | FUNREP | TERMREP | MAP | COMP | LOAD | TRACE | RESET ; /* ******************************************************************** */ // FunPragma FunPragma : FUN { inputClause = ""; } FunctorsArities_opt ; FunctorsArities_opt : /* empty */ | FunctorsArities ; FunctorsArities : FunctorArity | FunctorsArities FunctorArity ; FunctorArity : FUNCTOR SlashOpt NATURAL { inputClause += " "+$1.svalue()+"/"+(int)$3.nvalue(); try { // if one is already registered under this name but not with this // arity the following will raise a BadFunctorArityException; // otherwise, it will register it and check need to recompute similarity: registerFunctor($1.svalue(),signature.functor($1.svalue(),(int)$3.nvalue())); } catch (Exception e) { // we need to report whether this functor was already // declared with a different arity err.println("!!! "+e.getMessage()+ " (declaration "+$1.svalue()+"/"+(int)$3.nvalue()+" ignored)"); } } ; SlashOpt : /* empty */ | '/' ; /* ******************************************************************** */ // SigPragma SigPragma : SIG ; SimPragma : SIM { inputClause = ""; } FuzzyPairs_Opt ; FuzzyPairs_Opt : /* empty */ | FuzzyPairs ; FuzzyPairs : FuzzyPair | FuzzyPairs FuzzyPair ; FuzzyPair : FUNCTOR FUNCTOR FUZZYVAL { inputClause += " "+$1.svalue()+" "+$2.svalue()+" "+$3.nvalue(); declareSimilarPair($1.svalue(),$2.svalue(),$3.nvalue()); $$.left = $1.svalue(); $$.right = $2.svalue(); $$.degree = $3.nvalue(); } ; /* ******************************************************************** */ // ClosePragma ClosePragma : CLOSE ; /* ******************************************************************** */ // ShowPragma ShowPragma : SHOW ; /* ******************************************************************** */ // FunclassPragma FunclassPragma : FUNCLASS FUNCTOR FUZZYVAL { $$.setSvalue($1.svalue()); functorName = $2.svalue(); classDegree = $3.nvalue(); } ; /* ******************************************************************** */ // TermclassPragma TermclassPragma : TERMCLASS Term NaturalOrFuzzyval { $$.setSvalue($1.svalue()); functorName = $2.svalue(); classDegree = $3.nvalue(); temp = (SyntacticTerm)termStack.pop(); try { // we need to report if a functor is used with // inconsistent arities converting the parsed // SyntacticTerm temp into its FirstOrderTerm object's // canonical form term = temp.canonical(signature,functorTable); } catch (Exception e) { err.println("!!! "+e.getMessage()); // recoverFromError(); // FuzzyFOTLatticeTokenizer.prompt(); } } ; NaturalOrFuzzyval : NATURAL | FUZZYVAL ; /* ******************************************************************** */ // FunrepPragma FunrepPragma : FUNREP FUNCTOR FUZZYVAL { $$.setSvalue($1.svalue()); functorName = $2.svalue(); classDegree = $3.nvalue(); } ; /* ******************************************************************** */ // TermrepPragma TermrepPragma : TERMREP Term FUZZYVAL { $$.setSvalue($1.svalue()); functorName = $2.svalue(); classDegree = $3.nvalue(); try { // we need to report if a functor is used with // inconsistent arities converting the parsed // SyntacticTerm into its FirstOrderTerm object's // canonical form term = ((SyntacticTerm)termStack.pop()).canonical(signature,functorTable); } catch (Exception e) { err.println("!!! "+e.getMessage()); recoverFromError(); FuzzyFOTLatticeTokenizer.prompt(); } } ; /* ******************************************************************** */ // MapPragma MapPragma : MAP { inputClause = ""; } MapPragmaData_opt ; MapPragmaData_opt : /* empty */ | MapPragmaData ; MapPragmaData : FuzzyPair MapPairs_opt { inputClause += " "+ArgumentMappingData.pairsToString(declaredPairMapList); // record the argument-position map for the fuzzy pair: declaredMaps.add(new ArgumentMappingData(signature.functor($1.left), signature.functor($1.right), $1.degree, declaredPairMapList)); declaredPairMapList = new IntArrayList(); } ; MapPairs_opt : /* empty */ | MapPairs ; MapPairs : MapPair MapPairs_opt ; MapPair : NATURAL ':' NATURAL { declaredPairMapList.add((int)$1.nvalue()); declaredPairMapList.add((int)$3.nvalue()); } ; /* ******************************************************************** */ // CompPragma CompPragma : COMP ; /* ******************************************************************** */ // LoadPragma LoadPragma : LOAD STRING { fileStack.push($2.svalue()); // out.println(">>> fileStack = "+fileStack); $$.setSvalue($1.svalue()); } ; /* ******************************************************************** */ // TracePragma TracePragma : TRACE LevelOpt ; LevelOpt : /* empty */ | NATURAL { SignatureSimilarity.setTracingVerbosity(tracingVerbosity = (int)$1.nvalue()); } ; /* ******************************************************************** */ // ResetPragma ResetPragma : RESET ; /* ******************************************************************** */ // FOT operations and FOTs SimilarityDegree : LhsTerm EQS RhsTerm ; Unification : LhsTerm INF RhsTerm ; Generalization : LhsTerm SUP RhsTerm ; LhsTerm : { termStack.clear(); Variable.resetRegisteredVariables(); } Term { try { // we need to report if a functor is used with // inconsistent arities converting the parsed // SyntacticTerm object into its FirstOrderTerm object's // canonical form lhs = ((SyntacticTerm)termStack.pop()).canonical(signature,functorTable); } catch (Exception e) { err.println("!!! "+e.getMessage()); recoverFromError(); FuzzyFOTLatticeTokenizer.prompt(); } } ; RhsTerm : { termStack.clear(); } Term { try { // we need to report if a functor is used with // inconsistent arities converting the parsed // SyntacticTerm object into its FirstOrderTerm object's // canonical form rhs = ((SyntacticTerm)termStack.pop()).canonical(signature,functorTable); } catch (Exception e) { err.println("!!! "+e.getMessage()); // recoverFromError(); // FuzzyFOTLatticeTokenizer.prompt(); } } ; Term : VARIABLE { termStack.push(new SyntacticTerm($1.svalue()).markAsVariable()); } | Structure | '(' Term ')' ; Structure : FUNCTOR { termStack.push(new SyntacticTerm($1.svalue())); } | FUNCTOR '(' { termStack.push(new SyntacticTerm($1.svalue(),new Vector())); } Body ')' ; Body : Term { temp = (SyntacticTerm)termStack.pop(); ((SyntacticTerm)termStack.peek()).body.add(temp); } | Body ',' Term { temp = (SyntacticTerm)termStack.pop(); ((SyntacticTerm)termStack.peek()).body.add(temp); } ; /* ************************************************************************ */
This file was generated on Thu Sep 27 10:27:39 CEST 2018 from file fff-grammar-rules.grm
by the hlt.language.tools.Hilite Java tool written by Hassan Aït-Kaci