mirror of https://github.com/stella-emu/stella.git
Fixed some yacc issues, and a memory leak in debugger expressions.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3053 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
f54118226c
commit
9cf9b41989
|
@ -144,6 +144,9 @@ Debugger::Debugger(OSystem& osystem, Console& console)
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
Debugger::~Debugger()
|
||||
{
|
||||
for(auto& f: myFunctions)
|
||||
delete f.second;
|
||||
|
||||
delete myBreakPoints;
|
||||
delete myReadTraps;
|
||||
delete myWriteTraps;
|
||||
|
@ -535,9 +538,9 @@ void Debugger::setQuitState()
|
|||
bool Debugger::addFunction(const string& name, const string& definition,
|
||||
Expression* exp, bool builtin)
|
||||
{
|
||||
functions.insert(make_pair(name, exp));
|
||||
myFunctions.insert(make_pair(name, exp));
|
||||
if(!builtin)
|
||||
functionDefs.insert(make_pair(name, definition));
|
||||
myFunctionDefs.insert(make_pair(name, definition));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -545,39 +548,39 @@ bool Debugger::addFunction(const string& name, const string& definition,
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool Debugger::delFunction(const string& name)
|
||||
{
|
||||
const auto& iter = functions.find(name);
|
||||
if(iter == functions.end())
|
||||
const auto& iter = myFunctions.find(name);
|
||||
if(iter == myFunctions.end())
|
||||
return false;
|
||||
|
||||
functions.erase(name);
|
||||
myFunctions.erase(name);
|
||||
delete iter->second;
|
||||
|
||||
const auto& def_iter = functionDefs.find(name);
|
||||
if(def_iter == functionDefs.end())
|
||||
const auto& def_iter = myFunctionDefs.find(name);
|
||||
if(def_iter == myFunctionDefs.end())
|
||||
return false;
|
||||
|
||||
functionDefs.erase(name);
|
||||
myFunctionDefs.erase(name);
|
||||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const Expression* Debugger::getFunction(const string& name) const
|
||||
{
|
||||
const auto& iter = functions.find(name);
|
||||
return iter != functions.end() ? iter->second : nullptr;
|
||||
const auto& iter = myFunctions.find(name);
|
||||
return iter != myFunctions.end() ? iter->second : nullptr;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const string& Debugger::getFunctionDef(const string& name) const
|
||||
{
|
||||
const auto& iter = functionDefs.find(name);
|
||||
return iter != functionDefs.end() ? iter->second : EmptyString;
|
||||
const auto& iter = myFunctionDefs.find(name);
|
||||
return iter != myFunctionDefs.end() ? iter->second : EmptyString;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const FunctionDefMap Debugger::getFunctionDefMap() const
|
||||
{
|
||||
return functionDefs;
|
||||
return myFunctionDefs;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -629,7 +632,7 @@ string Debugger::builtinHelp() const
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::getCompletions(const char* in, StringList& list) const
|
||||
{
|
||||
for(const auto& iter: functions)
|
||||
for(const auto& iter: myFunctions)
|
||||
{
|
||||
const char* l = iter.first.c_str();
|
||||
if(BSPF_equalsIgnoreCase(l, in))
|
||||
|
|
|
@ -309,8 +309,8 @@ class Debugger : public DialogContainer
|
|||
|
||||
static Debugger* myStaticDebugger;
|
||||
|
||||
FunctionMap functions;
|
||||
FunctionDefMap functionDefs;
|
||||
FunctionMap myFunctions;
|
||||
FunctionDefMap myFunctionDefs;
|
||||
|
||||
// Dimensions of the entire debugger window
|
||||
uInt32 myWidth;
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace YaccParser {
|
|||
#include <ctype.h>
|
||||
|
||||
#include "y.tab.h"
|
||||
yystype result;
|
||||
YYSTYPE result;
|
||||
string errMsg;
|
||||
#include "y.tab.c"
|
||||
|
||||
|
|
1528
src/yacc/y.tab.c
1528
src/yacc/y.tab.c
File diff suppressed because it is too large
Load Diff
104
src/yacc/y.tab.h
104
src/yacc/y.tab.h
|
@ -1,21 +1,19 @@
|
|||
/* A Bison parser, made by GNU Bison 3.0.2. */
|
||||
|
||||
/* A Bison parser, made by GNU Bison 2.4.1. */
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
|
||||
|
||||
/* Skeleton interface for Bison's Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
@ -28,36 +26,44 @@
|
|||
special exception, which will cause the skeleton and the resulting
|
||||
Bison output files to be licensed under the GNU General Public
|
||||
License without this special exception.
|
||||
|
||||
|
||||
This special exception was added by the Free Software Foundation in
|
||||
version 2.2 of Bison. */
|
||||
|
||||
#ifndef YY_YY_Y_TAB_H_INCLUDED
|
||||
# define YY_YY_Y_TAB_H_INCLUDED
|
||||
/* Debug traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 0
|
||||
#endif
|
||||
#if YYDEBUG
|
||||
extern int yydebug;
|
||||
#endif
|
||||
|
||||
/* Tokens. */
|
||||
/* Token type. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# define YYTOKENTYPE
|
||||
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
||||
know about them. */
|
||||
enum yytokentype {
|
||||
NUMBER = 258,
|
||||
ERR = 259,
|
||||
EQUATE = 260,
|
||||
CART_METHOD = 261,
|
||||
CPU_METHOD = 262,
|
||||
TIA_METHOD = 263,
|
||||
FUNCTION = 264,
|
||||
LOG_OR = 265,
|
||||
LOG_AND = 266,
|
||||
LOG_NOT = 267,
|
||||
SHL = 268,
|
||||
SHR = 269,
|
||||
EQ = 270,
|
||||
NE = 271,
|
||||
LTE = 272,
|
||||
GTE = 273,
|
||||
DEREF = 274,
|
||||
UMINUS = 275
|
||||
};
|
||||
enum yytokentype
|
||||
{
|
||||
NUMBER = 258,
|
||||
ERR = 259,
|
||||
EQUATE = 260,
|
||||
CART_METHOD = 261,
|
||||
CPU_METHOD = 262,
|
||||
TIA_METHOD = 263,
|
||||
FUNCTION = 264,
|
||||
LOG_OR = 265,
|
||||
LOG_AND = 266,
|
||||
LOG_NOT = 267,
|
||||
SHR = 268,
|
||||
SHL = 269,
|
||||
GTE = 270,
|
||||
LTE = 271,
|
||||
NE = 272,
|
||||
EQ = 273,
|
||||
DEREF = 274,
|
||||
UMINUS = 275
|
||||
};
|
||||
#endif
|
||||
/* Tokens. */
|
||||
#define NUMBER 258
|
||||
|
@ -70,24 +76,21 @@
|
|||
#define LOG_OR 265
|
||||
#define LOG_AND 266
|
||||
#define LOG_NOT 267
|
||||
#define SHL 268
|
||||
#define SHR 269
|
||||
#define EQ 270
|
||||
#define NE 271
|
||||
#define LTE 272
|
||||
#define GTE 273
|
||||
#define SHR 268
|
||||
#define SHL 269
|
||||
#define GTE 270
|
||||
#define LTE 271
|
||||
#define NE 272
|
||||
#define EQ 273
|
||||
#define DEREF 274
|
||||
#define UMINUS 275
|
||||
|
||||
|
||||
|
||||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef union YYSTYPE
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
union YYSTYPE
|
||||
{
|
||||
|
||||
/* Line 1676 of yacc.c */
|
||||
#line 28 "stella.y"
|
||||
#line 28 "stella.y" /* yacc.c:1909 */
|
||||
|
||||
int val;
|
||||
char *equate;
|
||||
|
@ -97,16 +100,15 @@ typedef union YYSTYPE
|
|||
Expression *exp;
|
||||
char *function;
|
||||
|
||||
|
||||
|
||||
/* Line 1676 of yacc.c */
|
||||
#line 104 "y.tab.h"
|
||||
} YYSTYPE;
|
||||
#line 104 "y.tab.h" /* yacc.c:1909 */
|
||||
};
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
|
||||
int yyparse (void);
|
||||
|
||||
#endif /* !YY_YY_Y_TAB_H_INCLUDED */
|
||||
|
|
Loading…
Reference in New Issue