first commit
This commit is contained in:
104
include/modules/script_squirrel/squirrel_analyzer.h
Normal file
104
include/modules/script_squirrel/squirrel_analyzer.h
Normal file
@ -0,0 +1,104 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#ifndef __NSQUIRRELANALYZER__
|
||||
#define __NSQUIRRELANALYZER__
|
||||
|
||||
|
||||
#include "memory/nshared_ptr.h"
|
||||
#include "memory/nweak_ptr.h"
|
||||
#include "container/nlist.h"
|
||||
#include "nstring/nstring.h"
|
||||
|
||||
|
||||
namespace GS {
|
||||
namespace SquirrelAnalyzer {
|
||||
|
||||
struct Offset
|
||||
{
|
||||
int line, column;
|
||||
|
||||
Offset(int l = 0, int c = 0) : line(l), column(c) {}
|
||||
};
|
||||
|
||||
struct Symbol : public SharedObject
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
TypeNone,
|
||||
TypeVariable,
|
||||
TypeFunction,
|
||||
TypeClass
|
||||
};
|
||||
|
||||
String name;
|
||||
Type type;
|
||||
|
||||
Offset offset;
|
||||
|
||||
Symbol() : type(TypeNone) {}
|
||||
};
|
||||
|
||||
struct Variable : public Symbol
|
||||
{
|
||||
enum VarType
|
||||
{
|
||||
VarNone,
|
||||
VarLocal,
|
||||
VarGlobal,
|
||||
VarMember,
|
||||
VarEnum
|
||||
};
|
||||
|
||||
VarType var_type;
|
||||
|
||||
Variable() : var_type(VarNone) { type = TypeVariable; }
|
||||
};
|
||||
|
||||
struct Function : public Symbol
|
||||
{
|
||||
SharedList <Symbol *> symbols;
|
||||
String prototype;
|
||||
|
||||
Function() { type = TypeFunction; }
|
||||
};
|
||||
|
||||
struct Class : public Symbol
|
||||
{
|
||||
String extends;
|
||||
SharedList <Symbol *> symbols;
|
||||
|
||||
Class() { type = TypeClass; }
|
||||
};
|
||||
|
||||
struct Source
|
||||
{
|
||||
String name;
|
||||
SharedList <Symbol *> symbols;
|
||||
};
|
||||
|
||||
struct SourceSymbol
|
||||
{
|
||||
SharedPtr <Source> source;
|
||||
SharedPtr <Symbol> symbol;
|
||||
};
|
||||
|
||||
struct Program
|
||||
{
|
||||
AutoList <Source *> sources;
|
||||
bool FindSymbol(const char *name, AutoList <SourceSymbol *> &symbols);
|
||||
};
|
||||
|
||||
void DumpProgram(const Program &);
|
||||
|
||||
/// Analyze a source, store result in program object.
|
||||
Source *Analyze(const char *nut, Program &, bool replace = true);
|
||||
|
||||
} // SquirrelAnalyser
|
||||
} // GS
|
||||
|
||||
|
||||
#endif // __NSQUIRRELANALYZER__
|
||||
Reference in New Issue
Block a user