Changeset 7b3094 in git


Ignore:
Timestamp:
Jan 11, 2000, 6:51:15 PM (23 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
Children:
3a62db15459fcfd405979f894c67de77e0ff1e84
Parents:
ba8c0bced42227f9c29f470c292a51ab29c2a405
Message:
*hannes: optimization of grammar


git-svn-id: file:///usr/local/Singular/svn/trunk@4072 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • Singular/grammar.y

    rba8c0b r7b3094  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: grammar.y,v 1.77 1999-12-21 11:44:01 Singular Exp $ */
     4/* $Id: grammar.y,v 1.78 2000-01-11 17:51:14 Singular Exp $ */
    55/*
    66* ABSTRACT: SINGULAR shell grammatik
     
    288288
    289289%type <i>    '=' '<' '>' '+' '-' COLONCOLON
    290 %type <i>    '*' '/' '[' ']' '^' ',' ';'
     290%type <i>    '/' '[' ']' '^' ',' ';'
    291291
    292292
     
    295295%nonassoc '=' DOTDOT
    296296%left ','
    297 %left '|' '&'
     297%left '&'
    298298%left EQUAL_EQUAL NOTEQUAL
    299 %left '<' '>' GE LE
     299%left '<'
    300300%left '+' '-'
    301 %left '*' '/' '%'
     301%left '/'
    302302%left UMINUS NOT
    303303%left  '^'
     
    744744            if(iiExprArith2(&$$,&$1,'-',&$3)) YYERROR;
    745745          }
    746         | expr '*' expr
    747           {
    748             if(iiExprArith2(&$$,&$1,'*',&$3)) YYERROR;
    749           }
    750746        | expr '/' expr
    751747          {
     
    756752            if(iiExprArith2(&$$,&$1,'^',&$3)) YYERROR;
    757753          }
    758         | expr '%' expr
     754        | expr '<' expr
    759755          {
    760756            if(iiExprArith2(&$$,&$1,$<i>2,&$3)) YYERROR;
    761757          }
    762         | expr '>' expr
    763           {
    764             if(iiExprArith2(&$$,&$1,'>',&$3)) YYERROR;
    765           }
    766         | expr '<' expr
    767           {
    768             if(iiExprArith2(&$$,&$1,'<',&$3)) YYERROR;
    769           }
    770758        | expr '&' expr
    771759          {
    772             if(iiExprArith2(&$$,&$1,'&',&$3)) YYERROR;
    773           }
    774         | expr '|' expr
    775           {
    776             if(iiExprArith2(&$$,&$1,'|',&$3)) YYERROR;
     760            if(iiExprArith2(&$$,&$1,$<i>2,&$3)) YYERROR;
    777761          }
    778762        | expr NOTEQUAL expr
     
    783767          {
    784768            if(iiExprArith2(&$$,&$1,EQUAL_EQUAL,&$3)) YYERROR;
    785           }
    786         | expr GE  expr
    787           {
    788             if(iiExprArith2(&$$,&$1,GE,&$3)) YYERROR;
    789           }
    790         | expr LE expr
    791           {
    792             if(iiExprArith2(&$$,&$1,LE,&$3)) YYERROR;
    793769          }
    794770        | expr DOTDOT expr
     
    10621038filecmd:
    10631039        '<' stringexpr
    1064           { if((feFilePending=feFopen($2,"r",NULL,TRUE))==NULL) YYERROR; }
     1040          { if ($<i>1 != '<') YYERROR;
     1041            if((feFilePending=feFopen($2,"r",NULL,TRUE))==NULL) YYERROR; }
    10651042        ';'
    10661043          { newFile($2,feFilePending); }
  • Singular/iparith.cc

    rba8c0b r7b3094  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iparith.cc,v 1.197 1999-12-21 11:44:02 Singular Exp $ */
     4/* $Id: iparith.cc,v 1.198 2000-01-11 17:51:15 Singular Exp $ */
    55
    66/*
     
    123123{  // name-string alias tokval          toktype
    124124  { "$INVALID$",   0, -1,                 0},
    125   { "and",         0, '&' ,               '&'},
     125  { "and",         0, '&' ,               LOGIC_OP},
    126126  { "attrib",      0, ATTRIB_CMD ,        CMD_123},
    127127  { "bareiss",     0, BAREISS_CMD ,       CMD_123},
     
    148148  { "diff",        0, DIFF_CMD ,          CMD_2},
    149149  { "dim",         0, DIM_CMD ,           CMD_1},
    150   { "div",         0, INTDIV_CMD ,        '/'},
     150  { "div",         0, INTDIV_CMD ,        MULDIV_OP},
    151151#ifdef DRING
    152152  { "dring",       0, DRING_CMD ,         DRING_CMD},
     
    222222  { "minor",       0, MINOR_CMD ,         CMD_23},
    223223  { "minres",      0, MINRES_CMD ,        CMD_1},
    224   { "mod",         0, INTMOD_CMD ,        '%'},
     224  { "mod",         0, INTMOD_CMD ,        MULDIV_OP},
    225225  { "module",      0, MODUL_CMD ,         MODUL_CMD},
    226226  { "modulo",      0, MODULO_CMD ,        CMD_2},
     
    249249  { "open",        0, OPEN_CMD ,          CMD_1},
    250250  { "option",      0, OPTION_CMD ,        CMD_M},
    251   { "or",          0, '|' ,               '|'},
     251  { "or",          0, '|' ,               LOGIC_OP},
    252252  { "ord",         0, ORD_CMD ,           CMD_1},
    253253  { "ordstr",      0, ORDSTR_CMD ,        CMD_1},
  • Singular/scanner.l

    rba8c0b r7b3094  
    33*  Computer Algebra System SINGULAR     *
    44****************************************/
    5 /* $Id: scanner.l,v 1.25 1999-12-06 16:06:51 obachman Exp $ */
     5/* $Id: scanner.l,v 1.26 2000-01-11 17:51:14 Singular Exp $ */
    66#include <stdio.h>
    77#include <string.h>
     
    247247"++"                     { return PLUSPLUS  ; }
    248248"=="                     { return EQUAL_EQUAL; }
    249 "&&"                     { return '&'; }
    250 "||"                     { return '|'; }
    251 "<="                     { return LE; }
    252 ">="                     { return GE; }
     249"&&"                     { lvalp->i='&'; return LOGIC_OP; }
     250"||"                     { lvalp->i='|'; return LOGIC_OP; }
     251"<="                     { lvalp->i=LE; return COMP_OP; }
     252">="                     { lvalp->i=GE; return COMP_OP; }
    253253"!"                      { return NOT; }
    254254"!="                     { return NOTEQUAL; }
     
    291291                           return RINGVAR;
    292292                         }
    293 [0-9]+\."e"[+-][0-9]+    { 
     293[0-9]+\."e"[+-][0-9]+    {
    294294                           lvalp->name = (char *)yytext;
    295295                           return RINGVAR;
     
    299299                           return RINGVAR;
    300300                         }
    301        
     301
    302302({parname}|{name})       {
    303303                           /* {name} */
     
    318318.                       {
    319319                           /*if (*yytext == '\n') REJECT;*/
    320                            lvalp->i = *yytext;   /* token has own value */
    321                            return *yytext;
     320                           register char ch= *yytext;
     321                           lvalp->i = ch;
     322                           switch(ch)
     323                           {
     324                             /* case '&': */
     325                             case '|':
     326                               return LOGIC_OP;
     327                             /* case '/': */
     328                             case '%':
     329                             case '*':
     330                               return MULDIV_OP;
     331                             /* case '<': */
     332                             case '>':
     333                               return COMP_OP;
     334                             default:
     335                               break;
     336                            }
     337                            return ch;
    322338                         }
    323339%%
  • Singular/tok.h

    rba8c0b r7b3094  
    77* ABSTRACT: tokens, types for interpreter; general macros
    88*/
    9 /* $Id: tok.h,v 1.35 1999-12-21 11:44:01 Singular Exp $ */
     9/* $Id: tok.h,v 1.36 2000-01-11 17:51:15 Singular Exp $ */
    1010
    1111#ifndef MYYSTYPE
     
    3636#define min(A,B) ((A) < (B) ? (A) : (B))
    3737#endif
     38
     39/* the follwing defines for infix operators should not be changed: *
     40*  grammar.y does not use the symbolic names                       *
     41*  scanner.l uses the identies for some optimzations              */
     42#define LOGIC_OP         '&'
     43#define MULDIV_OP        '/'
     44#define COMP_OP          '<'
    3845
    3946#define COMMAND           UMINUS+2 /* in tok.h */
Note: See TracChangeset for help on using the changeset viewer.