1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-29 11:21:54 +03:00

r7214: Undo my interpreter patch. Tridge thought of a much better way to do it

that doesn't involve any changes to ejs at all.
(This used to be commit 7b49711ecb)
This commit is contained in:
Tim Potter 2005-06-03 07:56:41 +00:00 committed by Gerald (Jerry) Carter
parent 0253adcab3
commit 65d685c722
4 changed files with 4 additions and 52 deletions

View File

@ -418,10 +418,8 @@ int ejsEvalScript(EjsId eid, char *script, MprVar *vp, char **emsg)
endlessLoopTest = NULL;
ep->exitStatus = 0;
ejsParse(ep, EJS_STATE_BEGIN, EJS_FLAGS_EXE); /* Skip over #! */
do {
state = ejsParse(ep, EJS_STATE_STMT, EJS_FLAGS_EXE);
state = ejsParse(ep, EJS_STATE_BEGIN, EJS_FLAGS_EXE);
if (state == EJS_STATE_RET) {
state = EJS_STATE_EOF;

View File

@ -100,7 +100,7 @@ extern "C" {
#define EJS_TOK_IN 26 /* in */
#define EJS_TOK_FUNCTION 27 /* function */
#define EJS_TOK_NUMBER 28 /* Number */
#define EJS_TOK_HASHBANG 29 /* #!/path/to/interpreter */
/*
* Expression operators
*/
@ -150,7 +150,8 @@ extern "C" {
#define EJS_STATE_DEC 18 /* Declaration statement */
#define EJS_STATE_DEC_DONE 19
#define EJS_STATE_RET 20 /* Return statement */
#define EJS_STATE_BEGIN 21 /* Start of script */
#define EJS_STATE_BEGIN EJS_STATE_STMT
/*
* General parsing flags.

View File

@ -674,26 +674,6 @@ static int getLexicalToken(Ejs *ep, int state)
inputPutback(ep, c);
return EJS_TOK_NUMBER;
case '#':
if (ip->lineNumber == 1) {
if ((c = inputGetc(ep)) < 0) {
ejsError(ep, "Syntax Error");
return EJS_TOK_ERR;
}
if (c != '!') {
ejsError(ep, "Syntax Error");
return EJS_TOK_ERR;
}
while ((c = inputGetc(ep)) != -1) {
if (c == '\r' || c == '\n')
break;
tokenAddChar(ep, c);
}
return EJS_TOK_HASHBANG;
}
/* Fall through to default handling */
default:
/*
* Identifiers or a function names

View File

@ -67,7 +67,6 @@ static int parseId(Ejs *ep, int state, int flags, char **id,
static int parseInc(Ejs *ep, int state, int flags);
static int parseIf(Ejs *ep, int state, int flags, int *done);
static int parseStmt(Ejs *ep, int state, int flags);
static int parseHashBang(Ejs *ep, int state, int flags);
static void removeNewlines(Ejs *ep, int state);
static void updateResult(Ejs *ep, int state, int flags, MprVar *vp);
@ -81,12 +80,6 @@ int ejsParse(Ejs *ep, int state, int flags)
mprAssert(ep);
switch (state) {
/*
* The very start of a script.
*/
case EJS_STATE_BEGIN:
state = parseHashBang(ep, state, flags);
break;
/*
* Any statement, function arguments or conditional expressions
*/
@ -147,26 +140,6 @@ int ejsParse(Ejs *ep, int state, int flags)
return state;
}
/******************************************************************************/
/*
* Parse a #!/path/to/interpreter line which we just throw away.
*/
static int parseHashBang(Ejs *ep, int state, int flags)
{
int tid;
/* Look for #! */
tid = ejsLexGetToken(ep, state);
if (tid != EJS_TOK_HASHBANG) {
ejsLexPutbackToken(ep, tid, ep->token);
}
return EJS_STATE_STMT;
}
/******************************************************************************/
/*
* Parse any statement including functions and simple relational operations