⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 position.hh

📁 GNU的词法/语法分析器bison源码
💻 HH
字号:
/* A Bison parser, made by GNU Bison 2.1.  *//* Position class for Bison C++ parsers,   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2, or (at your option)   any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 51 Franklin Street, Fifth Floor,   Boston, MA 02110-1301, USA.  *//** ** \file position.hh ** Define the position class. */#ifndef BISON_POSITION_HH# define BISON_POSITION_HH# include <iostream># include <string>namespace yy{  /// Abstract a position.  class position  {  public:    /// Initial column number.    static const unsigned int initial_column = 0;    /// Initial line number.    static const unsigned int initial_line = 1;    /** \name Ctor & dtor.     ** \{ */  public:    /// Construct a position.    position () :      filename (0),      line (initial_line),      column (initial_column)    {    }    /** \} */    /** \name Line and Column related manipulators     ** \{ */  public:    /// (line related) Advance to the COUNT next lines.    inline void lines (int count = 1)    {      column = initial_column;      line += count;    }    /// (column related) Advance to the COUNT next columns.    inline void columns (int count = 1)    {      int leftmost = initial_column;      int current  = column;      if (leftmost <= current + count)	column += count;      else	column = initial_column;    }    /** \} */  public:    /// File name to which this position refers.    std::string* filename;    /// Current line number.    unsigned int line;    /// Current column number.    unsigned int column;  };  /// Add and assign a position.  inline const position&  operator+= (position& res, const int width)  {    res.columns (width);    return res;  }  /// Add two position objects.  inline const position  operator+ (const position& begin, const int width)  {    position res = begin;    return res += width;  }  /// Add and assign a position.  inline const position&  operator-= (position& res, const int width)  {    return res += -width;  }  /// Add two position objects.  inline const position  operator- (const position& begin, const int width)  {    return begin + -width;  }  /** \brief Intercept output stream redirection.   ** \param ostr the destination output stream   ** \param pos a reference to the position to redirect   */  inline std::ostream&  operator<< (std::ostream& ostr, const position& pos)  {    if (pos.filename)      ostr << *pos.filename << ':';    return ostr << pos.line << '.' << pos.column;  }}#endif // not BISON_POSITION_HH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -