Blame vhdlparser/vhdlparser.jj

Packit Service 50c9f2
/******************************************************************************
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Copyright (C) 2014 by M. Kreis
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Permission to use, copy, modify, and distribute this software and its
Packit Service 50c9f2
 * documentation under the terms of the GNU General Public License is hereby
Packit Service 50c9f2
 * granted. No representations are made about the suitability of this software
Packit Service 50c9f2
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit Service 50c9f2
 * See the GNU General Public License for more details.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 */
Packit Service 50c9f2
options {
Packit Service 50c9f2
  JAVA_UNICODE_ESCAPE = true;
Packit Service 50c9f2
  OUTPUT_LANGUAGE = "c++";
Packit Service 50c9f2
  NAMESPACE = "vhdl::parser";
Packit Service 50c9f2
  STATIC=false;
Packit Service 50c9f2
  PARSER_INCLUDES="vhdljjparser.h";
Packit Service 50c9f2
  TOKEN_MANAGER_INCLUDES="VhdlParser.h";
Packit Service 50c9f2
Packit Service 50c9f2
 //OUTPUT_DIRECTORY = ".";
Packit Service 50c9f2
 //DEBUG_PARSER=true;
Packit Service 50c9f2
 //DEBUG_LOOKAHEAD=true;
Packit Service 50c9f2
Packit Service 50c9f2
  }
