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

📄 vparsegrammar.h

📁 Verilog Parser in Perl
💻 H
字号:
// -*- C++ -*-//*************************************************************************//// Copyright 2000-2009 by Wilson Snyder.  This program is free software;// you can redistribute it and/or modify it under the terms of either the GNU// Lesser General Public License or the Perl Artistic License.//// 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.////*************************************************************************/// \file/// \brief Verilog::Parse: Parseess verilog code////// Authors: Wilson Snyder////// Code available from: http://www.veripool.org/verilog-perl/////*************************************************************************#ifndef _VPARSEGRAMMAR_H_#define _VPARSEGRAMMAR_H_ 1#include <string>#include <map>#include <deque>#include <iostream>using namespace std;#include "VFileLine.h"#include "VParse.h"//============================================================================// Container of things to put out laterstruct VParseGPin {    VFileLine* m_fl;    string m_name;    string m_conn;    int m_number;    VParseGPin(VFileLine* fl, const string& name, const string& conn, int number)	: m_fl(fl), m_name(name), m_conn(conn), m_number(number) {}};//============================================================================// We can't use bison's %union as the string type doesn't fit in a union.// It's fine to use a struct though!struct VParseBisonYYSType {    string	str;    VFileLine*	fl;};#define YYSTYPE VParseBisonYYSType//============================================================================class VParseGrammar {    static VParseGrammar*	s_grammarp;	///< Current THIS, bison() isn't class based    VParse*	   m_parsep;    //int debug() { return 9; }public: // Only for VParseBison    int		m_pinNum;		///< Pin number being parsed    string	m_varDecl;    string	m_varIO;    string	m_varSigned;    string	m_varRange;    string	m_varArray;    string	m_cellMod;    bool	m_cellParam;    bool	m_inFTask;    deque<VParseGPin> m_pinStack;public: // But for internal use only    static VParseGrammar* staticGrammarp() { return s_grammarp; }    static VParse* staticParsep() { return staticGrammarp()->m_parsep; }    static void bisonError(const char* text) {	staticParsep()->error(text);    }    //static VFileLine* fileline() { return s_grammarp->m_fileline; }public:    // CREATORS    VParseGrammar(VParse* parsep) : m_parsep(parsep) {	s_grammarp = this;	m_inFTask = false;    }    ~VParseGrammar() {	s_grammarp = NULL;    }    // ACCESSORS    void debug(int level);    int pinNum() const { return m_pinNum; }    void pinNum(int flag) { m_pinNum = flag; }    void pinNumInc() { m_pinNum++; }    // METHODS    int parse();  // See VParseBison.y    static const char* tokenName(int token);};#endif // Guard

⌨️ 快捷键说明

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