|
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 |
}
|