Packit Service 50c9f2
Packit Service 50c9f2
PARSER_BEGIN(VhdlParser)
Packit Service 50c9f2
Packit Service 50c9f2
typedef unsigned long long uint64;
Packit Service 50c9f2
Packit Service 50c9f2
static Entry* current_root;
Packit Service 50c9f2
static Entry* tempEntry;
Packit Service 50c9f2
static Entry*  lastEntity  ;
Packit Service 50c9f2
static Entry*  lastCompound  ;
Packit Service 50c9f2
static Entry*  current;
Packit Service 50c9f2
static QCString compSpec;
Packit Service 50c9f2
static QCString currName;
Packit Service 50c9f2
static int levelCounter;
Packit Service 50c9f2
static QCString confName;
Packit Service 50c9f2
static QCString genLabels;
Packit Service 50c9f2
static QCString lab;
Packit Service 50c9f2
static QCString forL;
Packit Service 50c9f2
static int param_sec ;
Packit Service 50c9f2
static int parse_sec;
Packit Service 50c9f2
static int currP;
Packit Service 50c9f2
static Entry* currentCompound;
Packit Service 50c9f2
Packit Service 50c9f2
//----------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
static void setLineParsed(int tok);
Packit Service 50c9f2
static int getLine(int tok);
Packit Service 50c9f2
static int getLine();
Packit Service 50c9f2
static void lineCount(const char*);
Packit Service 50c9f2
static void lineCount();
Packit Service 50c9f2
static void addProto(const char *s1,const char *s2,const char *s3,const char *s4,const char *s5,const char *s6);
Packit Service 50c9f2
static void addConfigureNode(const char* a,const char*b, bool,bool isLeaf,bool inlineConf);
Packit Service 50c9f2
static void createFunction(const char *impure,uint64 spec,const char *fname);
Packit Service 50c9f2
static void addVhdlType(const char *n,int startLine,int section, uint64 spec,const char* args,const char* type,Protection prot);
Packit Service 50c9f2
static void addCompInst(const char *n, const char* instName, const char* comp,int iLine);
Packit Service 50c9f2
static void handleCommentBlock(const char* doc,bool brief);
Packit Service 50c9f2
static void handleFlowComment(const char*);
Packit Service 50c9f2
static void initEntry(Entry *e);
Packit Service 50c9f2
static  void newEntry();
Packit Service 50c9f2
static  bool isFuncProcProced();
Packit Service 50c9f2
static void pushLabel(QCString &,QCString&);
Packit Service 50c9f2
static  QCString popLabel(QCString & q);
Packit Service 50c9f2
static  bool addLibUseClause(const QCString &type);
Packit Service 50c9f2
static  void mapLibPackage( Entry* root);
Packit Service 50c9f2
static void createFlow();
Packit Service 50c9f2
static void error_skipto(int kind);
Packit Service 50c9f2
static void oneLineComment(QCString qcs);
Packit Service 50c9f2
static void setMultCommentLine();
Packit Service 50c9f2
PARSER_END(VhdlParser)
Packit Service 50c9f2
Packit Service 50c9f2
SKIP :
Packit Service 50c9f2
{
Packit Service 50c9f2
  " "
Packit Service 50c9f2
| "\t"
Packit Service 50c9f2
| "\n" {::vhdl::parser::VhdlParser::lineCount();}
Packit Service 50c9f2
| "\r"
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
SKIP:
Packit Service 50c9f2
{
Packit Service 50c9f2
  // VHDL comment -- ......
Packit Service 50c9f2
  // VHDL doxygen line comment --! ....
Packit Service 50c9f2
  <#DOXYGEN_VHDL_COMMENT: (" "|"\t")*"--!"(~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
Packit Service 50c9f2
  | <MULT_DOXYGEN_COMMENT: (<DOXYGEN_VHDL_COMMENT>)+ >
Packit Service 50c9f2
  {
Packit Service 50c9f2
    {
Packit Service 50c9f2
    QCString doc(image.data());
Packit Service 50c9f2
    int count=doc.contains("--!");
Packit Service 50c9f2
    ::vhdl::parser::VhdlParser::setMultCommentLine();
Packit Service 50c9f2
    ::vhdl::parser::VhdlParser::lineCount(image.data());
Packit Service 50c9f2
    if (count == 1)
Packit Service 50c9f2
      ::vhdl::parser::VhdlParser::oneLineComment(doc);
Packit Service 50c9f2
    else
Packit Service 50c9f2
      ::vhdl::parser::VhdlParser::handleCommentBlock(image.data(),FALSE); ;
Packit Service 50c9f2
    }
Packit Service 50c9f2
Packit Service 50c9f2
  }
Packit Service 50c9f2
  |<VHDL_FLOWCHART_COMMENT: "--#" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>  { ::vhdl::parser::VhdlParser::handleFlowComment(image.data());}
Packit Service 50c9f2
  |<VHDL_COMMENT: "--" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>
Packit Service 50c9f2
  {
Packit Service 50c9f2
    ::vhdl::parser::VhdlParser::lineCount(image.data());}
Packit Service 50c9f2
  }
Packit Service 50c9f2
Packit Service 50c9f2
// VHDL 2008  comment /* .... */
Packit Service 50c9f2
// VHDL 2008 doxygen comment /*! .... */
Packit Service 50c9f2
SKIP :
Packit Service 50c9f2
{
Packit Service 50c9f2
  <MULT_DOXYGEN_VHDL_COMMENT_2008 : "/*!"  (~[])* "*/" >
Packit Service 50c9f2
  {
Packit Service 50c9f2
   {
Packit Service 50c9f2
     QCString q(image.data());
Packit Service 50c9f2
     q.stripPrefix("/*!");
Packit Service 50c9f2
     q.resize(q.length()-2);
Packit Service 50c9f2
     ::vhdl::parser::VhdlParser::handleCommentBlock(q.data(),TRUE);image.clear();
Packit Service 50c9f2
   }
Packit Service 50c9f2
  }
Packit Service 50c9f2
  | <MULT_VHDL_2008_COMMENT : "/*"  (~[])* "*/" >  {::vhdl::parser::VhdlParser::lineCount(image.data());image.clear();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
/* KEYWORDS */
Packit Service 50c9f2
Packit Service 50c9f2
TOKEN [IGNORE_CASE] :
Packit Service 50c9f2
{
Packit Service 50c9f2
 <ABS_T: "abs">
Packit Service 50c9f2
| <ACCESS_T: "access">
Packit Service 50c9f2
| <AFTER_T: "after">
Packit Service 50c9f2
| <ALIAS_T: "alias">
Packit Service 50c9f2
| <ALL_T: "all">
Packit Service 50c9f2
| <AND_T: "and">
Packit Service 50c9f2
| <ARCHITECTURE_T: "architecture"> {::vhdl::parser::VhdlParser::setLineParsed(ARCHITECTURE_T);}
Packit Service 50c9f2
| <ARRAY_T: "array"> {VhdlParser::setLineParsed(ARRAY_T);}
Packit Service 50c9f2
| <ASSERT_T: "assert">
Packit Service 50c9f2
| <ASSUME_T: "assume">
Packit Service 50c9f2
| <ASSUME_GUARANTEE_T: "assume_guarentee">
Packit Service 50c9f2
| <ATTRIBUTE_T: "attribute"> {::vhdl::parser::VhdlParser::setLineParsed(ATTRIBUTE_T);}
Packit Service 50c9f2
| <BEGIN_T: "begin">
Packit Service 50c9f2
| <BLOCK_T: "block">
Packit Service 50c9f2
| <BODY_T: "body"> {::vhdl::parser::VhdlParser::setLineParsed(BODY_T);}
Packit Service 50c9f2
| <BUFFER_T: "buffer">
Packit Service 50c9f2
| <BUS_T: "bus">
Packit Service 50c9f2
| <COMPONENT_T: "component"> {VhdlParser::setLineParsed(COMPONENT_T);}
Packit Service 50c9f2
| <CASE_T: "case">
Packit Service 50c9f2
| <CONFIGURATION_T: "configuration"> {VhdlParser::setLineParsed(CONFIGURATION_T);}
Packit Service 50c9f2
| <CONSTANT_T: "constant">  {VhdlParser::setLineParsed(CONSTANT_T);}
Packit Service 50c9f2
| <CONTEXT_T: "context"> {VhdlParser::setLineParsed(CONTEXT_T);}
Packit Service 50c9f2
| <COVER_T: "cover">
Packit Service 50c9f2
| <DEFAULT_T: "default">
Packit Service 50c9f2
| <DISCONNECT_T: "disconnect">
Packit Service 50c9f2
| <DOWNTO_T: "downto">
Packit Service 50c9f2
| <ELSE_T: "else">
Packit Service 50c9f2
| <ELSIF_T: "elsif">
Packit Service 50c9f2
| <END_T: "end"> {VhdlParser::setLineParsed(END_T);}
Packit Service 50c9f2
| <ENTITY_T: "entity"> {VhdlParser::setLineParsed(ENTITY_T);}
Packit Service 50c9f2
| <EXIT_T: "exit">
Packit Service 50c9f2
| <FAIRNESS_T: "fairness">
Packit Service 50c9f2
| <FILE_T: "file"> {VhdlParser::setLineParsed(FILE_T);}
Packit Service 50c9f2
| <FOR_T: "for">
Packit Service 50c9f2
| <FORCE_T: "force">
Packit Service 50c9f2
| <FUNCTION_T: "function">  {VhdlParser::setLineParsed(FUNCTION_T);}
Packit Service 50c9f2
| <GENERATE_T: "generate">
Packit Service 50c9f2
| <GENERIC_T: "generic">
Packit Service 50c9f2
| <GROUP_T: "group"> {VhdlParser::setLineParsed(GROUP_T);}
Packit Service 50c9f2
| <GUARDED_T: "guarded">
Packit Service 50c9f2
| <IF_T: "if">
Packit Service 50c9f2
| <IMPURE_T: "impure">
Packit Service 50c9f2
| <IN_T: "in">
Packit Service 50c9f2
| <INERTIAL_T: "inertial">
Packit Service 50c9f2
| <INOUT_T: "inout">
Packit Service 50c9f2
| <IS_T: "is">
Packit Service 50c9f2
| <LABEL_T: "label">
Packit Service 50c9f2
| <LIBRARY_T: "library"> {VhdlParser::setLineParsed(LIBRARY_T);}
Packit Service 50c9f2
| <LINKAGE_T: "linkage">
Packit Service 50c9f2
| <LITERAL_T: "literal">
Packit Service 50c9f2
| <LOOP_T: "loop">
Packit Service 50c9f2
| <MAP_T: "map">
Packit Service 50c9f2
| <MOD_T: "mod">
Packit Service 50c9f2
| <NAND_T: "nand">
Packit Service 50c9f2
| <NEW_T: "new">
Packit Service 50c9f2
| <NEXT_T: "next">
Packit Service 50c9f2
| <NOR_T: "nor">
Packit Service 50c9f2
| <NOT_T: "not">
Packit Service 50c9f2
| <NULL_T: "null">
Packit Service 50c9f2
| <OF_T: "of">
Packit Service 50c9f2
| <ON_T: "on">
Packit Service 50c9f2
| <OPEN_T: "open">
Packit Service 50c9f2
| <OR_T: "or">
Packit Service 50c9f2
| <OTHER_T: "others">
Packit Service 50c9f2
| <OUT_T: "out">
Packit Service 50c9f2
| <PACKAGE_T: "package"> {::vhdl::parser::VhdlParser::setLineParsed(PACKAGE_T);}
Packit Service 50c9f2
| <PARAMETER_T: "parameter">
Packit Service 50c9f2
| <PORT_T: "port"> {::vhdl::parser::VhdlParser::setLineParsed(PORT_T);}
Packit Service 50c9f2
| <POSTPONED_T: "postponed">
Packit Service 50c9f2
| <PROCEDURE_T: "procedure"> {::vhdl::parser::VhdlParser::setLineParsed(PROCEDURE_T);}
Packit Service 50c9f2
| <PROCESS_T: "process"> {::vhdl::parser::VhdlParser::setLineParsed(PROCESS_T);}
Packit Service 50c9f2
| <PROPERTY_T: "property">
Packit Service 50c9f2
| <PROTECTED_T: "protected">
Packit Service 50c9f2
| <PURE_T: "pure">
Packit Service 50c9f2
| <RANGE_T: "range">
Packit Service 50c9f2
| <RECORD_T: "record"> {::vhdl::parser::VhdlParser::setLineParsed(RECORD_T);}
Packit Service 50c9f2
| <REGISTER_T: "register">
Packit Service 50c9f2
| <REJECT_T: "reject">
Packit Service 50c9f2
| <RELEASE_T: "release">
Packit Service 50c9f2
| <RESTRICT_T: "restrict">
Packit Service 50c9f2
| <RESTRICT_GUARANTEE_T: "restrict_guarantee">
Packit Service 50c9f2
| <REM_T: "rem">
Packit Service 50c9f2
| <REPORT_T: "report">
Packit Service 50c9f2
| <ROL_T: "rol">
Packit Service 50c9f2
| <ROR_T: "ror">
Packit Service 50c9f2
| <RETURN_T: "return">
Packit Service 50c9f2
| <SELECT_T: "select">
Packit Service 50c9f2
| <SEQUENCE_T: "sequence">
Packit Service 50c9f2
| <SEVERITY_T: "severity">
Packit Service 50c9f2
| <SIGNAL_T: "signal"> {::vhdl::parser::VhdlParser::setLineParsed(SIGNAL_T);}
Packit Service 50c9f2
| <SHARED_T: "shared">
Packit Service 50c9f2
| <SLA_T: "sla">
Packit Service 50c9f2
| <SLL_T: "sll">
Packit Service 50c9f2
| <SRA_T: "sra">
Packit Service 50c9f2
| <SRL_T: "srl">
Packit Service 50c9f2
| <STRONG_T: "strong">
Packit Service 50c9f2
| <SUBTYPE_T: "subtype"> {::vhdl::parser::VhdlParser::setLineParsed(SUBTYPE_T);}
Packit Service 50c9f2
| <THEN_T: "then">
Packit Service 50c9f2
| <TO_T: "to">
Packit Service 50c9f2
| <TRANSPORT_T: "transport">
Packit Service 50c9f2
| <TYPE_T: "type"> {::vhdl::parser::VhdlParser::setLineParsed(TYPE_T);}
Packit Service 50c9f2
| <UNAFFECTED_T: "unaffected">
Packit Service 50c9f2
| <UNITS_T: "units"> {::vhdl::parser::VhdlParser::setLineParsed(UNITS_T);}
Packit Service 50c9f2
| <UNTIL_T: "until">
Packit Service 50c9f2
| <USE_T: "use">
Packit Service 50c9f2
| <VARIABLE_T: "variable">
Packit Service 50c9f2
| <VMODE_T: "vmode">
Packit Service 50c9f2
| <VPROP_T: "vprop">
Packit Service 50c9f2
| <VUNIT_T: "vunit">
Packit Service 50c9f2
| <WAIT_T: "wait">
Packit Service 50c9f2
| <WHEN_T: "when">
Packit Service 50c9f2
| <WHILE_T: "while">
Packit Service 50c9f2
| <WITH_T: "with">
Packit Service 50c9f2
| <XOR_T: "xor">
Packit Service 50c9f2
| <XNOR_T: "xnor">
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
/* OPERATORS */
Packit Service 50c9f2
Packit Service 50c9f2
TOKEN :
Packit Service 50c9f2
{
Packit Service 50c9f2
  < AMPERSAND_T: "&" >
Packit Service 50c9f2
| < APOSTROPHE_T: "'" >
Packit Service 50c9f2
| < LPAREN_T: "(" >
Packit Service 50c9f2
| < RPAREN_T: ")" >
Packit Service 50c9f2
| < DOUBLEMULT_T: "**" >
Packit Service 50c9f2
| < MULT_T: "*" >
Packit Service 50c9f2
| < PLUS_T: "+" >
Packit Service 50c9f2
| < MINUS_T: "-" >
Packit Service 50c9f2
| < COMMA_T: "," >
Packit Service 50c9f2
| < VARASSIGN_T: ":=" >
Packit Service 50c9f2
| < COLON_T: ":" >
Packit Service 50c9f2
| < SEMI_T: ";" >{::vhdl::parser::VhdlParser::setLineParsed(SEMI_T);}
Packit Service 50c9f2
| < LESSTHAN_T: "<=" >
Packit Service 50c9f2
| < GREATERTHAN_T: ">=" >
Packit Service 50c9f2
| < LT_T: "<" >
Packit Service 50c9f2
| < GT_T: ">" >
Packit Service 50c9f2
| < EQU_T: "=" >
Packit Service 50c9f2
| < NOTEQU_T: "/=" >
Packit Service 50c9f2
| < ARROW_T: "=>" >
Packit Service 50c9f2
| < BOX_T: "<>" >
Packit Service 50c9f2
| < SLSL_T: "<<" >
Packit Service 50c9f2
| < RSRS_T: ">>" >
Packit Service 50c9f2
| < QQ_T: "??" >
Packit Service 50c9f2
| < QGT_T: "?>=" >
Packit Service 50c9f2
| < QLT_T: "?<=" >
Packit Service 50c9f2
| < QG_T: "?>" >
Packit Service 50c9f2
| < QL_T: "?<" >
Packit Service 50c9f2
| < QEQU_T: "?=" >
Packit Service 50c9f2
| < QNEQU_T: "?/=" >
Packit Service 50c9f2
| < Q_T: "?" >
Packit Service 50c9f2
| < BAR_T: "|" >
Packit Service 50c9f2
| <DOT_T: "." >
Packit Service 50c9f2
| < SLASH_T: "/" >
Packit Service 50c9f2
| < AT_T: "@" >
Packit Service 50c9f2
| < NEG_T: "^" >
Packit Service 50c9f2
| < LBRACKET_T: "[" >
Packit Service 50c9f2
| < RBRACKET_T: "]" >
Packit Service 50c9f2
| < LBRACE: "{" >
Packit Service 50c9f2
| < RBRACE: "}" >
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
TOKEN:
Packit Service 50c9f2
{
Packit Service 50c9f2
  <INTEGER: <DIGIT> ((["_"])? (<DIGIT>))* >
Packit Service 50c9f2
 | <STRINGLITERAL: (( ["\""](<GRAPHIC_CHARACTER>)*) "\"")+ >
Packit Service 50c9f2
 | <BASIC_IDENTIFIER:  (<LETTER> ( (["_"])* <LETTER_OR_DIGIT> )*) >
Packit Service 50c9f2
 | <EXTENDED_CHARACTER: ( ["\\"](<GRAPHIC_CHARACTER>)*["\\"] ) >
Packit Service 50c9f2
 | <CHARACTER_LITERAL: (["'"](<GRAPHIC_CHARACTER>|<QUOTE>)["'"]) >
Packit Service 50c9f2
 | <DECIMAL_LITERAL: (<INTEGER> (["."]<INTEGER>)? (<EXPONENT>)? ) >
Packit Service 50c9f2
 | <BASED_INTEGER: <LETTER_OR_DIGIT>( <LETTER_OR_DIGIT>)* >
Packit Service 50c9f2
 | <BASED_LITERAL: <INTEGER>["#"]<BASED_INTEGER>(["."] <BASED_INTEGER>)? ["#"] (<EXPONENT>)? >
Packit Service 50c9f2
 | <#EXPONENT: (["e","E"] (["+","-"])? (<INTEGER>)+) >
Packit Service 50c9f2
 | < #BASIC_GRAPHIC_CHARACTER:    (<UPPER_CASE_LETTER>|<DIGIT>|<SPECIAL_CHARACTER>|<SPACE_CHARACTER>) >
Packit Service 50c9f2
 | < #GRAPHIC_CHARACTER: ( <BASIC_GRAPHIC_CHARACTER>|<LOWER_CASE_LETTER>|<OTHER_SPECIAL_CHARACTER> ) >
Packit Service 50c9f2
 | < #LETTER_OR_DIGIT: ( <LETTER> | <DIGIT> ) >
Packit Service 50c9f2
 | < #LETTER_OR_DIGIT_OR_STD: (<LETTER_OR_DIGIT> | <STD_LOGIC> ) >
Packit Service 50c9f2
 | < #LETTER: (<UPPER_CASE_LETTER>|<LOWER_CASE_LETTER>) >
Packit Service 50c9f2
 | < #UPPER_CASE_LETTER: ["A"-"Z"]  >
Packit Service 50c9f2
 | <BIT_STRING_LITERAL : (<DIGIT>)*<BASE_SPECIFIER>["\""](<LETTER_OR_DIGIT_OR_STD>((["_"])*<LETTER_OR_DIGIT_OR_STD>)*)["\""] >
Packit Service 50c9f2
 | <#BASE_SPECIFIER:["B","O","X","b","o","x","d","D"]>
Packit Service 50c9f2
 | <#STD_LOGIC:["0","1","L","H","X","Z","W","-","l","h","x","z","w"]>
Packit Service 50c9f2
 | < #DIGIT: ["0"-"9"] >
Packit Service 50c9f2
 | < #SPECIAL_CHARACTER: ["#","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","_","|"] >
Packit Service 50c9f2
 | < #OTHER_SPECIAL_CHARACTER: ["%","!","$","@","?","[","\\","]","^","`","{","}","~","\u00A0"-"\u00FF"]>
Packit Service 50c9f2
 | < #SPACE_CHARACTER: [" ","\t"] >
Packit Service 50c9f2
 | < #LOWER_CASE_LETTER: ["a"-"z"] >
Packit Service 50c9f2
 | < #QUOTE: ["\""] >
Packit Service 50c9f2
 | <VHDL2008TOOLDIR  : ["`"](<GRAPHIC_CHARACTER>|<STRINGLITERAL>)+ >
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString abstract_literal() :
Packit Service 50c9f2
{Token *tok;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   tok=<DECIMAL_LITERAL> { return tok->image.c_str(); }
Packit Service 50c9f2
 | tok=<INTEGER>         { return tok->image.c_str(); }
Packit Service 50c9f2
 | tok=<BASED_LITERAL>   { return tok->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString access_type_definition() :
Packit Service 50c9f2
{Token *tok=0;QCString str,str1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<ACCESS_T> str1=subtype_indication() { str=tok->image.c_str(); return str+str1; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString actual_designator() :
Packit Service 50c9f2
{QCString str;Token *t=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
t=<OPEN_T> { return t->image.c_str(); }
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(expression())
Packit Service 50c9f2
  str=expression() { return str; }
Packit Service 50c9f2
|
Packit Service 50c9f2
  LOOKAHEAD(name())
Packit Service 50c9f2
 str=name() { return str; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString actual_parameter_part() :
Packit Service 50c9f2
{QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   s=association_list() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString actual_part() :
Packit Service 50c9f2
{QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD(actual_designator())
Packit Service 50c9f2
 s=actual_designator() { return s;}
Packit Service 50c9f2
 |
Packit Service 50c9f2
   <BOX_T> { return "<>";}
Packit Service 50c9f2
 |
Packit Service 50c9f2
 s=name() <LPAREN_T> s1=actual_designator() <RPAREN_T> {s+="(";s+=s1+")";return s;}
Packit Service 50c9f2
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString adding_operator () :
Packit Service 50c9f2
{}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <PLUS_T> { return "+";}
Packit Service 50c9f2
  | <MINUS_T> { return "-";}
Packit Service 50c9f2
  |<AMPERSAND_T> { return "&";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString aggregate() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <LPAREN_T> s=element_association() (<COMMA_T> s1=element_association(){s+=","+s1;})* <RPAREN_T> { return "("+s+")";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString alias_declaration() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <ALIAS_T> s2=alias_designator()
Packit Service 50c9f2
 [ <COLON_T>{ s+=":"; } s1=subtype_indication() { s+=s1; }]
Packit Service 50c9f2
 <IS_T> { s+=" is "; } s1=name() {s+=s1;} [s1=signature() {s+=s1;}]
Packit Service 50c9f2
 <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
 addVhdlType(s2.data(),getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data(),Public);
Packit Service 50c9f2
Packit Service 50c9f2
 return s2+" "+s+";";
Packit Service 50c9f2
}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString alias_designator()  : {Token *tok=0;QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=identifier() { return s;}
Packit Service 50c9f2
 | tok=<CHARACTER_LITERAL> { return tok->image.c_str(); }
Packit Service 50c9f2
 | s=operator_symbol() { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void allocator()  :{}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD(3)
Packit Service 50c9f2
 <NEW_T> qualified_expression()
Packit Service 50c9f2
 |  <NEW_T>  subtype_indication()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void architecture_body() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
    <ARCHITECTURE_T> s=identifier() <OF_T> s1=name() <IS_T>
Packit Service 50c9f2
    {
Packit Service 50c9f2
                  QCString t=s1+"::"+s;
Packit Service 50c9f2
                  genLabels.resize(0);
Packit Service 50c9f2
                  pushLabel(genLabels,s1);
Packit Service 50c9f2
                  lastCompound=current;
Packit Service 50c9f2
                  addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
Packit Service 50c9f2
    }
Packit Service 50c9f2
   try{
Packit Service 50c9f2
   architecture_declarative_part()
Packit Service 50c9f2
    }catch(...){error_skipto(BEGIN_T);}
Packit Service 50c9f2
   <BEGIN_T>
Packit Service 50c9f2
   architecture_statement_part()
Packit Service 50c9f2
  <END_T> [<ARCHITECTURE_T>] [name()] <SEMI_T>
Packit Service 50c9f2
   { lastEntity=0;lastCompound=0; genLabels.resize(0); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void architecture_declarative_part() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (block_declarative_item() )*
Packit Service 50c9f2
 // | (<VHDL2008TOOLDIR>)
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void architecture_statement_part() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (concurrent_statement())*
Packit Service 50c9f2
 // | (<VHDL2008TOOLDIR>)
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString array_type_definition ():  { QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
 LOOKAHEAD(unconstraint_array_definition())
Packit Service 50c9f2
Packit Service 50c9f2
  s=unconstraint_array_definition() {return s;}
Packit Service 50c9f2
  | s=constraint_array_definition()  {return s;}
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString assertion() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   <ASSERT_T> s=condition() [ t=<REPORT_T> s1=expression() ] [t1=<SEVERITY_T> s2=expression()]
Packit Service 50c9f2
 {
Packit Service 50c9f2
   s.prepend("assert ");
Packit Service 50c9f2
   if(t) s1.prepend(" report ");
Packit Service 50c9f2
   if(t1) s2.prepend(" report ");
Packit Service 50c9f2
    return s+s1+s2;
Packit Service 50c9f2
 }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString assertion_statement() :  {QCString s,s1,s2;Token *t=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  [ s=label() t=<COLON_T> ] s1=assertion() <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
    if(t) s+=":";
Packit Service 50c9f2
    return s+s1+";";
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
QCString association_element() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 [LOOKAHEAD(formal_part() <ARROW_T>) s=formal_part() <ARROW_T> ] s1=actual_part()
Packit Service 50c9f2
 { return s+" => "+s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString association_list ():  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=association_element() (<COMMA_T> s1=association_element() { s+=","+s1; })* { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString attribute_declaration() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <ATTRIBUTE_T> s=identifier() <COLON_T> s1=type_mark() <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
    addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public);
Packit Service 50c9f2
    return " attribute "+s+":"+s1+";";
Packit Service 50c9f2
  }
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString attribute_designator (): {QCString s;Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=identifier() { return s;}
Packit Service 50c9f2
  | tok=<RANGE_T> { return tok->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString attribute_name (): {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=identifier() <APOSTROPHE_T> s1=name(){ s+="'"+s1; }[LOOKAHEAD(1)<LPAREN_T>s1=expression() <RPAREN_T> {s+"("+s1+")";}] { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString attribute_specification():  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <ATTRIBUTE_T> s=attribute_designator() <OF_T> s1=entity_specification() <IS_T> s2=expression() <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
   QCString t= s1+" is "+s2;
Packit Service 50c9f2
   addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public);
Packit Service 50c9f2
   return " attribute "+s+" of "+s1+ " is "+s2+";";
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString base() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<INTEGER> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString base_specifier ():  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString base_unit_declaration() :
Packit Service 50c9f2
{QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=identifier() { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString based_integer() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString based_literal():  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 tok=<BASED_LITERAL> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString basic_identifier() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void binding_indication() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 [ <USE_T> entity_aspect() ]
Packit Service 50c9f2
 [ generic_map_aspect() ]
Packit Service 50c9f2
 [ port_map_aspect() ]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString bit_string_literal ():  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<BIT_STRING_LITERAL> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString bit_value() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<BASIC_IDENTIFIER> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_configuration() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
    <FOR_T> block_specification()
Packit Service 50c9f2
        ( use_clause() )*
Packit Service 50c9f2
        ( configuration_item())*
Packit Service 50c9f2
    <END_T> <FOR_T> <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_declarative_item ():  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  subprogram_declaration()
Packit Service 50c9f2
//| subprogram_body()
Packit Service 50c9f2
| type_declaration()
Packit Service 50c9f2
| subtype_declaration()
Packit Service 50c9f2
| constant_declaration()
Packit Service 50c9f2
| signal_declaration()
Packit Service 50c9f2
| variable_declaration()
Packit Service 50c9f2
| file_declaration()
Packit Service 50c9f2
| alias_declaration()
Packit Service 50c9f2
| component_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(attribute_declaration())
Packit Service 50c9f2
attribute_declaration()
Packit Service 50c9f2
| attribute_specification()
Packit Service 50c9f2
| configuration_specification()
Packit Service 50c9f2
| disconnection_specification ()
Packit Service 50c9f2
| use_clause()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
group_template_declaration()
Packit Service 50c9f2
| group_declaration()
Packit Service 50c9f2
//| <VHDL2008TOOLDIR>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_declarative_part() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
   (block_declarative_item() )*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_header() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
[LOOKAHEAD(generic_clause()) generic_clause()[ generic_map_aspect() <SEMI_T> ] ]
Packit Service 50c9f2
[ port_clause() [ port_map_aspect() <SEMI_T> ] ]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_specification() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  name()[LOOKAHEAD(1) <LPAREN_T> index_specification() <RPAREN_T>]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_statement() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=identifier() <COLON_T>
Packit Service 50c9f2
        <BLOCK_T> { pushLabel(genLabels,s); }[ <LPAREN_T> expression() <RPAREN_T> ] [ <IS_T> ]
Packit Service 50c9f2
            block_header()
Packit Service 50c9f2
            block_declarative_part()
Packit Service 50c9f2
            <BEGIN_T>
Packit Service 50c9f2
            block_statement_part()
Packit Service 50c9f2
            <END_T> <BLOCK_T> [ identifier() ] <SEMI_T>
Packit Service 50c9f2
            {
Packit Service 50c9f2
              genLabels=popLabel(genLabels);
Packit Service 50c9f2
            }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void block_statement_part() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  ( concurrent_statement() )*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void  case_statement() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ identifier() <COLON_T> ]
Packit Service 50c9f2
  <CASE_T> s=expression()
Packit Service 50c9f2
    {
Packit Service 50c9f2
     QCString ca="case "+s;
Packit Service 50c9f2
     FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca);
Packit Service 50c9f2
    }
Packit Service 50c9f2
  <IS_T>
Packit Service 50c9f2
        case_statement_alternative()
Packit Service 50c9f2
        ( case_statement_alternative ())*
Packit Service 50c9f2
        <END_T> <CASE_T> [ identifier() ] <SEMI_T>
Packit Service 50c9f2
        {
Packit Service 50c9f2
         FlowChart::moveToPrevLevel();
Packit Service 50c9f2
         FlowChart::addFlowChart(FlowChart::END_CASE,"end case",0);
Packit Service 50c9f2
          }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void case_statement_alternative() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <WHEN_T> s=choices() <ARROW_T>
Packit Service 50c9f2
   {
Packit Service 50c9f2
    QCString t="when ";
Packit Service 50c9f2
    t+=s+"=> ";
Packit Service 50c9f2
    FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t);
Packit Service 50c9f2
    }
Packit Service 50c9f2
  sequence_of_statement(){FlowChart::moveToPrevLevel(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString character_literal() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<CHARACTER_LITERAL>{ return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString choice() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  LOOKAHEAD(discrete_range())
Packit Service 50c9f2
  s=discrete_range(){ return s; }
Packit Service 50c9f2
  |
Packit Service 50c9f2
   LOOKAHEAD(simple_expression())
Packit Service 50c9f2
   s=simple_expression(){ return s; }
Packit Service 50c9f2
  |
Packit Service 50c9f2
  LOOKAHEAD(identifier())
Packit Service 50c9f2
  s=identifier(){ return s; }
Packit Service 50c9f2
  | <OTHER_T> { return " others "; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString choices() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=choice() (<BAR_T> s1=choice(){s+="|";s+=s1;})* { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void component_configuration () :{}
Packit Service 50c9f2
{
Packit Service 50c9f2
    <FOR_T> component_specification()
Packit Service 50c9f2
        [ binding_indication() <SEMI_T> ]
Packit Service 50c9f2
        [ block_configuration() ]
Packit Service 50c9f2
    <END_T> <FOR_T> <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
void component_declaration() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <COMPONENT_T> s=identifier() [ <IS_T> ]
Packit Service 50c9f2
   { currP=VhdlDocGen::COMPONENT; }
Packit Service 50c9f2
  [ generic_clause() ]
Packit Service 50c9f2
  [ port_clause() ]
Packit Service 50c9f2
   {
Packit Service 50c9f2
     addVhdlType(s.data(),getLine(COMPONENT_T),Entry::VARIABLE_SEC,VhdlDocGen::COMPONENT,0,0,Public);
Packit Service 50c9f2
     currP=0;
Packit Service 50c9f2
  }
Packit Service 50c9f2
  <END_T> <COMPONENT_T> [ identifier() ] <SEMI_T>
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void component_instantiation_statement() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
s=identifier() <COLON_T>
Packit Service 50c9f2
 s1=instantiation_unit()
Packit Service 50c9f2
 {
Packit Service 50c9f2
       QCString s3;
Packit Service 50c9f2
       if (s1.contains("|")) {
Packit Service 50c9f2
         s3=VhdlDocGen::getIndexWord(s1.data(),0);
Packit Service 50c9f2
         s1=VhdlDocGen::getIndexWord(s1.data(),1);
Packit Service 50c9f2
       }
Packit Service 50c9f2
Packit Service 50c9f2
       addCompInst(s.lower().data(),s1.lower().data(),s3.data(),getLine());
Packit Service 50c9f2
 }
Packit Service 50c9f2
        [ LOOKAHEAD(generic_map_aspect()) generic_map_aspect() ]
Packit Service 50c9f2
        [ port_map_aspect() ] <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void component_specification() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
instantiation_list() <COLON_T> name()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString composite_type_definition() :  { QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=array_type_definition(){ return s; }
Packit Service 50c9f2
| record_type_definition(){ return s+"#"; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void concurrent_assertion_statement() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
[  LOOKAHEAD(2) identifier() <COLON_T> ] [  <POSTPONED_T> ] assertion() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void concurrent_procedure_call_statement() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
[  LOOKAHEAD(2) identifier() <COLON_T> ] [ <POSTPONED_T> ] procedure_call() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void concurrent_signal_assignment_statement() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ LOOKAHEAD(2) identifier() <COLON_T> ] [<POSTPONED_T> ]
Packit Service 50c9f2
(
Packit Service 50c9f2
LOOKAHEAD(conditional_signal_assignment() )
Packit Service 50c9f2
 conditional_signal_assignment()
Packit Service 50c9f2
| selected_signal_assignment()
Packit Service 50c9f2
Packit Service 50c9f2
)
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void concurrent_statement() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
// try {
Packit Service 50c9f2
LOOKAHEAD([identifier() ":"] <BLOCK_T>)
Packit Service 50c9f2
block_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD([identifier() ":"] [<POSTPONED_T>] <PROCESS_T>)
Packit Service 50c9f2
process_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(generate_statement())
Packit Service 50c9f2
generate_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
case_scheme()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD([identifier() ":"] [<POSTPONED_T>] <ASSERT_T>)
Packit Service 50c9f2
concurrent_assertion_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(concurrent_signal_assignment_statement())
Packit Service 50c9f2
    concurrent_signal_assignment_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(component_instantiation_statement() )
Packit Service 50c9f2
component_instantiation_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(concurrent_procedure_call_statement())
Packit Service 50c9f2
concurrent_procedure_call_statement()
Packit Service 50c9f2
| <VHDL2008TOOLDIR>
Packit Service 50c9f2
 /*
Packit Service 50c9f2
  catch( ParseException e )
Packit Service 50c9f2
  {
Packit Service 50c9f2
    error_skipto(SEMI_T, "syntax error in declarative item");
Packit Service 50c9f2
  }
Packit Service 50c9f2
 */
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString condition() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=expression() { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString condition_clause() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <UNTIL_T> s=condition()
Packit Service 50c9f2
  {
Packit Service 50c9f2
    return " until "+s;
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void conditional_signal_assignment() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  // LOOKAHEAD(  target() "<=" options_() conditional_waveforms() ";")
Packit Service 50c9f2
 target() <LESSTHAN_T> options() conditional_waveforms() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void conditional_waveforms() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
waveform()
Packit Service 50c9f2
    ( LOOKAHEAD(<WHEN_T> condition() <ELSE_T>)
Packit Service 50c9f2
       <WHEN_T> condition() <ELSE_T> waveform() )*
Packit Service 50c9f2
    [ <WHEN_T> condition() ]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
// ( waveform() < WHEN_T> condition() <ELSE_T> )*
Packit Service 50c9f2
//   waveform() [ <WHEN_T> condition() ]
Packit Service 50c9f2
Packit Service 50c9f2
//waveform()
Packit Service 50c9f2
 //   ( LOOKAHEAD( <WHEN> condition() <ELSE>)
Packit Service 50c9f2
    //    <WHEN> condition() <ELSE> waveform() )*
Packit Service 50c9f2
    //[ <WHEN> condition() ]
Packit Service 50c9f2
Packit Service 50c9f2
void configuration_declaration() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <CONFIGURATION_T> s=identifier() <OF_T> s1=name() <IS_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
Packit Service 50c9f2
  confName=s+"::"+s1;
Packit Service 50c9f2
  addVhdlType(s.data(),getLine(CONFIGURATION_T),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",s1.data(),Public);
Packit Service 50c9f2
  }
Packit Service 50c9f2
    configuration_declarative_part()
Packit Service 50c9f2
    block_configuration()
Packit Service 50c9f2
 <END_T> [ <CONFIGURATION_T> ] [ name() ] <SEMI_T>
Packit Service 50c9f2
 { genLabels.resize(0); confName="";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void configuration_declarative_item() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 use_clause()
Packit Service 50c9f2
| attribute_specification()
Packit Service 50c9f2
| group_declaration()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void configuration_declarative_part() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (configuration_declarative_item())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void configuration_item ():  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD(component_configuration())
Packit Service 50c9f2
 component_configuration()
Packit Service 50c9f2
 | block_configuration()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void configuration_specification() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<FOR_T> component_specification() binding_indication() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString constant_declaration() :  {QCString s,s1,s2;Token *t=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   <CONSTANT_T> s=identifier_list() <COLON_T> s1= subtype_indication() [ t=<VARASSIGN_T> s2=expression() ] <SEMI_T>
Packit Service 50c9f2
    {
Packit Service 50c9f2
     if(t)
Packit Service 50c9f2
      s2.prepend(":=");
Packit Service 50c9f2
     QCString it=s1+s2;
Packit Service 50c9f2
     addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public);
Packit Service 50c9f2
     it.prepend("constant ");
Packit Service 50c9f2
     return it;
Packit Service 50c9f2
    }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString constraint_array_definition (): {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<ARRAY_T> s=index_constraint() <OF_T> s1=subtype_indication(){ return s+" "+s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void context_clause (): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (context_item())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString constraint () :{QCString s;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
    LOOKAHEAD(range_constraint())
Packit Service 50c9f2
    s=range_constraint(){ return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(index_constraint())
Packit Service 50c9f2
     s=index_constraint(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void context_item() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 library_clause()
Packit Service 50c9f2
| use_clause()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString decimal_literal() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 tok=<DECIMAL_LITERAL> { return tok->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString delay_mechanism ():  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<TRANSPORT_T> { return " transport ";}
Packit Service 50c9f2
| [ <REJECT_T> s=expression() {s.prepend(" reject ");}] <INERTIAL_T> { return s+" inertial "; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void design_file() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (design_unit() )+  {}
Packit Service 50c9f2
  | <EOF>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void design_unit() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 context_clause()library_unit()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString designator() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=identifier()          {return s;}
Packit Service 50c9f2
 | s=operator_symbol(){return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString direction ():  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
tok=<TO_T>  { return tok->image.c_str();}
Packit Service 50c9f2
| tok=<DOWNTO_T> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void disconnection_specification() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<DISCONNECT_T> guarded_signal_specificatio() <AFTER_T> expression() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void guarded_signal_specificatio() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 signal_list() <COLON_T> name()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString discrete_range() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  LOOKAHEAD(range())
Packit Service 50c9f2
  s=range() { return s;}
Packit Service 50c9f2
  |
Packit Service 50c9f2
  LOOKAHEAD(subtype_indication())
Packit Service 50c9f2
   s=subtype_indication() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString element_association() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[LOOKAHEAD(choices() <ARROW_T>) s=choices() <ARROW_T> ]  s1=expression()
Packit Service 50c9f2
 {
Packit Service 50c9f2
if(!s.isEmpty())
Packit Service 50c9f2
 return s+"=>"+s1;
Packit Service 50c9f2
return s1;
Packit Service 50c9f2
 }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString element_declaration() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=identifier_list() <COLON_T> s1=subtype_indication() <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public);
Packit Service 50c9f2
  //addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
Packit Service 50c9f2
  return s+":"+s1;
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_aspect() :  {Token *tok=0;QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
tok=<ENTITY_T> s=name() [ LOOKAHEAD(1)<LPAREN_T> s1=identifier() <RPAREN_T> {s+="("+s1+")";} ] { return s;}
Packit Service 50c9f2
| tok=<CONFIGURATION_T> s=name() { return tok->image.c_str()+s;}
Packit Service 50c9f2
| tok=<OPEN_T> { return tok->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_class() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<ENTITY_T> { return "entity";}
Packit Service 50c9f2
| <ARCHITECTURE_T> {return "architecture";}
Packit Service 50c9f2
| <CONFIGURATION_T> {return "configuration";}
Packit Service 50c9f2
| <PROCEDURE_T> {return "procedure";}
Packit Service 50c9f2
| <FUNCTION_T> {return "function";}
Packit Service 50c9f2
| <PACKAGE_T> {return "package";}
Packit Service 50c9f2
| <TYPE_T> {return "type";}
Packit Service 50c9f2
| <SUBTYPE_T> {return "subtype";}
Packit Service 50c9f2
| <CONSTANT_T> {return "constant";}
Packit Service 50c9f2
| <SIGNAL_T> {return "signal";}
Packit Service 50c9f2
| <VARIABLE_T> {return "variable";}
Packit Service 50c9f2
| <COMPONENT_T> {return "component";}
Packit Service 50c9f2
| <LABEL_T> {return "label";}
Packit Service 50c9f2
| <LITERAL_T> {return "literal";}
Packit Service 50c9f2
| <UNITS_T> {return "units";}
Packit Service 50c9f2
| <GROUP_T> {return "group";}
Packit Service 50c9f2
| <FILE_T>  {return "file";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_class_entry() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=entity_class() [ <BOX_T> {s+="<>";} ] { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_class_entry_list() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 ( s1=entity_class_entry() {s+=s1;} )(<COMMA_T> s=entity_class_entry(){s2+=",";s2+=s;}  )* { return s1+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void entity_declaration() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   // try{
Packit Service 50c9f2
    <ENTITY_T> s=identifier()  <IS_T>
Packit Service 50c9f2
             {
Packit Service 50c9f2
                lastEntity=current;
Packit Service 50c9f2
                lastCompound=0;
Packit Service 50c9f2
                addVhdlType(s.data(),getLine(ENTITY_T),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public);
Packit Service 50c9f2
               }
Packit Service 50c9f2
        entity_header()
Packit Service 50c9f2
        entity_declarative_part ()
Packit Service 50c9f2
      [ <BEGIN_T> entity_statement_part() ]
Packit Service 50c9f2
       <END_T> [ <ENTITY_T> ] [ name() ]
Packit Service 50c9f2
     //    }catch(...){error_skipto(SEMI_T);}
Packit Service 50c9f2
     <SEMI_T>
Packit Service 50c9f2
     { lastEntity=0;lastCompound=0; genLabels.resize(0); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void entity_declarative_item() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
subprogram_declaration()
Packit Service 50c9f2
//| subprogram_body()
Packit Service 50c9f2
| type_declaration()
Packit Service 50c9f2
| subtype_declaration()
Packit Service 50c9f2
| constant_declaration()
Packit Service 50c9f2
| signal_declaration()
Packit Service 50c9f2
| variable_declaration()
Packit Service 50c9f2
| file_declaration()
Packit Service 50c9f2
| alias_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(attribute_declaration())
Packit Service 50c9f2
attribute_declaration()
Packit Service 50c9f2
| attribute_specification()
Packit Service 50c9f2
| disconnection_specification()
Packit Service 50c9f2
| use_clause()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
group_template_declaration()
Packit Service 50c9f2
| group_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(5)
Packit Service 50c9f2
 package_instantiation_declaration()
Packit Service 50c9f2
|package_declaration()
Packit Service 50c9f2
| <VHDL2008TOOLDIR>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void entity_declarative_part() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (entity_declarative_item() )*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_designator() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=entity_tag() [ s1=signature() ] { return s+s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void entity_header() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 [  { currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC; } generic_clause()]
Packit Service 50c9f2
 [ { currP=VhdlDocGen::PORT; } port_clause()]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_name_list() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
(s1=entity_designator() {s+=s1;})+ { return s;}
Packit Service 50c9f2
| <OTHER_T> { return "other";}
Packit Service 50c9f2
| <ALL_T> {return "all";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_specification() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=entity_name_list() <COLON_T> s1=entity_class(){ return s+":"+s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void entity_statement() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
LOOKAHEAD(concurrent_assertion_statement())
Packit Service 50c9f2
concurrent_assertion_statement()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(process_statement())
Packit Service 50c9f2
 process_statement()
Packit Service 50c9f2
| concurrent_procedure_call_statement()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void entity_statement_part() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (entity_statement())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString entity_tag ():  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=name() { return s;}
Packit Service 50c9f2
| s=character_literal() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString enumeration_literal() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=identifier() { return s;}
Packit Service 50c9f2
 | s=character_literal() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString enumeration_type_definition() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <LPAREN_T>s=enumeration_literal() (LOOKAHEAD(1)<COMMA_T> s1=enumeration_literal() {s+=",";s+=s1;} )* <RPAREN_T>
Packit Service 50c9f2
  { return "("+s+")";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString exit_statement() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() t=<COLON_T> ] <EXIT_T> [ s1=identifier() ]
Packit Service 50c9f2
[ t1=<WHEN_T> s2=condition() ] <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  lab.resize(0);
Packit Service 50c9f2
  if(t) s+=":";
Packit Service 50c9f2
  if(t1) s2.prepend(" when ");
Packit Service 50c9f2
   FlowChart::addFlowChart(FlowChart::EXIT_NO,"exit",s2.data(),s1.data());
Packit Service 50c9f2
Packit Service 50c9f2
  return s+s1+s2+";";
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString expression ():  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=relation() ( s1=logop() s2=relation() {s+=s1;s+=s2;} )*
Packit Service 50c9f2
{ return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString logop() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <AND_T> { return "and" ;}
Packit Service 50c9f2
  |<NAND_T> { return "nand" ;}
Packit Service 50c9f2
  |<NOR_T> { return "nor" ;}
Packit Service 50c9f2
  |<XNOR_T> { return "xnor" ;}
Packit Service 50c9f2
  |<XOR_T> { return "xor" ;}
Packit Service 50c9f2
  |<OR_T> { return "or" ;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString extended_identifier ():  {Token *t;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 t=<EXTENDED_CHARACTER> { return t->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString factor():  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=primary() [LOOKAHEAD(1) <DOUBLEMULT_T> s1=primary(){ s+="**";s+=s1;} ] { return s;}
Packit Service 50c9f2
| <ABS_T> s=primary(){ s1 = "abs "; return s1+s; }
Packit Service 50c9f2
| <NOT_T>  s=primary(){s1="not ";return s1+s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString file_declaration() :  {QCString s,s1,s2,s3;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <FILE_T> s=identifier_list() <COLON_T> s2=subtype_indication() [ s3=file_open_information() ] <SEMI_T>
Packit Service 50c9f2
   {
Packit Service 50c9f2
   QCString t1=s2+" "+s3;
Packit Service 50c9f2
   addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public);
Packit Service 50c9f2
   return " file "+s+":"+s2+" "+s3+";";
Packit Service 50c9f2
   }
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString  file_logical_name():  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=expression() { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString file_open_information() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 [ <OPEN_T> s=expression() ] <IS_T> s1=file_logical_name() {s2="open "+s+" is "+s1;  return s2; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString file_type_definition() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <FILE_T> <OF_T> s=type_mark() { s1=" file of "+s; return s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString floating_type_definition() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=range_constraint(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString formal_designator() : {QCString s;Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
    s=name()  { return s; }
Packit Service 50c9f2
    |tok=<INTEGER> { return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString formal_parameter_list() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=interface_list(){ return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString formal_part() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=name() [<LPAREN_T> formal_designator() <RPAREN_T> {s+"("+s1+")";}] {return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString full_type_declaration() :  {Entry *tmpEntry;QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<TYPE_T> s=identifier() <IS_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  tmpEntry=current;
Packit Service 50c9f2
  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public);
Packit Service 50c9f2
}
Packit Service 50c9f2
 try{
Packit Service 50c9f2
     s2=type_definition()
Packit Service 50c9f2
       }catch(...){error_skipto(SEMI_T);}
Packit Service 50c9f2
     <SEMI_T>
Packit Service 50c9f2
     {
Packit Service 50c9f2
      if (s2.contains("#")) {
Packit Service 50c9f2
        VhdlDocGen::deleteAllChars(s2,'#');
Packit Service 50c9f2
        tmpEntry->spec=VhdlDocGen::RECORD;
Packit Service 50c9f2
        tmpEntry->type=s2.data();
Packit Service 50c9f2
        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      else if (s2.contains("%")) {
Packit Service 50c9f2
        VhdlDocGen::deleteAllChars(s2,'%');
Packit Service 50c9f2
        tmpEntry->spec=VhdlDocGen::UNITS;
Packit Service 50c9f2
        tmpEntry->type=s2.data();
Packit Service 50c9f2
        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      else {
Packit Service 50c9f2
        tmpEntry->spec=VhdlDocGen::TYPE;
Packit Service 50c9f2
        tmpEntry->type=s2.data();
Packit Service 50c9f2
        //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      tmpEntry=0;
Packit Service 50c9f2
      return "type "+s+" is "+s2+";";
Packit Service 50c9f2
     }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString function_call() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=name()  <LPAREN_T> s1=actual_parameter_part()  <RPAREN_T> { return s+"("+s1+")";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void generate_statement() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=identifier() <COLON_T>
Packit Service 50c9f2
          try{
Packit Service 50c9f2
        generate_scheme() <GENERATE_T>
Packit Service 50c9f2
        { pushLabel(genLabels,s); }
Packit Service 50c9f2
          generate_statement_body1()
Packit Service 50c9f2
        <END_T>
Packit Service 50c9f2
                 }catch(...){error_skipto(GENERATE_T);}
Packit Service 50c9f2
        <GENERATE_T> [ identifier() ] <SEMI_T> {genLabels=popLabel(genLabels); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void generate_scheme() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<FOR_T> parameter_specification()
Packit Service 50c9f2
| <IF_T> condition()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void generic_clause() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <GENERIC_T>  <LPAREN_T> { parse_sec=GEN_SEC; } s=generic_list() <RPAREN_T> <SEMI_T> { parse_sec=0; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString generic_list() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=interface_list() { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void generic_map_aspect() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
     <GENERIC_T> <MAP_T> <LPAREN_T> association_list() <RPAREN_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString group_constituent() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=name() { return s; }
Packit Service 50c9f2
 | s=character_literal() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString group_constituent_list() : {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (s1=group_constituent())(<COMMA_T> s=group_constituent(){s2+=",";s2+=s1;})* { return s+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString group_declaration() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <GROUP_T> s=identifier() <COLON_T> s1=identifier() <LPAREN_T> s2=group_constituent_list() <RPAREN_T> <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
   return "group "+s+":"+s1+"("+s2+");";
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString group_template_declaration() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <GROUP_T> s=identifier() <IS_T> <LPAREN_T> s1=entity_class_entry_list() <RPAREN_T> <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
    return "group "+s+ "is ("+s1+");";
Packit Service 50c9f2
  }
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
void guarded_signal_specification() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 signal_list() <COLON_T> type_mark()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString identifier() : {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  tok=<EXTENDED_CHARACTER>{ return tok->image.c_str(); }
Packit Service 50c9f2
  |tok=<BASIC_IDENTIFIER> { return tok->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString identifier_list() : {QCString str,str1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   str=identifier() (<COMMA_T> str1=identifier() {str+=",";str+=str1;})* { return str; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void if_statement() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[LOOKAHEAD(1) identifier() <COLON_T> ]
Packit Service 50c9f2
    <IF_T> s=condition() <THEN_T>
Packit Service 50c9f2
    {
Packit Service 50c9f2
    s.prepend("if ");
Packit Service 50c9f2
    FlowChart::addFlowChart(FlowChart::IF_NO,0,s);
Packit Service 50c9f2
  }
Packit Service 50c9f2
        sequence_of_statement()
Packit Service 50c9f2
        (
Packit Service 50c9f2
          <ELSIF_T> s1=condition() <THEN_T>
Packit Service 50c9f2
          {
Packit Service 50c9f2
           s1.prepend("elsif ");
Packit Service 50c9f2
           FlowChart::addFlowChart(FlowChart::ELSIF_NO,0,s1.data());
Packit Service 50c9f2
          }
Packit Service 50c9f2
          sequence_of_statement()
Packit Service 50c9f2
        )*
Packit Service 50c9f2
        [LOOKAHEAD(1) <ELSE_T>
Packit Service 50c9f2
         {
Packit Service 50c9f2
           FlowChart::addFlowChart(FlowChart::ELSE_NO,0,0);
Packit Service 50c9f2
         }
Packit Service 50c9f2
        sequence_of_statement() ] <END_T> <IF_T> [ identifier() ] <SEMI_T>
Packit Service 50c9f2
         {
Packit Service 50c9f2
          FlowChart::moveToPrevLevel();
Packit Service 50c9f2
          FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0);
Packit Service 50c9f2
        }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString incomplete_type_declaration() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <TYPE_T> s=identifier() <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
   return "type "+s+";";
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString index_constraint() :  {QCString s="("; QCString s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  //try{
Packit Service 50c9f2
  <LPAREN_T> s2=discrete_range(){s+=s2;}(LOOKAHEAD(1)<COMMA_T> s1=discrete_range(){s+=",";s+=s1;})*  <RPAREN_T> {return s+")";}
Packit Service 50c9f2
//}catch(...){  error_skipto(SEMI_T);hasError=false;return "";}
Packit Service 50c9f2
  }
Packit Service 50c9f2
Packit Service 50c9f2
QCString index_specification() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD( discrete_range())
Packit Service 50c9f2
 s=discrete_range() { return s;}
Packit Service 50c9f2
| s=expression(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString index_subtype_definition() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=type_mark() <RANGE_T> <BOX_T> { return s+" range <> ";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString instantiation_unit() :  {QCString s,s1,s2;Token *tok;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ <COMPONENT_T> ] s=identifier() {s1="component "; return s; }
Packit Service 50c9f2
| <ENTITY_T>  [LOOKAHEAD(2)<BASIC_IDENTIFIER> <DOT_T>] s2=name() {s="entity|"+s2;} [ <LPAREN_T> s1=identifier() <RPAREN_T> {s+="(";s+=s1;s+=")" ;}] { return s;}
Packit Service 50c9f2
| <CONFIGURATION_T> s=name() {s1="configuration ";return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString instantiation_list() : {QCString s;Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=identifier_list() { return s;}
Packit Service 50c9f2
| tok=<OTHER_T> {return tok->image.c_str();}
Packit Service 50c9f2
| tok=<ALL_T> {return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString integer() :  {Token *t;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  t=<INTEGER> {return t->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString integer_type_definition() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=range_constraint(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_declaration() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
LOOKAHEAD(5)
Packit Service 50c9f2
 s=interface_subprogram_declaration() { return s;}
Packit Service 50c9f2
Packit Service 50c9f2
|interface_package_declaration() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
 LOOKAHEAD(5)
Packit Service 50c9f2
 s=interface_variable_declaration() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(5)
Packit Service 50c9f2
interface_file_declaration() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(subprogram_declaration())
Packit Service 50c9f2
subprogram_declaration() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
 s=object_class() s1=identifier()
Packit Service 50c9f2
 {
Packit Service 50c9f2
 if (parse_sec==GEN_SEC)
Packit Service 50c9f2
    
Packit Service 50c9f2
    addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,s1.data(),0,Public);
Packit Service 50c9f2
    return s;
Packit Service 50c9f2
    }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_element() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=interface_declaration(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_file_declaration() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<FILE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
Packit Service 50c9f2
{
Packit Service 50c9f2
   addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
Packit Service 50c9f2
   return " file "+s+":"+s1;
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_list() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=interface_element() (LOOKAHEAD(1) <SEMI_T> s1=interface_element(){s2+=";";s2+=s1;})* { return s+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_variable_declaration() :  {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[( tok=<VARIABLE_T> | tok=<SIGNAL_T> | tok=<CONSTANT_T>|tok=<SHARED_T>) ]
Packit Service 50c9f2
  s=identifier_list() <COLON_T> [ s1=mode() ]
Packit Service 50c9f2
  s2=subtype_indication()  [ tok1=<BUS_T> ] [ tok2=<VARASSIGN_T> s4=expression() ]
Packit Service 50c9f2
{
Packit Service 50c9f2
                    if(tok)
Packit Service 50c9f2
                    s5=tok->image.c_str();
Packit Service 50c9f2
Packit Service 50c9f2
                    if(tok1)
Packit Service 50c9f2
                     s3=tok1->image.data();
Packit Service 50c9f2
Packit Service 50c9f2
                    if(tok2)
Packit Service 50c9f2
                     s3+=":=";
Packit Service 50c9f2
Packit Service 50c9f2
                    QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
Packit Service 50c9f2
                    if (currP!=VhdlDocGen::COMPONENT)
Packit Service 50c9f2
                    {
Packit Service 50c9f2
                      if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
Packit Service 50c9f2
                      {
Packit Service 50c9f2
                        addProto(s5.data(),s.data(),s1.data(),s2.data(),s3.data(),s4.data());
Packit Service 50c9f2
                      }
Packit Service 50c9f2
                      else
Packit Service 50c9f2
                      {
Packit Service 50c9f2
                        QCString i=s2+s3+s4;
Packit Service 50c9f2
                        if (currP==VhdlDocGen::GENERIC && param_sec==0)
Packit Service 50c9f2
                          addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public);
Packit Service 50c9f2
                        else if(parse_sec != GEN_SEC)
Packit Service 50c9f2
                          addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public);
Packit Service 50c9f2
                      }
Packit Service 50c9f2
                      //   fprintf(stderr,"\n\n <<port  %s  >>\n",$$.data());
Packit Service 50c9f2
                    } // if component
Packit Service 50c9f2
              return it;
Packit Service 50c9f2
            }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString iteration_scheme() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<WHILE_T> s=condition()
Packit Service 50c9f2
{
Packit Service 50c9f2
   s.prepend("while ");
Packit Service 50c9f2
   FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),lab.data());
Packit Service 50c9f2
   lab="";
Packit Service 50c9f2
  return s;
Packit Service 50c9f2
}
Packit Service 50c9f2
| <FOR_T> s=parameter_specification()
Packit Service 50c9f2
{
Packit Service 50c9f2
    QCString q=lab+" for "+s;
Packit Service 50c9f2
    FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
Packit Service 50c9f2
    lab="";
Packit Service 50c9f2
    return q;
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString label() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=identifier() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString library_clause() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (<LIBRARY_T> s=identifier_list() <SEMI_T>
Packit Service 50c9f2
 )
Packit Service 50c9f2
 {
Packit Service 50c9f2
               if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) )
Packit Service 50c9f2
                   {
Packit Service 50c9f2
                           addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public);
Packit Service 50c9f2
                   }
Packit Service 50c9f2
                   QCString s1="library "+s;
Packit Service 50c9f2
                   return s1;
Packit Service 50c9f2
 }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString library_unit() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
LOOKAHEAD(2)
Packit Service 50c9f2
primary_unit() {  return s; }
Packit Service 50c9f2
|  secondary_unit() {  return s; }
Packit Service 50c9f2
|  context_declaration()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString literal() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
 LOOKAHEAD(bit_string_literal())
Packit Service 50c9f2
s=bit_string_literal() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
 LOOKAHEAD(numeric_literal())
Packit Service 50c9f2
 s=numeric_literal() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
Packit Service 50c9f2
LOOKAHEAD(enumeration_literal())
Packit Service 50c9f2
s=enumeration_literal() { return s;}
Packit Service 50c9f2
| s=string_literal() { return s;}
Packit Service 50c9f2
| <NULL_T> {return "null";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString logical_operator() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=logop() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString loop_statement() :  {QCString s,s1,s2,s3;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() <COLON_T> {s+=":";} ]
Packit Service 50c9f2
    [ s1=iteration_scheme()  ]
Packit Service 50c9f2
      {
Packit Service 50c9f2
       if(s1.isEmpty())
Packit Service 50c9f2
        FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite");
Packit Service 50c9f2
       }
Packit Service 50c9f2
      <LOOP_T>
Packit Service 50c9f2
        s2=sequence_of_statement()
Packit Service 50c9f2
        <END_T> <LOOP_T> [ s3=identifier() ] <SEMI_T>
Packit Service 50c9f2
        {
Packit Service 50c9f2
         QCString q = s+" loop "+s2+" end loop" +s3;
Packit Service 50c9f2
         QCString endLoop="end loop" + s3;
Packit Service 50c9f2
         FlowChart::moveToPrevLevel();
Packit Service 50c9f2
         FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
Packit Service 50c9f2
        return q;
Packit Service 50c9f2
        }
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString miscellaneous_operator():{Token *t=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <DOUBLEMULT_T> {return "**";}
Packit Service 50c9f2
  | <ABS_T>  {return "abs";}
Packit Service 50c9f2
  | <NOT_T> {return "not";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString mode() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
tok=<IN_T> { return "in"; }
Packit Service 50c9f2
| tok=<OUT_T> { return "out"; }
Packit Service 50c9f2
| tok=<INOUT_T> { return "inout"; }
Packit Service 50c9f2
| tok=<BUFFER_T> { return "buffer"; }
Packit Service 50c9f2
| tok=<LINKAGE_T> { return "linkage"; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString multiplying_operation() : {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
tok=<MULT_T>      { return tok->image.c_str(); }
Packit Service 50c9f2
| tok=<SLASH_T>  { return tok->image.c_str(); }
Packit Service 50c9f2
| tok=<MOD_T>     { return tok->image.c_str(); }
Packit Service 50c9f2
| tok=<REM_T>     { return tok->image.c_str(); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
 QCString name() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (
Packit Service 50c9f2
   s=operator_symbol()
Packit Service 50c9f2
   | s=identifier()| s=external_name()
Packit Service 50c9f2
  )
Packit Service 50c9f2
 [LOOKAHEAD(name_ext1()) s1=name_ext1(){ s+=s1;}] {  return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString name_ext1() : {QCString s,s1,s2;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
   s=name_ext() (LOOKAHEAD(name_ext()) s1=name_ext(){s+=s1;})* { return s;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
 QCString name_ext() : {QCString s,s1,s2;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
Packit Service 50c9f2
  (
Packit Service 50c9f2
 LOOKAHEAD(<DOT_T> suffix())
Packit Service 50c9f2
 <DOT_T> s1=suffix(){s+=".";s+=s1;}
Packit Service 50c9f2
|
Packit Service 50c9f2
  LOOKAHEAD(test_att_name())
Packit Service 50c9f2
   s1=test_att_name() { s+=s1;}
Packit Service 50c9f2
 |
Packit Service 50c9f2
 LOOKAHEAD( <LPAREN_T> discrete_range() <RPAREN_T>)
Packit Service 50c9f2
  <LPAREN_T> s1=discrete_range() <RPAREN_T> {s+="(";s+=s1;s+=")";}
Packit Service 50c9f2
   |
Packit Service 50c9f2
  LOOKAHEAD( "(" expression() ("," expression() )* ")" )
Packit Service 50c9f2
  <LPAREN_T> s1=expression() {s+="(";s+=s1;} (LOOKAHEAD(1) <COMMA_T>  s1=expression(){s+=",";s+=s1;})*  <RPAREN_T> { s+=")";}
Packit Service 50c9f2
Packit Service 50c9f2
 )
Packit Service 50c9f2
 {return s;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
 QCString test_att_name() : {QCString s,s1;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
  [ LOOKAHEAD(<LBRACKET_T>) s1=signature() {s=s1;}]
Packit Service 50c9f2
  <APOSTROPHE_T> s1=attribute_designator() {s+="'";s+=s1;}
Packit Service 50c9f2
  [LOOKAHEAD(1) <LPAREN_T> s1=expression() <RPAREN_T> {s+="(";s+=s1;s+=")";}]
Packit Service 50c9f2
   { return s;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
 QCString indexed_name() : {QCString s,s1,s2;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
   s2=identifier() <LPAREN_T> s1=expression(){s=s2+"("+s1;} (<COMMA_T> s1=expression(){s+=",";s+=s1;})* <RPAREN_T> {return s+")";}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString next_statement() :  {QCString s,s1,s2;Token *t=0;Token *t1=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[LOOKAHEAD(1) s=identifier() t=<COLON_T> ] <NEXT_T> [ s1=identifier() ]
Packit Service 50c9f2
[LOOKAHEAD(1)  t1=<WHEN_T> s2=condition() ] <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  if(t) s+=":";
Packit Service 50c9f2
   FlowChart::addFlowChart(FlowChart::NEXT_NO,"next ",s2.data(),s1.data());
Packit Service 50c9f2
    lab.resize(0);
Packit Service 50c9f2
  if(t1) s2.prepend("when ");
Packit Service 50c9f2
  return s+s1+s2+";";
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString null_statement() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() <COLON_T> {s+=":";}] <NULL_T> <SEMI_T>{return s+="null";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString numeric_literal() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
 LOOKAHEAD(physical_literal())
Packit Service 50c9f2
  s=physical_literal(){ return s;}
Packit Service 50c9f2
 | s=abstract_literal() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString object_class() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<CONSTANT_T>          { return "constant"; }
Packit Service 50c9f2
|<SIGNAL_T>            { return "signal"; }
Packit Service 50c9f2
|<VARIABLE_T>          { return "variable"; }
Packit Service 50c9f2
|<SHARED_T> <VARIABLE_T> { return "shared variable"; }
Packit Service 50c9f2
|<FILE_T>              { return "file"; }
Packit Service 50c9f2
|<TYPE_T>              { return "type"; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString operator_symbol() :  {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
tok=<STRINGLITERAL> {return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void options() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  [ <GUARDED_T> ] [ delay_mechanism() ]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void package_body() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<PACKAGE_T> <BODY_T> s=name() <IS_T>
Packit Service 50c9f2
 {
Packit Service 50c9f2
                        lastCompound=current;
Packit Service 50c9f2
                        s.prepend("_");
Packit Service 50c9f2
                        addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
Packit Service 50c9f2
                      }
Packit Service 50c9f2
 package_body_declarative_part()
Packit Service 50c9f2
Packit Service 50c9f2
<END_T> [<PACKAGE_T> <BODY_T>  ] [ name() ] <SEMI_T> { lastCompound=0; genLabels.resize(0); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void package_body_declarative_item() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
subprogram_declaration()
Packit Service 50c9f2
//| subprogram_body()
Packit Service 50c9f2
| type_declaration()
Packit Service 50c9f2
| subtype_declaration()
Packit Service 50c9f2
| constant_declaration()
Packit Service 50c9f2
| variable_declaration()
Packit Service 50c9f2
| file_declaration()
Packit Service 50c9f2
| alias_declaration()
Packit Service 50c9f2
| use_clause()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
group_template_declaration()
Packit Service 50c9f2
| group_declaration()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void package_body_declarative_part() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
(package_body_declarative_item() )*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void package_declaration():  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
 <PACKAGE_T> s=identifier() <IS_T>
Packit Service 50c9f2
                          {
Packit Service 50c9f2
                          lastCompound=current;
Packit Service 50c9f2
                          Entry *clone=new Entry(*current);
Packit Service 50c9f2
                          clone->section=Entry::NAMESPACE_SEC;
Packit Service 50c9f2
                          clone->spec=VhdlDocGen::PACKAGE;
Packit Service 50c9f2
                          clone->name=s;
Packit Service 50c9f2
                          clone->startLine=getLine(PACKAGE_T);
Packit Service 50c9f2
                          clone->bodyLine=getLine(PACKAGE_T);
Packit Service 50c9f2
                          clone->protection=Package;
Packit Service 50c9f2
                          current_root->addSubEntry(clone);
Packit Service 50c9f2
                          addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
Packit Service 50c9f2
                          }
Packit Service 50c9f2
    package_declarative_part()
Packit Service 50c9f2
<END_T> [ <PACKAGE_T>] [ name() ] <SEMI_T>
Packit Service 50c9f2
{ lastEntity=0;lastCompound=0; genLabels.resize(0); }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void geninter():{}
Packit Service 50c9f2
{
Packit Service 50c9f2
    [gen_interface_list() <SEMI_T> [gen_assoc_list() <SEMI_T>]]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void package_declarative_item() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
//LOOKAHEAD(3)
Packit Service 50c9f2
//interface_subprogram_declaration()
Packit Service 50c9f2
subprogram_declaration()
Packit Service 50c9f2
| type_declaration()
Packit Service 50c9f2
| subtype_declaration()
Packit Service 50c9f2
| constant_declaration()
Packit Service 50c9f2
| signal_declaration()
Packit Service 50c9f2
| variable_declaration()
Packit Service 50c9f2
| file_declaration()
Packit Service 50c9f2
| alias_declaration()
Packit Service 50c9f2
| component_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(attribute_declaration())
Packit Service 50c9f2
 attribute_declaration()
Packit Service 50c9f2
| attribute_specification()
Packit Service 50c9f2
| disconnection_specification()
Packit Service 50c9f2
| use_clause()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
 group_template_declaration()
Packit Service 50c9f2
| group_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
 LOOKAHEAD(5)
Packit Service 50c9f2
 package_instantiation_declaration()
Packit Service 50c9f2
|package_declaration()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void package_declarative_part() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (package_declarative_item())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString parameter_specification() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=identifier() <IN_T> s1=discrete_range(){ return s+" in "+s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString physical_literal() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 [LOOKAHEAD(abstract_literal()) s=abstract_literal()] s1=name(){s+=" ";s+=s1;s.prepend(" "); return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString physical_type_definition() : {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
        <UNITS_T>
Packit Service 50c9f2
            s=identifier()<SEMI_T> { addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public);}
Packit Service 50c9f2
            (
Packit Service 50c9f2
             s1=secondary_unit_declaration()
Packit Service 50c9f2
            )*
Packit Service 50c9f2
            <END_T> <UNITS_T>  [name()]
Packit Service 50c9f2
            { return s+"%";}
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void port_clause() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
   <PORT_T> <LPAREN_T>  port_list()<RPAREN_T>  <SEMI_T>{ currP=0; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString port_list() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=interface_list(){return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void port_map_aspect() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <PORT_T> <MAP_T> <LPAREN_T> association_list() <RPAREN_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString primary() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
LOOKAHEAD(function_call())
Packit Service 50c9f2
s=function_call() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(<LPAREN_T> expression() <RPAREN_T>)
Packit Service 50c9f2
 <LPAREN_T> s1=expression() <RPAREN_T>{ s="("+s1+")"; return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(qualified_expression())
Packit Service 50c9f2
s=qualified_expression() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(type_conversion())
Packit Service 50c9f2
s=type_conversion() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(literal())
Packit Service 50c9f2
s=literal() { s.prepend(" ");return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(name())
Packit Service 50c9f2
s=name() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
allocator() { return "";}
Packit Service 50c9f2
|
Packit Service 50c9f2
s=aggregate() { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
void primary_unit() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
entity_declaration()
Packit Service 50c9f2
| configuration_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(package_instantiation_declaration())
Packit Service 50c9f2
package_instantiation_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(4)
Packit Service 50c9f2
 interface_package_declaration()
Packit Service 50c9f2
| package_declaration()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString procedure_call() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=name()  [ <LPAREN_T> s1=actual_parameter_part() <RPAREN_T>{ s1.prepend("("); s1.append(")");}]
Packit Service 50c9f2
{ return s+s1;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString procedure_call_statement() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[LOOKAHEAD(2) s=identifier() <COLON_T> { s+=":"; }] s1=procedure_call() <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  return s+s1+";";
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString process_declarative_item() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
subprogram_declaration() { return "";}
Packit Service 50c9f2
//| subprogram_body()
Packit Service 50c9f2
| s=type_declaration() { return s;}
Packit Service 50c9f2
| s=subtype_declaration() { return s;}
Packit Service 50c9f2
| s=constant_declaration() { return s;}
Packit Service 50c9f2
| s=variable_declaration() { return s;}
Packit Service 50c9f2
| s=file_declaration() { return s;}
Packit Service 50c9f2
| s=alias_declaration() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
s=attribute_declaration() { return s;}
Packit Service 50c9f2
| s=attribute_specification() { return s;}
Packit Service 50c9f2
| s=use_clause() { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
s=group_template_declaration()  { return s;}
Packit Service 50c9f2
| s=group_declaration() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString process_declarative_part() :{QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 ( s1=process_declarative_item(){s+=s1;} )* { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void process_statement() : {QCString s,s1,s2;Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() <COLON_T> ]
Packit Service 50c9f2
[ <POSTPONED_T> ]
Packit Service 50c9f2
 {
Packit Service 50c9f2
               currP=VhdlDocGen::PROCESS;
Packit Service 50c9f2
               current->startLine=getLine();
Packit Service 50c9f2
               current->bodyLine=getLine();
Packit Service 50c9f2
  }
Packit Service 50c9f2
 <PROCESS_T>
Packit Service 50c9f2
 //try{
Packit Service 50c9f2
 [ <LPAREN_T> (tok=<ALL_T> | s1=sensitivity_list()) <RPAREN_T> ] [ <IS_T> ]
Packit Service 50c9f2
        s2=process_declarative_part()
Packit Service 50c9f2
             {
Packit Service 50c9f2
              if (s2.data())
Packit Service 50c9f2
                  FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s2.data(),0);
Packit Service 50c9f2
                FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
Packit Service 50c9f2
               }
Packit Service 50c9f2
        <BEGIN_T>
Packit Service 50c9f2
        process_statement_part()
Packit Service 50c9f2
        <END_T> [ <POSTPONED_T> ]
Packit Service 50c9f2
         // }catch(...){error_skipto(PROCESS_T);}
Packit Service 50c9f2
        <PROCESS_T> [ identifier() ] <SEMI_T>
Packit Service 50c9f2
 {
Packit Service 50c9f2
  if(s.isEmpty())
Packit Service 50c9f2
   currName=VhdlDocGen::getProcessNumber();
Packit Service 50c9f2
   else
Packit Service 50c9f2
   currName=s;
Packit Service 50c9f2
Packit Service 50c9f2
   current->name=currName;
Packit Service 50c9f2
   tempEntry=current;
Packit Service 50c9f2
   current->endBodyLine=getLine();
Packit Service 50c9f2
   currP=0;
Packit Service 50c9f2
 if(tok)
Packit Service 50c9f2
   s1=tok->image.data();
Packit Service 50c9f2
  createFunction(currName,VhdlDocGen::PROCESS,s1.data());
Packit Service 50c9f2
  createFlow();
Packit Service 50c9f2
   currName="";
Packit Service 50c9f2
   newEntry();
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void process_statement_part() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (sequential_statement())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString qualified_expression() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s1=identifier() <APOSTROPHE_T> {s=s1+"'";}
Packit Service 50c9f2
  (
Packit Service 50c9f2
    LOOKAHEAD(aggregate())
Packit Service 50c9f2
    s1=aggregate(){s+=s1;}
Packit Service 50c9f2
    | <LPAREN_T> s1=expression() <RPAREN_T>{s+="(";s+=s1;s+=")";}
Packit Service 50c9f2
 )
Packit Service 50c9f2
 {return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString range() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   LOOKAHEAD( simple_expression() direction() simple_expression())
Packit Service 50c9f2
   s=simple_expression() s1=direction() s2=simple_expression(){return s+" "+s1+" "+s2;}
Packit Service 50c9f2
  |
Packit Service 50c9f2
 LOOKAHEAD(attribute_name())
Packit Service 50c9f2
  s=attribute_name(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString range_constraint() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<RANGE_T> s=range(){return " range "+s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void record_type_definition() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
    <RECORD_T>
Packit Service 50c9f2
     //  try{
Packit Service 50c9f2
       (element_declaration())+
Packit Service 50c9f2
            //    }catch(...){error_skipto(END_T);}
Packit Service 50c9f2
       <END_T>
Packit Service 50c9f2
       <RECORD_T> [ name()]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString relation() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=shift_expression() [LOOKAHEAD(1) s1=relation_operator() s2=shift_expression() ] {return s+s1+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString relation_operator() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <LT_T> {return "<";}
Packit Service 50c9f2
 |<GT_T> {return ">";}
Packit Service 50c9f2
 |<EQU_T> {return "=";}
Packit Service 50c9f2
 |<GREATERTHAN_T> {return ">=";}
Packit Service 50c9f2
 |<LESSTHAN_T> {return "<=";}
Packit Service 50c9f2
 |<NOTEQU_T> {return "/=";}
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString report_statement() :  {Token *t=0;Token *t1=0;QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() t=<COLON_T> ]
Packit Service 50c9f2
    <REPORT_T> s1=expression()
Packit Service 50c9f2
        [ t1=<SEVERITY_T> s2=expression() ] <SEMI_T>
Packit Service 50c9f2
        {
Packit Service 50c9f2
        if(t) s.append(":");
Packit Service 50c9f2
        s1.prepend(" report ");
Packit Service 50c9f2
        if(t1) s2.prepend(" severity ");
Packit Service 50c9f2
        return s+s1+s2+";";
Packit Service 50c9f2
        }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString return_statement() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() <COLON_T> { s+=":";}] <RETURN_T> [ s1=expression() ] <SEMI_T>
Packit Service 50c9f2
{ return s+" return "+s1+";";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString scalar_type_definition() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
s=enumeration_type_definition(){ return s;}
Packit Service 50c9f2
| s=range_constraint() [LOOKAHEAD( physical_type_definition()) s1=physical_type_definition()] { return s+" "+s1+"%";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void secondary_unit() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
architecture_body()
Packit Service 50c9f2
| package_body()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString secondary_unit_declaration() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=identifier() <EQU_T> s1=physical_literal() <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  //printf("\n %s %s [%d]",s.data(),s1.data(),getLine());
Packit Service 50c9f2
  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public);
Packit Service 50c9f2
Packit Service 50c9f2
  return s+"="+s1; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString selected_name() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=identifier() <DOT_T> s1=suffix(){ return s+"."+s1;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void selected_signal_assignment() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <WITH_T> expression() <SELECT_T>
Packit Service 50c9f2
Packit Service 50c9f2
    target() < LESSTHAN_T> options() selected_waveforms() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void selected_waveforms() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 waveform() <WHEN_T> choices()(<COMMA_T> waveform() <WHEN_T> choices())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString sensitivity_clause() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <ON_T> s=sensitivity_list()
Packit Service 50c9f2
 {
Packit Service 50c9f2
  s.prepend(" on ");
Packit Service 50c9f2
  return s;
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString sensitivity_list() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=name() (<COMMA_T> s1=name(){s+=",";s+=s1;} )* { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString sequence_of_statement() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 ( LOOKAHEAD(3) s1=sequential_statement() {s+=s1;} )* { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString sequential_statement() :{QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
    LOOKAHEAD( [ identifier() ":" ] target() "<=")
Packit Service 50c9f2
    s=signal_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    s=assertion_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
     LOOKAHEAD(3)
Packit Service 50c9f2
    s=report_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    s=wait_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(  [ identifier() ":" ] target() ":=" )
Packit Service 50c9f2
    s=variable_assignment_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    s=procedure_call_statement(){ FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s; }
Packit Service 50c9f2
    |
Packit Service 50c9f2
     LOOKAHEAD(3)
Packit Service 50c9f2
    if_statement(){return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
     LOOKAHEAD(3)
Packit Service 50c9f2
    case_statement(){return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    loop_statement(){return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    s=next_statement() {return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    s=exit_statement(){return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    LOOKAHEAD(3)
Packit Service 50c9f2
    s=return_statement(){FlowChart::addFlowChart(FlowChart::RETURN_NO,s.data(),0);return s;}
Packit Service 50c9f2
    |
Packit Service 50c9f2
    s=null_statement(){FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString shift_expression() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=simple_expression() [ s1=shift_operator() s2=simple_expression() ] { return s+s1+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
QCString shift_operator() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <SLL_T> { return "sll";}
Packit Service 50c9f2
  | <SRL_T> { return "srl";}
Packit Service 50c9f2
  | <SLA_T> { return "sla";}
Packit Service 50c9f2
  | <SRA_T> { return "sra";}
Packit Service 50c9f2
  | <ROL_T> { return "rol";}
Packit Service 50c9f2
  | <ROR_T> { return "ror";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString sign() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <PLUS_T> { return "+";}
Packit Service 50c9f2
 | <MINUS_T> { return "-";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString signal_assignment_statement() : {QCString s,s1,s2,s3;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
  LOOKAHEAD(conditional_signal_assignment_wave())
Packit Service 50c9f2
  conditional_signal_assignment_wave(){ return ""; }
Packit Service 50c9f2
|
Packit Service 50c9f2
  LOOKAHEAD(selected_signal_assignment_wave())
Packit Service 50c9f2
  selected_signal_assignment_wave() { return ""; }
Packit Service 50c9f2
  |
Packit Service 50c9f2
  [LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";} ]
Packit Service 50c9f2
s1=target() <LESSTHAN_T>
Packit Service 50c9f2
[ s2=delay_mechanism() ]
Packit Service 50c9f2
s3=waveform() <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  return s+s1+"<="+s2+s3+";";
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void semi() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void signal_declaration() :  { Token* tok=0;QCString s,s1,s2,s3,s4;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<SIGNAL_T> s=identifier_list() <COLON_T> s1=subtype_indication() [ s2=signal_kind() ] [ tok=<VARASSIGN_T> s3=expression() ] <SEMI_T>
Packit Service 50c9f2
     {
Packit Service 50c9f2
     if(tok)
Packit Service 50c9f2
      s3.prepend(":=");
Packit Service 50c9f2
     s4=s1+s2+s3;
Packit Service 50c9f2
     addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
Packit Service 50c9f2
     }
Packit Service 50c9f2
}
Packit Service 50c9f2
QCString signal_kind() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <REGISTER_T> { return "register";}
Packit Service 50c9f2
  | <BUS_T>  { return "bus";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString signal_list() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=name() (<COMMA_T>  s1=name() { s+=",";s+=s1;})*
Packit Service 50c9f2
| <OTHER_T> { return "other";}
Packit Service 50c9f2
| <ALL_T> { return "all";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString signature() : {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<LBRACKET_T>
Packit Service 50c9f2
 [ s=name()  (<COMMA_T> s1=name() {s+=",";s+=s1; })* ]
Packit Service 50c9f2
 [ <RETURN_T> s1=name() {s+="return ";s+=s1;}]
Packit Service 50c9f2
  <RBRACKET_T>
Packit Service 50c9f2
  { s1="["+s+"]";return s1;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString simple_expression():  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=sign() ] s1=term() {s+=s1;} ( LOOKAHEAD(adding_operator() term()) s1=adding_operator() s2=term() {s+=s1;s+=s2;})* { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void simple_name() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
name()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString slice_name() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=identifier() <LPAREN_T> s1=discrete_range() <RPAREN_T> {return s+"("+s1+")";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString string_literal() : {Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
tok=<STRINGLITERAL> {return tok->image.c_str();}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
 void subprogram_body() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
//subprogram_specification()
Packit Service 50c9f2
<IS_T>
Packit Service 50c9f2
 //try{
Packit Service 50c9f2
 s=subprogram_declarative_part()
Packit Service 50c9f2
   {
Packit Service 50c9f2
      if (s.data())
Packit Service 50c9f2
      {
Packit Service 50c9f2
        FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s,0);
Packit Service 50c9f2
      }
Packit Service 50c9f2
      FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
Packit Service 50c9f2
    }
Packit Service 50c9f2
 // }catch(...){error_skipto(BEGIN_T);}
Packit Service 50c9f2
<BEGIN_T>
Packit Service 50c9f2
subprogram_statement_part()
Packit Service 50c9f2
<END_T> [ subprogram_kind() ] [ designator() ] <SEMI_T>
Packit Service 50c9f2
 {
Packit Service 50c9f2
      tempEntry->endBodyLine=getLine(END_T);
Packit Service 50c9f2
      createFlow();
Packit Service 50c9f2
      currP=0;
Packit Service 50c9f2
    }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void subprogram_declaration() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
LOOKAHEAD(subprogram_instantiation_declaration())
Packit Service 50c9f2
subprogram_instantiation_declaration()
Packit Service 50c9f2
|
Packit Service 50c9f2
subprogram_specification()subprogram_1(){currP=0;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void subprogram_1() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
 subprogram_body()
Packit Service 50c9f2
 | <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString subprogram_declarative_item() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
subprogram_declaration(){ return "";}
Packit Service 50c9f2
|s=type_declaration(){ return s;}
Packit Service 50c9f2
 | subprogram_body(){ return "";}
Packit Service 50c9f2
| s=subtype_declaration(){ return s;}
Packit Service 50c9f2
| s=constant_declaration(){ return s;}
Packit Service 50c9f2
| s=variable_declaration(){ return s;}
Packit Service 50c9f2
| s=file_declaration(){ return s;}
Packit Service 50c9f2
| s=alias_declaration(){ return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(attribute_declaration())
Packit Service 50c9f2
s=attribute_declaration(){ return s;}
Packit Service 50c9f2
| s=attribute_specification(){ return s;}
Packit Service 50c9f2
| s=use_clause(){ return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
s=group_template_declaration(){ return s;}
Packit Service 50c9f2
| s=group_declaration() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString subprogram_declarative_part() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (s1=subprogram_declarative_item(){s+=s1;})* { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void subprogram_kind() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <FUNCTION_T>
Packit Service 50c9f2
 |<PROCEDURE_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void subprogram_specification() : {QCString s;Token *tok=0;Token *t;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <PROCEDURE_T> s=designator()
Packit Service 50c9f2
 {
Packit Service 50c9f2
              currP=VhdlDocGen::PROCEDURE;
Packit Service 50c9f2
              createFunction(s.data(),currP,0);
Packit Service 50c9f2
              tempEntry=current;
Packit Service 50c9f2
               current->startLine=getLine(PROCEDURE_T);
Packit Service 50c9f2
               current->bodyLine=getLine(PROCEDURE_T);
Packit Service 50c9f2
Packit Service 50c9f2
              } [LOOKAHEAD(1) <LPAREN_T> { param_sec=PARAM_SEC; } interface_list() { param_sec=0; }<RPAREN_T> ]
Packit Service 50c9f2
             [LOOKAHEAD(2) gen_interface_list()]
Packit Service 50c9f2
             [ LOOKAHEAD(2) gen_assoc_list()]
Packit Service 50c9f2
             param()
Packit Service 50c9f2
              {  newEntry(); }
Packit Service 50c9f2
|
Packit Service 50c9f2
 [ (tok=<PURE_T> | tok=<IMPURE_T>) ] t=<FUNCTION_T> s=designator()
Packit Service 50c9f2
  {
Packit Service 50c9f2
     currP=VhdlDocGen::FUNCTION;
Packit Service 50c9f2
     if(tok)
Packit Service 50c9f2
     createFunction(tok->image.c_str(),currP,s.data());
Packit Service 50c9f2
     else
Packit Service 50c9f2
     createFunction(0,currP,s.data());
Packit Service 50c9f2
      tempEntry=current;
Packit Service 50c9f2
      current->startLine=getLine(FUNCTION_T);
Packit Service 50c9f2
      current->bodyLine=getLine(FUNCTION_T);
Packit Service 50c9f2
  }
Packit Service 50c9f2
 [{ param_sec=PARAM_SEC; } <LPAREN_T> formal_parameter_list() <RPAREN_T> { param_sec=0; }]
Packit Service 50c9f2
    <RETURN_T> s=type_mark()
Packit Service 50c9f2
             {
Packit Service 50c9f2
                tempEntry=current;
Packit Service 50c9f2
                current->type=s;
Packit Service 50c9f2
                newEntry();
Packit Service 50c9f2
              }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void subprogram_statement_part() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (sequential_statement())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString subtype_declaration() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<SUBTYPE_T> s=identifier() <IS_T> s1=subtype_indication() <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
  addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SUBTYPE,0,s1.data(),Public);
Packit Service 50c9f2
  return " subtype "+s+" is "+s1+";";
Packit Service 50c9f2
  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString subtype_indication() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=name()
Packit Service 50c9f2
 [LOOKAHEAD (name()) s1=name()] [LOOKAHEAD(constraint() ) s2=constraint()]
Packit Service 50c9f2
 {return s+" "+s1+" "+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString suffix() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
LOOKAHEAD(name())
Packit Service 50c9f2
s=name() { return s;}
Packit Service 50c9f2
| s=character_literal() { return s;}
Packit Service 50c9f2
| s=operator_symbol(){ return s;}
Packit Service 50c9f2
| <ALL_T> {return " all ";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString target() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=name(){ return s;}
Packit Service 50c9f2
| s=aggregate() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString term() : {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=factor() ( LOOKAHEAD(2) s1=multiplying_operation() s2=factor(){s+=s1;s+=s2;} )* { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString timeout_clause() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<FOR_T>  s=expression()
Packit Service 50c9f2
{
Packit Service 50c9f2
  return " for "+s;
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString type_conversion() : {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=name() <LPAREN_T> s1=expression() <RPAREN_T> { return s+"("+s1+")";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString type_declaration() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
LOOKAHEAD(3)
Packit Service 50c9f2
s=full_type_declaration(){ return s;}
Packit Service 50c9f2
| s=incomplete_type_declaration(){ return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString type_definition() :  {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
//try{
Packit Service 50c9f2
s=scalar_type_definition(){ return s;}
Packit Service 50c9f2
| s=composite_type_definition(){ return s;}
Packit Service 50c9f2
| s=access_type_definition(){ return s;}
Packit Service 50c9f2
| s=file_type_definition(){ return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
 LOOKAHEAD(2)
Packit Service 50c9f2
 protected_type_body()            { return ""; }
Packit Service 50c9f2
| protected_type_declaration()     { return ""; }
Packit Service 50c9f2
//}catch(...){error_skipto(SEMI_T); return "";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString type_mark() : {QCString s; }
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=name() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString unconstraint_array_definition() :  {QCString s,s1,s2,s3;}
Packit Service 50c9f2
{
Packit Service 50c9f2
<ARRAY_T> <LPAREN_T> s=index_subtype_definition() ( <COMMA_T> s1=index_subtype_definition(){s3+=",";s3+=s1;})* <RPAREN_T>
Packit Service 50c9f2
 <OF_T> s2=subtype_indication() {return "array("+s+s3+") of "+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
 QCString use_clause() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <USE_T> s=selected_name()(<COMMA_T> s1=selected_name(){s+=",";s+=s1;})*   <SEMI_T>
Packit Service 50c9f2
  {
Packit Service 50c9f2
                   QStringList ql1=QStringList::split(",",s,FALSE);
Packit Service 50c9f2
                   for (uint j=0;j
Packit Service 50c9f2
                   {
Packit Service 50c9f2
                    QStringList ql=QStringList::split(".",ql1[j],FALSE);
Packit Service 50c9f2
                    QCString it=ql[1].utf8();
Packit Service 50c9f2
                     if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) )
Packit Service 50c9f2
                     {
Packit Service 50c9f2
                       VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public);
Packit Service 50c9f2
                     }
Packit Service 50c9f2
                   }
Packit Service 50c9f2
                   s1="use "+s;
Packit Service 50c9f2
                   return s1;
Packit Service 50c9f2
   }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString variable_assignment_statement() :  {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[LOOKAHEAD(2) s=identifier() <COLON_T> {s+=":";}]
Packit Service 50c9f2
 s1=target() <VARASSIGN_T> s2=expression() <SEMI_T>
Packit Service 50c9f2
 {return s+s1+":="+s2+";";}
Packit Service 50c9f2
 |
Packit Service 50c9f2
 selected_variable_assignment() { return "";  }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString variable_declaration() :  {Token *tok=0;Token *t1=0;QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ tok=<SHARED_T> ] <VARIABLE_T> s=identifier_list() <COLON_T> s1=subtype_indication()
Packit Service 50c9f2
[ t1=<VARASSIGN_T> s2=expression() ] <SEMI_T>
Packit Service 50c9f2
Packit Service 50c9f2
{
Packit Service 50c9f2
    int spec;
Packit Service 50c9f2
    if(t1)
Packit Service 50c9f2
     s2.prepend(":=");
Packit Service 50c9f2
    QCString val=" variable "+s+":"+s1+s2+";";
Packit Service 50c9f2
    QCString it=s1;
Packit Service 50c9f2
    if(tok != 0)
Packit Service 50c9f2
    {
Packit Service 50c9f2
     it.prepend(" shared ");
Packit Service 50c9f2
     val.prepend(" shared");
Packit Service 50c9f2
     spec=VhdlDocGen::SHAREDVARIABLE;
Packit Service 50c9f2
     }
Packit Service 50c9f2
     else
Packit Service 50c9f2
     spec=VhdlDocGen::SHAREDVARIABLE;
Packit Service 50c9f2
Packit Service 50c9f2
    if(t1){
Packit Service 50c9f2
     it+=":=";
Packit Service 50c9f2
     it+=s2;
Packit Service 50c9f2
     }
Packit Service 50c9f2
    addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public);
Packit Service 50c9f2
    return val;
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString wait_statement() :  {QCString s,s1,s2,s3;Token *t=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ s=identifier() t=<COLON_T> ] <WAIT_T> [ s1=sensitivity_clause() ] [ s2=condition_clause() ] [ s3=timeout_clause() ] <SEMI_T>
Packit Service 50c9f2
{
Packit Service 50c9f2
  if(t) s.append(":");
Packit Service 50c9f2
  return s+" wait "+s1+s2+s3+";";
Packit Service 50c9f2
}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString waveform() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
s=waveform_element() (LOOKAHEAD(1) <COMMA_T> s1=waveform_element(){s+=","; s+=s1;})* { return s;}
Packit Service 50c9f2
|
Packit Service 50c9f2
<UNAFFECTED_T> { return " unaffected ";}
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString waveform_element() :  {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 s=expression() [ <AFTER_T> s1=expression(){ s1.prepend(" after ");} ]
Packit Service 50c9f2
 { return s+s1;}
Packit Service 50c9f2
//<NULL_T> [ <AFTER_T> expression() ]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
// -----------------------------------------------------------------
Packit Service 50c9f2
// VHDL 2002
Packit Service 50c9f2
// -----------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
QCString protected_type_body() :{ }
Packit Service 50c9f2
{
Packit Service 50c9f2
  // try{
Packit Service 50c9f2
   <PROTECTED_T> <BODY_T>
Packit Service 50c9f2
          protected_type_body_declarative_part()
Packit Service 50c9f2
Packit Service 50c9f2
    //}catch(...){error_skipto(END_T);}
Packit Service 50c9f2
    <END_T><PROTECTED_T> <BODY_T>   [identifier()]  {return "";}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void protected_type_body_declarative_item() :    { }
Packit Service 50c9f2
 {
Packit Service 50c9f2
    subprogram_declaration()
Packit Service 50c9f2
    | subprogram_body()
Packit Service 50c9f2
    | type_declaration()
Packit Service 50c9f2
    | subtype_declaration()
Packit Service 50c9f2
    | constant_declaration()
Packit Service 50c9f2
    | variable_declaration()
Packit Service 50c9f2
    | file_declaration()
Packit Service 50c9f2
    | alias_declaration()
Packit Service 50c9f2
    |
Packit Service 50c9f2
      LOOKAHEAD( attribute_declaration())
Packit Service 50c9f2
      attribute_declaration()
Packit Service 50c9f2
    | attribute_specification()
Packit Service 50c9f2
    | use_clause()
Packit Service 50c9f2
    | LOOKAHEAD(3)
Packit Service 50c9f2
      group_template_declaration()
Packit Service 50c9f2
    | group_declaration()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void protected_type_body_declarative_part() :{  }
Packit Service 50c9f2
{
Packit Service 50c9f2
    ( protected_type_body_declarative_item ())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString protected_type_declaration() : {  }
Packit Service 50c9f2
 {
Packit Service 50c9f2
   <PROTECTED_T>
Packit Service 50c9f2
        try{
Packit Service 50c9f2
          protected_type_declarative_part()
Packit Service 50c9f2
        }catch(...){error_skipto(END_T);}
Packit Service 50c9f2
       <END_T><PROTECTED_T> [ identifier() ] { return "";}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
void protected_type_declarative_item():    { }
Packit Service 50c9f2
{
Packit Service 50c9f2
    subprogram_specification()
Packit Service 50c9f2
    | attribute_specification()
Packit Service 50c9f2
    | use_clause()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void protected_type_declarative_part() :    {}
Packit Service 50c9f2
{
Packit Service 50c9f2
    (protected_type_declarative_item ()<SEMI_T>)*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
// -----------------------------------------------------------------
Packit Service 50c9f2
// VHDL 2008
Packit Service 50c9f2
// -----------------------------------------------------------------
Packit Service 50c9f2
Packit Service 50c9f2
QCString context_ref() : {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <CONTEXT_T>  s=identifier_list() <SEMI_T>
Packit Service 50c9f2
 {
Packit Service 50c9f2
  return "context "+s ;
Packit Service 50c9f2
 }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void context_declaration(): {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <CONTEXT_T> s=identifier() <IS_T> { parse_sec=CONTEXT_SEC; }  (s1=libustcont_stats())* <END_T> [ <CONTEXT_T> ][identifier()] <SEMI_T>
Packit Service 50c9f2
                        {
Packit Service 50c9f2
                          parse_sec=0;
Packit Service 50c9f2
                          addVhdlType(s.data(),getLine(LIBRARY_T),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",s1.data(),Public);
Packit Service 50c9f2
                        }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString libustcont_stats(): {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   s=use_clause()  { return s;}
Packit Service 50c9f2
   | s=library_clause() { return s;}
Packit Service 50c9f2
   | s=context_ref() { return s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
 void package_instantiation_declaration() : {QCString s,s1,s2;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
 <PACKAGE_T> s=identifier() <IS_T>  <NEW_T> s1=name() s2=signature() [gen_assoc_list()] <SEMI_T>
Packit Service 50c9f2
    {
Packit Service 50c9f2
      QCString q=" is new "+s1+s2;
Packit Service 50c9f2
      addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public);
Packit Service 50c9f2
    }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_package_declaration(): {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <PACKAGE_T> s=identifier() <IS_T> <NEW_T> s1=name() [gen_assoc_list()]
Packit Service 50c9f2
                        {
Packit Service 50c9f2
                          current->name=s;
Packit Service 50c9f2
                            return "package "+s+" is new "+s1;
Packit Service 50c9f2
                         }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString subprogram_instantiation_declaration():{QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <FUNCTION_T>  s=identifier() <IS_T> <NEW_T> s1=name()  s2=signature() [gen_assoc_list()] <SEMI_T>
Packit Service 50c9f2
    {
Packit Service 50c9f2
     QCString q= " is new "+s1+s2;
Packit Service 50c9f2
      addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public);
Packit Service 50c9f2
    return q;
Packit Service 50c9f2
    }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
void gen_assoc_list():{}
Packit Service 50c9f2
{
Packit Service 50c9f2
   <GENERIC_T> <MAP_T> <LPAREN_T>  association_list()<RPAREN_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void gen_interface_list() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
   <GENERIC_T><LPAREN_T>
Packit Service 50c9f2
                        {
Packit Service 50c9f2
                          //int u=s_str.iLine;
Packit Service 50c9f2
                          parse_sec=GEN_SEC;
Packit Service 50c9f2
                        }
Packit Service 50c9f2
                        interface_list()
Packit Service 50c9f2
                        {
Packit Service 50c9f2
                        //  QCString vo=$3;
Packit Service 50c9f2
                          parse_sec=0;
Packit Service 50c9f2
                        }
Packit Service 50c9f2
                        <RPAREN_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void case_scheme (): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <CASE_T> expression() <GENERATE_T> when_stats() [LOOKAHEAD(3) ttend()]  <END_T>
Packit Service 50c9f2
 <GENERATE_T> generate_statement_body() <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void when_stats() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (
Packit Service 50c9f2
   <WHEN_T> [LOOKAHEAD(2) label() <COLON_T>] choices() <ARROW_T> generate_statement_body()
Packit Service 50c9f2
   )+
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void ttend(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <END_T> [identifier()] <SEMI_T>
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
void generate_statement_body() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
   <BEGIN_T> generate_statement_body()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void generate_statement_body1() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  //   [LOOKAHEAD(block_declarative_item()<BEGIN_T> )(block_declarative_item() )*  <BEGIN_T>] (concurrent_statement())*
Packit Service 50c9f2
Packit Service 50c9f2
   [(LOOKAHEAD(block_declarative_item())block_declarative_item() )*  <BEGIN_T>] (concurrent_statement())*
Packit Service 50c9f2
  // | (concurrent_statement())*
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString external_name(): {QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <SLSL_T> s=sig_stat() s1=external_pathname() <COLON_T>  s2=subtype_indication()  <RSRS_T>
Packit Service 50c9f2
                        {
Packit Service 50c9f2
                         QCString t="<<"+s;
Packit Service 50c9f2
                         QCString t1=s1+":"+s2+">>";
Packit Service 50c9f2
                         return   s+s1;
Packit Service 50c9f2
                        }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString sig_stat(): {Token *t;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  t=<CONSTANT_T>      { return t->image.data(); }
Packit Service 50c9f2
  | t=<SIGNAL_T>      { return t->image.data(); }
Packit Service 50c9f2
  | t=<VARIABLE_T>   { return t->image.data(); }
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString external_pathname(): {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
   s=absolute_pathname()  { return s;}
Packit Service 50c9f2
 | s=relative_pathname()   { return s;}
Packit Service 50c9f2
 | s=package_path_name()   { return s;}
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString absolute_pathname(): {QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD(<DOT_T>  pathname_element_list())
Packit Service 50c9f2
 <DOT_T>  s=pathname_element_list() s1=identifier() { return "."+s+s1;}
Packit Service 50c9f2
| <DOT_T>  s=identifier (){ return "."+s;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString relative_pathname():{QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=neg_list() [LOOKAHEAD( pathname_element_list()) s1=pathname_element_list() ] s2=identifier() { return s+s1+s2;}
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString neg_list(): {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 (<NEG_T> <DOT_T>{s+="^.";})+     {return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString pathname_element ():{QCString s,s1;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=identifier() [<LPAREN_T> s1=expression()  <RPAREN_T>]
Packit Service 50c9f2
  {
Packit Service 50c9f2
    if(!s1.isEmpty())
Packit Service 50c9f2
     return s+"("+s1+")";
Packit Service 50c9f2
Packit Service 50c9f2
    return s;
Packit Service 50c9f2
  }
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString pathname_element_list():{QCString s,s1,s2;}
Packit Service 50c9f2
{
Packit Service 50c9f2
        ( s=pathname_element() <DOT_T> ) {s+=".";} (LOOKAHEAD(pathname_element() <DOT_T>) s1=pathname_element() <DOT_T> {s2+=s1;s2+="."; })*
Packit Service 50c9f2
        { return s+s2; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString package_path_name():{QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <AT_T> s=name() { return "@"+s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void conditional_signal_assignment_wave(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  LOOKAHEAD(conditional_force_assignment())
Packit Service 50c9f2
  conditional_force_assignment()
Packit Service 50c9f2
  |conditional_waveform_assignment()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void conditional_waveform_assignment():{}
Packit Service 50c9f2
{
Packit Service 50c9f2
 target() <LESSTHAN_T> [LOOKAHEAD(1) delay_mechanism() ] waveform_element() <WHEN_T> expression() [else_wave_list()] <SEMI_T>
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
void  else_wave_list(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
<ELSE_T> expression() [ <WHEN_T> expression()]
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void conditional_force_assignment(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 target()  <LESSTHAN_T> <FORCE_T>  [inout_stat()] expression() <WHEN_T> [expression() else_stat()] <SEMI_T>
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void selected_signal_assignment_wave() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD(selected_force_assignment() )
Packit Service 50c9f2
 selected_force_assignment()
Packit Service 50c9f2
| selected_waveform_assignment()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void selected_variable_assignment():{}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <WITH_T> expression() <SELECT_T> [<Q_T>] select_name() <VARASSIGN_T> sel_var_list() // { $$=""; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void select_name(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 LOOKAHEAD(aggregate())
Packit Service 50c9f2
 aggregate()
Packit Service 50c9f2
  | name()
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void selected_waveform_assignment():{}
Packit Service 50c9f2
{
Packit Service 50c9f2
 <WITH_T> expression() <SELECT_T>  [<Q_T>]
Packit Service 50c9f2
   target() <LESSTHAN_T> [delay_mechanism()] sel_wave_list()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void selected_force_assignment():{}
Packit Service 50c9f2
{
Packit Service 50c9f2
<WITH_T> expression() <SELECT_T> [<Q_T>] target() <LESSTHAN_T> <FORCE_T>
Packit Service 50c9f2
                                                  [inout_stat()] sel_var_list()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void sel_var_list(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  (expression() <WHEN_T> choices() (<COMMA_T>|<SEMI_T>))(LOOKAHEAD(expression() <WHEN_T>) expression() <WHEN_T> choices() (<COMMA_T>|<SEMI_T>))*
Packit Service 50c9f2
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
void sel_wave_list() : {}
Packit Service 50c9f2
{
Packit Service 50c9f2
   waveform_element() <WHEN_T> choices() (LOOKAHEAD(1) <COMMA_T> sel_wave_list())* <SEMI_T>
Packit Service 50c9f2
  // |  sel_wave_list_1()
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
void inout_stat(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
  <IN_T>
Packit Service 50c9f2
 | <OUT_T>
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
void else_stat(): {}
Packit Service 50c9f2
{
Packit Service 50c9f2
   (<ELSE_T> expression() [LOOKAHEAD(1) <WHEN_T> expression()])+
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString interface_subprogram_declaration(): {QCString s;}
Packit Service 50c9f2
{
Packit Service 50c9f2
  s=iproc()  { return s;}
Packit Service 50c9f2
 | s=ifunc()  { return s; }
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
QCString iproc(): {QCString s,s1;}
Packit Service 50c9f2
 {
Packit Service 50c9f2
  <PROCEDURE_T> s=identifier()  s1=param()
Packit Service 50c9f2
  {
Packit Service 50c9f2
  current->name=s;
Packit Service 50c9f2
  return "procedure "+s+s1;
Packit Service 50c9f2
  }
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
QCString ifunc():{QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
Packit Service 50c9f2
 [t=<PURE_T> | t=<IMPURE_T> ] <FUNCTION_T>  s=name() s1=param() <RETURN_T> s2=name() [t1=<IS_T> (s3=identifier() | t2=<BOX_T>)]
Packit Service 50c9f2
    {
Packit Service 50c9f2
      QCString q;
Packit Service 50c9f2
      if(t) q=t->image.data();
Packit Service 50c9f2
      if(t2) s3="<>";
Packit Service 50c9f2
      if (!s3.isEmpty())
Packit Service 50c9f2
      {
Packit Service 50c9f2
        s3.prepend(" is ");
Packit Service 50c9f2
      }
Packit Service 50c9f2
     current->name=s;
Packit Service 50c9f2
    if (parse_sec==GEN_SEC)
Packit Service 50c9f2
                    {
Packit Service 50c9f2
                      QCString ss=q+" function "+s1+" return "+s2+s3;
Packit Service 50c9f2
                      int a=getLine(FUNCTION_T);
Packit Service 50c9f2
                      int b=getLine(PROCEDURE_T);
Packit Service 50c9f2
Packit Service 50c9f2
                      if (a>b) b=a;
Packit Service 50c9f2
                      addVhdlType(current->name.data(),b,Entry::VARIABLE_SEC,VhdlDocGen::GENERIC,ss.data(),0,Public);
Packit Service 50c9f2
                    }
Packit Service 50c9f2
         currP=0;return "";
Packit Service 50c9f2
       }
Packit Service 50c9f2
Packit Service 50c9f2
    }
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
QCString param(): {QCString s,s1;Token *tok=0;}
Packit Service 50c9f2
{
Packit Service 50c9f2
[ tok=<PARAMETER_T> ] { param_sec=PARAM_SEC; }
Packit Service 50c9f2
                  [ <LPAREN_T>  s1=interface_list() <RPAREN_T>]
Packit Service 50c9f2
                   {
Packit Service 50c9f2
                       if(tok)
Packit Service 50c9f2
                     {
Packit Service 50c9f2
                      s = tok->image.data();
Packit Service 50c9f2
Packit Service 50c9f2
                    }
Packit Service 50c9f2
                      param_sec=0;
Packit Service 50c9f2
                      return s+"("+s1+")";
Packit Service 50c9f2
                    }
Packit Service 50c9f2
Packit Service 50c9f2
 }
Packit Service 50c9f2
Packit Service 50c9f2
 // -----------------------------------------------------------------
Packit Service 50c9f2
 // needed for inline (function/process/procedure) parsing
Packit Service 50c9f2
Packit Service 50c9f2
void parseInline() :  {}
Packit Service 50c9f2
{
Packit Service 50c9f2
 process_statement()
Packit Service 50c9f2
 | subprogram_declaration()
Packit Service 50c9f2
 }