jsscan.h revision 6b15695578f07a3f72c4c9475c1a261a3021472a
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator client code, released
* March 31, 1998.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef jsscan_h___
#define jsscan_h___
/*
* JS lexical scanner interface.
*/
#include <stddef.h>
#include <stdio.h>
#include "jsopcode.h"
#include "jsprvtd.h"
#include "jspubtd.h"
typedef enum JSTokenType {
TOK_EOF = 0, /* end of file */
TOK_RESERVED, /* reserved keywords */
TOK_LIMIT /* domain size */
} JSTokenType;
#define IS_PRIMARY_TOKEN(tt) \
struct JSTokenPtr {
};
struct JSTokenPos {
};
struct JSToken {
union {
struct {
} s;
} u;
};
typedef struct JSTokenBuf {
} JSTokenBuf;
physical line length is unlimited */
struct JSTokenStream {
const char *filename; /* input filename or null */
void *listenerData; /* listener 'this' data */
void *listenerTSData;/* listener data for this TokenStream */
};
/* JSTokenStream flags */
/* Unicode separators that are treated as line terminators, in addition to \n, \r */
#define LINE_SEPARATOR 0x2028
#define PARA_SEPARATOR 0x2029
/*
* Create a new token stream, either from an input buffer or from a file.
* Return null on file-open or memory-allocation failure.
*
* NB: All of js_New{,Buffer,File}TokenStream() return a pointer to transient
* memory in the current context's temp pool. This memory is deallocated via
* JS_ARENA_RELEASE() after parsing is finished.
*/
extern JSTokenStream *
extern JS_FRIEND_API(JSTokenStream *)
extern JS_FRIEND_API(JSTokenStream *)
extern JS_FRIEND_API(JSBool)
/*
* Initialize the scanner, installing JS keywords into cx's global scope.
*/
extern JSBool
/*
* Friend-exported API entry point to call a mapping function on each reserved
* identifier in the scanner's keyword table.
*/
extern JS_FRIEND_API(void)
js_MapKeywords(void (*mapfun)(const char *));
/*
* Report a compile-time error by its number, using ts or cg to show context.
* Return true for a warning, false for an error.
*/
extern JSBool
const uintN errorNumber, ...);
/*
* Look ahead one token and return its type.
*/
extern JSTokenType
extern JSTokenType
/*
* Get the next token from ts.
*/
extern JSTokenType
/*
* Push back the last scanned token onto ts.
*/
extern void
/*
* Get the next token from ts if its type is tt.
*/
extern JSBool
#endif /* jsscan_h___ */