home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ssvpar.zip / SSCALC.YH < prev    next >
Text File  |  1994-12-01  |  5KB  |  200 lines

  1. #if !defined( SSCALCSSH)
  2. #  define SSCALCSSH
  3. #  include<sslexc.h>
  4. #  include<ssyaccc.h>
  5.  
  6. #  define ALexExpressionListMain       0
  7. #  define ALexExpressionListMLCom      1
  8. #  define ALexExpressionListSLCom      2
  9.  
  10. #  define ALexEnd                      4
  11. #  define ALexPlus                     5
  12. #  define ALexMinus                    6
  13. #  define ALexDiv                      7
  14. #  define ALexMult                     8
  15. #  define ALexMod                      9
  16. #  define ALexPow                      10
  17. #  define ALexOr                       11
  18. #  define ALexAnd                      12
  19. #  define ALexNot                      13
  20. #  define ALexOParen                   14
  21. #  define ALexCParen                   15
  22. #  define ALexDec                      16
  23. #  define ALexOct                      17
  24. #  define ALexHex                      18
  25.  
  26. #  define AYaccStart                   1
  27. #  define AYaccStartList               2
  28. #  define AYaccExprSingle              3
  29. #  define AYaccExprError               4
  30. #  define AYaccExprPlus                5
  31. #  define AYaccExprMinus               6
  32. #  define AYaccExprMult                7
  33. #  define AYaccExprDiv                 8
  34. #  define AYaccExprMod                 9
  35. #  define AYaccExprNot                 10
  36. #  define AYaccExprAnd                 11
  37. #  define AYaccExprOr                  12
  38. #  define AYaccExprNested              13
  39. #  define AYaccExprNumber              14
  40. #  define AYaccNumberDec               15
  41. #  define AYaccNumberOct               16
  42. #  define AYaccNumberHex               17
  43.  
  44.    SSRetConstChar ALexClassTokenToConstChar( SSUnsigned32 qulToken)
  45.       {
  46.       const char* zpchToken;
  47.       switch ( qulToken)
  48.          {
  49.          case ALexEnd:
  50.             zpchToken = ";";
  51.             break;
  52.  
  53.          case ALexPlus:
  54.             zpchToken = "+";
  55.             break;
  56.  
  57.          case ALexMinus:
  58.             zpchToken = "-";
  59.             break;
  60.  
  61.          case ALexDiv:
  62.             zpchToken = "/";
  63.             break;
  64.  
  65.          case ALexMult:
  66.             zpchToken = "*";
  67.             break;
  68.  
  69.          case ALexMod:
  70.             zpchToken = "%";
  71.             break;
  72.  
  73.          case ALexPow:
  74.             zpchToken = "**";
  75.             break;
  76.  
  77.          case ALexOr:
  78.             zpchToken = "or";
  79.             break;
  80.  
  81.          case ALexAnd:
  82.             zpchToken = "and";
  83.             break;
  84.  
  85.          case ALexNot:
  86.             zpchToken = "not";
  87.             break;
  88.  
  89.          case ALexOParen:
  90.             zpchToken = "(";
  91.             break;
  92.  
  93.          case ALexCParen:
  94.             zpchToken = ")";
  95.             break;
  96.  
  97.          case ALexDec:
  98.             zpchToken = "dec";
  99.             break;
  100.  
  101.          case ALexOct:
  102.             zpchToken = "oct";
  103.             break;
  104.  
  105.          case ALexHex:
  106.             zpchToken = "hex";
  107.             break;
  108.  
  109.          case SSYaccErrorToken:
  110.             zpchToken = "%error";
  111.             break;
  112.  
  113.          case SSYaccEofToken:
  114.             zpchToken = "eof";
  115.             break;
  116.  
  117.          default:
  118.             zpchToken = SSLexTokenNotFound;
  119.          }
  120.       return zpchToken;
  121.       }
  122.  
  123.    SSRetVoidP AYaccClassReduce( SSUnsigned32 qulProd, SSUnsigned32 qulSize, void* qpParm)
  124.       {
  125.       switch ( qulProd)
  126.          {
  127.          case AYaccStart:
  128.          /* start -> exprStatement */
  129.             break;
  130.  
  131.          case AYaccStartList:
  132.          /* start -> start exprStatement */
  133.             break;
  134.  
  135.          case AYaccExprSingle:
  136.          /* exprStatement -> expr ; */
  137.             break;
  138.  
  139.          case AYaccExprError:
  140.          /* exprStatement -> %error ; */
  141.             break;
  142.  
  143.          case AYaccExprPlus:
  144.          /* expr -> expr + expr */
  145.             break;
  146.  
  147.          case AYaccExprMinus:
  148.          /* expr -> expr - expr */
  149.             break;
  150.  
  151.          case AYaccExprMult:
  152.          /* expr -> expr * expr */
  153.             break;
  154.  
  155.          case AYaccExprDiv:
  156.          /* expr -> expr / expr */
  157.             break;
  158.  
  159.          case AYaccExprMod:
  160.          /* expr -> expr % expr */
  161.             break;
  162.  
  163.          case AYaccExprNot:
  164.          /* expr -> not expr */
  165.             break;
  166.  
  167.          case AYaccExprAnd:
  168.          /* expr -> expr and expr */
  169.             break;
  170.  
  171.          case AYaccExprOr:
  172.          /* expr -> expr or expr */
  173.             break;
  174.  
  175.          case AYaccExprNested:
  176.          /* expr -> ( expr ) */
  177.             break;
  178.  
  179.          case AYaccExprNumber:
  180.          /* expr -> number */
  181.             break;
  182.  
  183.          case AYaccNumberDec:
  184.          /* number -> dec */
  185.             break;
  186.  
  187.          case AYaccNumberOct:
  188.          /* number -> oct */
  189.             break;
  190.  
  191.          case AYaccNumberHex:
  192.          /* number -> hex */
  193.             break;
  194.  
  195.          }
  196.  
  197.       return SSYaccStackElementCreate( 0, 0);
  198.       }
  199.  
  200. #endif