Java语法文件1
%{
/*------------------------------------------------------------------
* Copyright (C) 1996, 1997 Dmitri Bronnikov, All rights reserved.
*
* THIS GRAMMAR IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGMENT.
*
* Bronnikov@inreach.com
*
*------------------------------------------------------------------
*
* VERSION 1.03 DATE 11 NOV 1997
*
*------------------------------------------------------------------
*
* UPDATES
*
* 1.03 Added Java 1.1 changes:
* inner classes,
* anonymous classes,
* non-static initializer blocks,
* array initialization by new operator
* 1.02 Corrected cast expression syntax
* 1.01 All shift/reduce conflicts, except dangling else, resolved
*
*------------------------------------------------------------------
*
* PARSING CONFLICTS RESOLVED
*
* Some Shift/Reduce conflicts have been resolved at the expense of
* the grammar defines a superset of the language. The following
* actions have to be performed to complete program syntax checking:
*
* 1) Check that modifiers applied to a class, interface, field,
* or constructor are allowed in respectively a class, inteface,
* field or constructor declaration. For example, a class
* declaration should not allow other modifiers than abstract,
* final and public.
*
* 2) For an expression statement, check it is either increment, or
* decrement, or assignment expression.
*
* 3) Check that type expression in a cast operator indicates a type.
* Some of the compilers that I have tested will allow simultaneous
* use of identically named type and variable in the same scope
* depending on context.
*
* 4) Change lexical definition to change '[' optionally followed by
* any number of white-space characters immediately followed by ']'
* to OP_DIM token. I defined this token as [\[]{white_space}*[\]]
* in the lexer.
*
*------------------------------------------------------------------
*
* UNRESOLVED SHIFT/REDUCE CONFLICTS
*
* Dangling else in if-then-else
*
*------------------------------------------------------------------
*/
%}
%token ABSTRACT
%token BOOLEAN BREAK BYTE BYVALUE
%token CASE CAST CATCH CHAR CLASS CONST CONTINUE
%token DEFAULT DO DOUBLE
%token ELSE EXTENDS
%token FINAL FINALLY FLOAT FOR FUTURE
%token GENERIC GOTO
%token IF IMPLEMENTS IMPORT INNER INSTANCEOF INT INTERFACE
%token LONG
%token NATIVE NEW JNULL
%token OPERATOR OUTER
%token PACKAGE PRIVATE PROTECTED PUBLIC
%token REST RETURN
%token SHORT STATIC SUPER SWITCH SYNCHRONIZED
%token THIS THROW THROWS TRANSIENT TRY
%token VAR VOID VOLATILE
%token WHILE
%token OP_INC OP_DEC
%token OP_SHL OP_SHR OP_SHRR
%token OP_GE OP_LE OP_EQ OP_NE
%token OP_LAND OP_LOR
%token OP_DIM
%token ASS_MUL ASS_DIV ASS_MOD ASS_ADD ASS_SUB
%token ASS_SHL ASS_SHR ASS_SHRR ASS_AND ASS_XOR ASS_OR
%token IDENTIFIER LITERAL BOOLLIT
公布Java的词法文件和语法文件!
%{
/**************************************************************/
/* This file contains a restricted lexer for java language. */
/* The lexer will scan java programs in ASCII without unicode */
/* characters and/or unicode escape sequences. */
/* It is provided only to enable the grammar user to test it */
/* right away. */
/**************************************************************/
#include <YTAB.H>
%}