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:
parent
0253adcab3
commit
65d685c722
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user