我在BNF中有一个语法,我使用BNF Converter将这个语法转换成带有C代码的可执行程序。但是,我有一个特定的问题,关于$ 1的`GrammarCl'在GrammarCl.y文件中没有声明的类型,我不知道如何解决这个问题。我已经看了很多论坛并搜索了这个并尝试了很多东西,但仍然不知道如何解决它。
我得到的错误是:
gcc -g -W -Wall -c Absyn.c
flex -PGrammarCl -oLexer.c GrammarCl.l
gcc -g -W -Wall -c Lexer.c
Lexer.c:1362:警告:'yyunput'定义但未使用
Lexer.c:1408:警告:'输入'已定义但未使用
bison -t -pGrammarCl GrammarCl.y -o Parser.c
GrammarCl.y:614.70-71:GrammarCl' has no declared type
GrammarCl'的$ 1没有声明的类型
GrammarCl.y:614.74-75: $2 of
make: * [Parser.c]错误1
以下是GrammarCl.y文件中的语法:
/* This Bison file was machine-generated by BNFC */
%{
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "Absyn.h"
#define initialize_lexer GrammarCl_initialize_lexer
extern int yyparse(void);
extern int yylex(void);
extern int initialize_lexer(FILE * inp);
void yyerror(const char *str)
{
fprintf(stderr,"error: %s\n",str);
}
GrammarCl YY_RESULT_GrammarCl_ = 0;
GrammarCl pGrammarCl(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_GrammarCl_;
}
}
Dictionary YY_RESULT_Dictionary_ = 0;
Dictionary pDictionary(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Dictionary_;
}
}
Action YY_RESULT_Action_ = 0;
Action pAction(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Action_;
}
}
Words YY_RESULT_Words_ = 0;
Words pWords(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Words_;
}
}
Contract YY_RESULT_Contract_ = 0;
Contract pContract(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Contract_;
}
}
Statement YY_RESULT_Statement_ = 0;
Statement pStatement(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Statement_;
}
}
StatementSequence YY_RESULT_StatementSequence_ = 0;
StatementSequence pStatementSequence(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_StatementSequence_;
}
}
Sentence YY_RESULT_Sentence_ = 0;
Sentence pSentence(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Sentence_;
}
}
ListClause YY_RESULT_ListClause_ = 0;
ListClause pListClause(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ListClause_;
}
}
ListClauseXorOBL YY_RESULT_ListClauseXorOBL_ = 0;
ListClauseXorOBL pListClauseXorOBL(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ListClauseXorOBL_;
}
}
ListClauseXorPER YY_RESULT_ListClauseXorPER_ = 0;
ListClauseXorPER pListClauseXorPER(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ListClauseXorPER_;
}
}
Clause YY_RESULT_Clause_ = 0;
Clause pClause(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Clause_;
}
}
TestOpClause YY_RESULT_TestOpClause_ = 0;
TestOpClause pTestOpClause(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_TestOpClause_;
}
}
TestOpCoAct YY_RESULT_TestOpCoAct_ = 0;
TestOpCoAct pTestOpCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_TestOpCoAct_;
}
}
CTD YY_RESULT_CTD_ = 0;
CTD pCTD(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_CTD_;
}
}
CTDCoAct YY_RESULT_CTDCoAct_ = 0;
CTDCoAct pCTDCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_CTDCoAct_;
}
}
CTP YY_RESULT_CTP_ = 0;
CTP pCTP(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_CTP_;
}
}
CTPCoAct YY_RESULT_CTPCoAct_ = 0;
CTPCoAct pCTPCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_CTPCoAct_;
}
}
ObligationCl YY_RESULT_ObligationCl_ = 0;
ObligationCl pObligationCl(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ObligationCl_;
}
}
OblCoAct YY_RESULT_OblCoAct_ = 0;
OblCoAct pOblCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_OblCoAct_;
}
}
ProhibitionCl YY_RESULT_ProhibitionCl_ = 0;
ProhibitionCl pProhibitionCl(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ProhibitionCl_;
}
}
ProCoAct YY_RESULT_ProCoAct_ = 0;
ProCoAct pProCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ProCoAct_;
}
}
PermissionCl YY_RESULT_PermissionCl_ = 0;
PermissionCl pPermissionCl(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_PermissionCl_;
}
}
PerCoAct YY_RESULT_PerCoAct_ = 0;
PerCoAct pPerCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_PerCoAct_;
}
}
CoAct YY_RESULT_CoAct_ = 0;
CoAct pCoAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_CoAct_;
}
}
CoActStar YY_RESULT_CoActStar_ = 0;
CoActStar pCoActStar(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_CoActStar_;
}
}
Endurance YY_RESULT_Endurance_ = 0;
Endurance pEndurance(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Endurance_;
}
}
ContradictionWords YY_RESULT_ContradictionWords_ = 0;
ContradictionWords pContradictionWords(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ContradictionWords_;
}
}
ConWor YY_RESULT_ConWor_ = 0;
ConWor pConWor(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ConWor_;
}
}
ContradictoryWor YY_RESULT_ContradictoryWor_ = 0;
ContradictoryWor pContradictoryWor(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_ContradictoryWor_;
}
}
Act YY_RESULT_Act_ = 0;
Act pAct(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Act_;
}
}
Variable_name YY_RESULT_Variable_name_ = 0;
Variable_name pVariable_name(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Variable_name_;
}
}
WordAction YY_RESULT_WordAction_ = 0;
WordAction pWordAction(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_WordAction_;
}
}
Lett YY_RESULT_Lett_ = 0;
Lett pLett(FILE *inp)
{
initialize_lexer(inp);
if (yyparse())
{ /* Failure */
return 0;
}
else
{ /* Success */
return YY_RESULT_Lett_;
}
}
%}
%union
{
int int_;
char char_;
double double_;
char* string_;
GrammarCl grammarcl_;
Dictionary dictionary_;
Action action_;
Words words_;
Contract contract_;
Statement statement_;
StatementSequence statementsequence_;
Sentence sentence_;
ListClause listclause_;
ListClauseXorOBL listclausexorobl_;
ListClauseXorPER listclausexorper_;
Clause clause_;
TestOpClause testopclause_;
TestOpCoAct testopcoact_;
CTD ctd_;
CTDCoAct ctdcoact_;
CTP ctp_;
CTPCoAct ctpcoact_;
ObligationCl obligationcl_;
OblCoAct oblcoact_;
ProhibitionCl prohibitioncl_;
ProCoAct procoact_;
PermissionCl permissioncl_;
PerCoAct percoact_;
CoAct coact_;
CoActStar coactstar_;
Endurance endurance_;
ContradictionWords contradictionwords_;
ConWor conwor_;
ContradictoryWor contradictorywor_;
Act act_;
Variable_name variable_name_;
WordAction wordaction_;
Lett lett_;
}
%token _ERROR_
%token _SYMB_0 /* = */
%token _SYMB_1 /* ; */
%token _SYMB_2 /* ( */
%token _SYMB_3 /* ) */
%token _SYMB_4 /* It is mandatory to */
%token _SYMB_5 /* if not */
%token _SYMB_6 /* It is prohibited to */
%token _SYMB_7 /* It is permitted to */
%token _SYMB_8 /* after then */
%token _SYMB_9 /* As long as */
%token _SYMB_10 /* as long as */
%token _SYMB_11 /* # */
%token _SYMB_12 /* After */
%token _SYMB_13 /* Always */
%token _SYMB_14 /* Contract */
%token _SYMB_15 /* Contradiction */
%token _SYMB_16 /* Dictionary */
%token _SYMB_17 /* If */
%token _SYMB_18 /* When */
%token _SYMB_19 /* after */
%token _SYMB_20 /* always */
%token _SYMB_21 /* and */
%token _SYMB_22 /* as */
%token _SYMB_23 /* bas */
%token _SYMB_24 /* begin1 */
%token _SYMB_25 /* begin2 */
%token _SYMB_26 /* begin3 */
%token _SYMB_27 /* concurrently */
%token _SYMB_28 /* end1 */
%token _SYMB_29 /* end2 */
%token _SYMB_30 /* end3 */
%token _SYMB_31 /* if */
%token _SYMB_32 /* not */
%token _SYMB_33 /* or */
%token _SYMB_34 /* then */
%type <grammarcl_> GrammarCl
%type <dictionary_> Dictionary
%type <action_> Action
%type <words_> Words
%type <contract_> Contract
%type <statement_> Statement
%type <statementsequence_> StatementSequence
%type <sentence_> Sentence
%type <listclause_> ListClause
%type <listclausexorobl_> ListClauseXorOBL
%type <listclausexorper_> ListClauseXorPER
%type <clause_> Clause
%type <testopclause_> TestOpClause
%type <testopcoact_> TestOpCoAct
%type <ctd_> CTD
%type <ctdcoact_> CTDCoAct
%type <ctp_> CTP
%type <ctpcoact_> CTPCoAct
%type <obligationcl_> ObligationCl
%type <oblcoact_> OblCoAct
%type <prohibitioncl_> ProhibitionCl
%type <procoact_> ProCoAct
%type <permissioncl_> PermissionCl
%type <percoact_> PerCoAct
%type <coact_> CoAct
%type <coactstar_> CoActStar
%type <endurance_> Endurance
%type <contradictionwords_> ContradictionWords
%type <conwor_> ConWor
%type <contradictorywor_> ContradictoryWor
%type <act_> Act
%type <variable_name_> Variable_name
%type <wordaction_> WordAction
%type <lett_> Lett
%token<string_> _STRING_
%%
GrammarCl : _SYMB_16 _SYMB_14 ContradictionWords { $$ = make_Grammar($1, $2, $3); YY_RESULT_GrammarCl_= $$; }
;
Dictionary : _SYMB_16 _SYMB_24 Action _SYMB_28 { $$ = make_DDictionary($3); YY_RESULT_Dictionary_= $$; }
;
Action : Words { $$ = make_RecurA($1); YY_RESULT_Action_= $$; }
| Action Action { $$ = make_RecurB($1, $2); YY_RESULT_Action_= $$; }
;
Words : Variable_name _SYMB_0 _STRING_ _SYMB_1 { $$ = make_WWrd($1, $3); YY_RESULT_Words_= $$; }
;
Contract : _SYMB_14 _SYMB_25 Statement _SYMB_29 { $$ = make_CCon($3); YY_RESULT_Contract_= $$; }
;
Statement : StatementSequence { $$ = make_RecurC($1); YY_RESULT_Statement_= $$; }
| Statement Statement { $$ = make_RecurD($1, $2); YY_RESULT_Statement_= $$; }
;
StatementSequence : Sentence _SYMB_1 { $$ = make_SA($1); YY_RESULT_StatementSequence_= $$; }
;
Sentence : ListClause { $$ = make_SentA($1); YY_RESULT_Sentence_= $$; }
| Sentence Sentence { $$ = make_SentB($1, $2); YY_RESULT_Sentence_= $$; }
;
ListClause : Clause { $$ = make_LLiAA($1); YY_RESULT_ListClause_= $$; }
| _SYMB_2 ListClauseXorOBL _SYMB_3 { $$ = make_LLiAB($2); YY_RESULT_ListClause_= $$; }
| ListClauseXorPER { $$ = make_LLiAC($1); YY_RESULT_ListClause_= $$; }
| ListClause _SYMB_21 ListClause { $$ = make_LLiAD($1, $3); YY_RESULT_ListClause_= $$; }
| _SYMB_2 ListClause _SYMB_21 ListClause _SYMB_3 { $$ = make_LLiAE($2, $4); YY_RESULT_ListClause_= $$; }
;
ListClauseXorOBL : ObligationCl { $$ = make_LLiXA($1); YY_RESULT_ListClauseXorOBL_= $$; }
| ListClauseXorOBL _SYMB_33 ListClauseXorOBL { $$ = make_LLiXC($1, $3); YY_RESULT_ListClauseXorOBL_= $$; }
;
ListClauseXorPER : PermissionCl { $$ = make_LListXPA($1); YY_RESULT_ListClauseXorPER_= $$; }
| _SYMB_2 ListClauseXorPER _SYMB_33 ListClauseXorPER _SYMB_3 { $$ = make_LListXPB($2, $4); YY_RESULT_ListClauseXorPER_= $$; }
| ListClauseXorPER _SYMB_33 ListClauseXorPER { $$ = make_LListXPC($1, $3); YY_RESULT_ListClauseXorPER_= $$; }
;
Clause : TestOpClause { $$ = make_CClA($1); YY_RESULT_Clause_= $$; }
| CTD { $$ = make_CClB($1); YY_RESULT_Clause_= $$; }
| CTP { $$ = make_CClC($1); YY_RESULT_Clause_= $$; }
| ObligationCl { $$ = make_CClD($1); YY_RESULT_Clause_= $$; }
| ProhibitionCl { $$ = make_CClE($1); YY_RESULT_Clause_= $$; }
| PermissionCl { $$ = make_CClF($1); YY_RESULT_Clause_= $$; }
| ListClauseXorOBL { $$ = make_CClG($1); YY_RESULT_Clause_= $$; }
| ListClauseXorPER { $$ = make_CClH($1); YY_RESULT_Clause_= $$; }
;
TestOpClause : TestOpCoAct { $$ = make_TTestA($1); YY_RESULT_TestOpClause_= $$; }
;
TestOpCoAct : _SYMB_2 _SYMB_17 _SYMB_2 CoActStar _SYMB_3 _SYMB_34 Clause _SYMB_3 { $$ = make_TTestOpCA($4, $7); YY_RESULT_TestOpCoAct_= $$; }
| _SYMB_2 _SYMB_2 _SYMB_13 _SYMB_3 _SYMB_2 _SYMB_17 _SYMB_2 CoActStar _SYMB_3 _SYMB_34 Clause _SYMB_3 _SYMB_3 { $$ = make_TTestOpCB($8, $11); YY_RESULT_TestOpCoAct_= $$; }
| _SYMB_2 _SYMB_2 _SYMB_12 _SYMB_3 _SYMB_2 _SYMB_17 _SYMB_2 CoActStar _SYMB_3 _SYMB_34 Clause _SYMB_3 _SYMB_3 { $$ = make_TTestOpCC($8, $11); YY_RESULT_TestOpCoAct_= $$; }
| _SYMB_2 _SYMB_2 _SYMB_18 _SYMB_3 _SYMB_2 _SYMB_17 _SYMB_2 CoActStar _SYMB_3 _SYMB_34 Clause _SYMB_3 _SYMB_3 { $$ = make_TTestOpCD($8, $11); YY_RESULT_TestOpCoAct_= $$; }
;
CTD : CTDCoAct { $$ = make_CCTDA($1); YY_RESULT_CTD_= $$; }
;
CTDCoAct : _SYMB_2 _SYMB_4 _SYMB_2 CoAct _SYMB_3 _SYMB_5 _SYMB_2 CoAct _SYMB_3 _SYMB_34 Clause _SYMB_3 { $$ = make_CCTDSB($4, $8, $11); YY_RESULT_CTDCoAct_= $$; }
;
CTP : CTPCoAct { $$ = make_CCTA($1); YY_RESULT_CTP_= $$; }
;
CTPCoAct : _SYMB_2 _SYMB_6 _SYMB_2 CoAct _SYMB_3 _SYMB_31 _SYMB_2 CoAct _SYMB_3 _SYMB_34 Clause _SYMB_3 { $$ = make_CCTPSB($4, $8, $11); YY_RESULT_CTPCoAct_= $$; }
;
ObligationCl : OblCoAct { $$ = make_OOblCA($1); YY_RESULT_ObligationCl_= $$; }
;
OblCoAct : _SYMB_2 _SYMB_4 _SYMB_2 CoAct _SYMB_3 _SYMB_3 { $$ = make_OOblA($4); YY_RESULT_OblCoAct_= $$; }
;
ProhibitionCl : ProCoAct { $$ = make_PProCA($1); YY_RESULT_ProhibitionCl_= $$; }
;
ProCoAct : _SYMB_2 _SYMB_6 _SYMB_2 CoAct _SYMB_3 _SYMB_3 { $$ = make_PProA($4); YY_RESULT_ProCoAct_= $$; }
;
PermissionCl : PerCoAct { $$ = make_PPermA($1); YY_RESULT_PermissionCl_= $$; }
;
PerCoAct : _SYMB_2 _SYMB_7 _SYMB_2 CoAct _SYMB_3 _SYMB_3 { $$ = make_PPerA($4); YY_RESULT_PerCoAct_= $$; }
;
CoAct : Act { $$ = make_CCAA($1); YY_RESULT_CoAct_= $$; }
| CoAct _SYMB_21 CoAct { $$ = make_CCAB($1, $3); YY_RESULT_CoAct_= $$; }
| CoAct _SYMB_33 CoAct { $$ = make_CCAC($1, $3); YY_RESULT_CoAct_= $$; }
| CoAct _SYMB_8 CoAct { $$ = make_CCAD($1, $3); YY_RESULT_CoAct_= $$; }
| CoAct _SYMB_21 CoAct _SYMB_27 { $$ = make_CCAE($1, $3); YY_RESULT_CoAct_= $$; }
| _SYMB_2 Endurance _SYMB_2 CoAct _SYMB_3 _SYMB_3 { $$ = make_CCAF($2, $4); YY_RESULT_CoAct_= $$; }
| _SYMB_2 _SYMB_32 _SYMB_2 CoAct _SYMB_3 _SYMB_3 { $$ = make_CCAG($4); YY_RESULT_CoAct_= $$; }
;
CoActStar : CoAct { $$ = make_CCAH($1); YY_RESULT_CoActStar_= $$; }
| CoActStar _SYMB_21 CoActStar { $$ = make_CCAI($1, $3); YY_RESULT_CoActStar_= $$; }
| CoActStar _SYMB_33 CoActStar { $$ = make_CCAJ($1, $3); YY_RESULT_CoActStar_= $$; }
| CoActStar _SYMB_8 CoActStar { $$ = make_CCAK($1, $3); YY_RESULT_CoActStar_= $$; }
| CoActStar _SYMB_21 CoActStar _SYMB_27 { $$ = make_CCAL($1, $3); YY_RESULT_CoActStar_= $$; }
| _SYMB_2 Endurance _SYMB_2 CoActStar _SYMB_3 _SYMB_3 { $$ = make_CCAM($2, $4); YY_RESULT_CoActStar_= $$; }
| _SYMB_2 _SYMB_32 _SYMB_2 CoActStar _SYMB_3 _SYMB_3 { $$ = make_CCAN($4); YY_RESULT_CoActStar_= $$; }
;
Endurance : _SYMB_9 { $$ = make_EENA(); YY_RESULT_Endurance_= $$; }
| _SYMB_13 { $$ = make_EENB(); YY_RESULT_Endurance_= $$; }
| _SYMB_10 { $$ = make_EENC(); YY_RESULT_Endurance_= $$; }
| _SYMB_20 { $$ = make_EEND(); YY_RESULT_Endurance_= $$; }
| _SYMB_19 { $$ = make_EENE(); YY_RESULT_Endurance_= $$; }
| _SYMB_12 { $$ = make_EENF(); YY_RESULT_Endurance_= $$; }
;
ContradictionWords : _SYMB_15 _SYMB_26 ConWor _SYMB_30 { $$ = make_CConWorStr($3); YY_RESULT_ContradictionWords_= $$; }
;
ConWor : ContradictoryWor { $$ = make_RecurE($1); YY_RESULT_ConWor_= $$; }
| ContradictoryWor ConWor { $$ = make_RecurF($1, $2); YY_RESULT_ConWor_= $$; }
;
ContradictoryWor : Act _SYMB_11 Act _SYMB_1 { $$ = make_CW($1, $3); YY_RESULT_ContradictoryWor_= $$; }
;
Act : Variable_name { $$ = make_AAc($1); YY_RESULT_Act_= $$; }
;
Variable_name : Lett { $$ = make_WWA($1); YY_RESULT_Variable_name_= $$; }
;
WordAction : Lett { $$ = make_WWB($1); YY_RESULT_WordAction_= $$; }
;
Lett : _SYMB_22 { $$ = make_LLTA(); YY_RESULT_Lett_= $$; }
| _SYMB_23 { $$ = make_LLTB(); YY_RESULT_Lett_= $$; }
;
答案 0 :(得分:1)
对于所有令牌,您不一定需要%type 。许多令牌(如运算符)没有与之关联的类型,但它们仍然可以在语法规则中执行操作。 但是,当你将它发送到某个地方时,你需要设置一个类型。例如, someObject.intVariable = $ 3 应该变为 someObject.intVariable = $ 3 因为你声明你的union的int类型是int _。
答案 1 :(得分:0)
在我看来,您没有%type
声明,表明词法分析器返回_SYMB_16
和_SYMB_14
的值。
答案 2 :(得分:0)
您可能必须使用$<
名称类型 >1
和$<
名称类型 {{ 1}},分别是“ name-of-type ”是您的>2
成员之一。例如,%union
或$<wordaction_>1
,任何类型都适合上下文。