Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.

Differences Between: [Versions 310 and 311] [Versions 311 and 400] [Versions 311 and 401] [Versions 311 and 402] [Versions 311 and 403] [Versions 39 and 311]

   1  <?php
   2  
   3  namespace PhpOffice\PhpSpreadsheet\Calculation;
   4  
   5  /**
   6   * PARTLY BASED ON:
   7   * Copyright (c) 2007 E. W. Bachtal, Inc.
   8   *
   9   * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
  10   * and associated documentation files (the "Software"), to deal in the Software without restriction,
  11   * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12   * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
  13   * subject to the following conditions:
  14   *
  15   * The above copyright notice and this permission notice shall be included in all copies or substantial
  16   * portions of the Software.
  17   *
  18   * The software is provided "as is", without warranty of any kind, express or implied, including but not
  19   * limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In
  20   * no event shall the authors or copyright holders be liable for any claim, damages or other liability,
  21   * whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
  22   * software or the use or other dealings in the software.
  23   *
  24   * https://ewbi.blogs.com/develops/2007/03/excel_formula_p.html
  25   * https://ewbi.blogs.com/develops/2004/12/excel_formula_p.html
  26   */
  27  class FormulaToken
  28  {
  29      // Token types
  30      const TOKEN_TYPE_NOOP = 'Noop';
  31      const TOKEN_TYPE_OPERAND = 'Operand';
  32      const TOKEN_TYPE_FUNCTION = 'Function';
  33      const TOKEN_TYPE_SUBEXPRESSION = 'Subexpression';
  34      const TOKEN_TYPE_ARGUMENT = 'Argument';
  35      const TOKEN_TYPE_OPERATORPREFIX = 'OperatorPrefix';
  36      const TOKEN_TYPE_OPERATORINFIX = 'OperatorInfix';
  37      const TOKEN_TYPE_OPERATORPOSTFIX = 'OperatorPostfix';
  38      const TOKEN_TYPE_WHITESPACE = 'Whitespace';
  39      const TOKEN_TYPE_UNKNOWN = 'Unknown';
  40  
  41      // Token subtypes
  42      const TOKEN_SUBTYPE_NOTHING = 'Nothing';
  43      const TOKEN_SUBTYPE_START = 'Start';
  44      const TOKEN_SUBTYPE_STOP = 'Stop';
  45      const TOKEN_SUBTYPE_TEXT = 'Text';
  46      const TOKEN_SUBTYPE_NUMBER = 'Number';
  47      const TOKEN_SUBTYPE_LOGICAL = 'Logical';
  48      const TOKEN_SUBTYPE_ERROR = 'Error';
  49      const TOKEN_SUBTYPE_RANGE = 'Range';
  50      const TOKEN_SUBTYPE_MATH = 'Math';
  51      const TOKEN_SUBTYPE_CONCATENATION = 'Concatenation';
  52      const TOKEN_SUBTYPE_INTERSECTION = 'Intersection';
  53      const TOKEN_SUBTYPE_UNION = 'Union';
  54  
  55      /**
  56       * Value.
  57       *
  58       * @var string
  59       */
  60      private $value;
  61  
  62      /**
  63       * Token Type (represented by TOKEN_TYPE_*).
  64       *
  65       * @var string
  66       */
  67      private $tokenType;
  68  
  69      /**
  70       * Token SubType (represented by TOKEN_SUBTYPE_*).
  71       *
  72       * @var string
  73       */
  74      private $tokenSubType;
  75  
  76      /**
  77       * Create a new FormulaToken.
  78       *
  79       * @param string $pValue
  80       * @param string $pTokenType Token type (represented by TOKEN_TYPE_*)
  81       * @param string $pTokenSubType Token Subtype (represented by TOKEN_SUBTYPE_*)
  82       */
  83      public function __construct($pValue, $pTokenType = self::TOKEN_TYPE_UNKNOWN, $pTokenSubType = self::TOKEN_SUBTYPE_NOTHING)
  84      {
  85          // Initialise values
  86          $this->value = $pValue;
  87          $this->tokenType = $pTokenType;
  88          $this->tokenSubType = $pTokenSubType;
  89      }
  90  
  91      /**
  92       * Get Value.
  93       *
  94       * @return string
  95       */
  96      public function getValue()
  97      {
  98          return $this->value;
  99      }
 100  
 101      /**
 102       * Set Value.
 103       *
 104       * @param string $value
 105       */
 106      public function setValue($value): void
 107      {
 108          $this->value = $value;
 109      }
 110  
 111      /**
 112       * Get Token Type (represented by TOKEN_TYPE_*).
 113       *
 114       * @return string
 115       */
 116      public function getTokenType()
 117      {
 118          return $this->tokenType;
 119      }
 120  
 121      /**
 122       * Set Token Type (represented by TOKEN_TYPE_*).
 123       *
 124       * @param string $value
 125       */
 126      public function setTokenType($value): void
 127      {
 128          $this->tokenType = $value;
 129      }
 130  
 131      /**
 132       * Get Token SubType (represented by TOKEN_SUBTYPE_*).
 133       *
 134       * @return string
 135       */
 136      public function getTokenSubType()
 137      {
 138          return $this->tokenSubType;
 139      }
 140  
 141      /**
 142       * Set Token SubType (represented by TOKEN_SUBTYPE_*).
 143       *
 144       * @param string $value
 145       */
 146      public function setTokenSubType($value): void
 147      {
 148          $this->tokenSubType = $value;
 149      }
 150  }