//### This file created by BYACC 1.8(/Java extension 1.14) //### Java capabilities added 7 Jan 97, Bob Jamison //### Updated : 27 Nov 97 -- Bob Jamison, Joe Nieten //### 01 Jan 98 -- Bob Jamison -- fixed generic semantic constructor //### 01 Jun 99 -- Bob Jamison -- added Runnable support //### 06 Aug 00 -- Bob Jamison -- made state variables class-global //### 03 Jan 01 -- Bob Jamison -- improved flags, tracing //### 16 May 01 -- Bob Jamison -- added custom stack sizing //### 04 Mar 02 -- Yuval Oren -- improved java performance, added options //### 14 Mar 02 -- Tomas Hurka -- -d support, static initializer workaround //### Please send bug reports to tom@hukatronic.cz //### static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/90"; package net.sf.nmedit.jpdl2.format; //#line 2 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" import java.io.*; import net.sf.nmedit.jpdl2.impl.*; import java.util.ArrayList; import java.util.List; import net.sf.nmedit.jpdl2.*; import net.sf.nmedit.jpdl2.dom.*; import net.sf.nmedit.jpdl2.utils.*; //#line 25 "PDL2Parser.java" public class PDL2Parser { boolean yydebug; //do I want debug output? int yynerrs; //number of errors so far int yyerrflag; //was there an error? int yychar; //the current working character //########## MESSAGES ########## //############################################################### // method: debug //############################################################### void debug(String msg) { if (yydebug) System.out.println(msg); } //########## STATE STACK ########## final static int YYSTACKSIZE = 500; //maximum stack size int statestk[] = new int[YYSTACKSIZE]; //state stack int stateptr; int stateptrmax; //highest index of stackptr int statemax; //state when highest index reached //############################################################### // methods: state stack push,pop,drop,peek //############################################################### final void state_push(int state) { try { stateptr++; statestk[stateptr]=state; } catch (ArrayIndexOutOfBoundsException e) { int oldsize = statestk.length; int newsize = oldsize * 2; int[] newstack = new int[newsize]; System.arraycopy(statestk,0,newstack,0,oldsize); statestk = newstack; statestk[stateptr]=state; } } final int state_pop() { return statestk[stateptr--]; } final void state_drop(int cnt) { stateptr -= cnt; } final int state_peek(int relative) { return statestk[stateptr-relative]; } //############################################################### // method: init_stacks : allocate and prepare stacks //############################################################### final boolean init_stacks() { stateptr = -1; val_init(); return true; } //############################################################### // method: dump_stacks : show n levels of the stacks //############################################################### void dump_stacks(int count) { int i; System.out.println("=index==state====value= s:"+stateptr+" v:"+valptr); for (i=0;i<count;i++) System.out.println(" "+i+" "+statestk[i]+" "+valstk[i]); System.out.println("======================"); } //########## SEMANTIC VALUES ########## //public class PDL2ParserVal is defined in PDL2ParserVal.java String yytext;//user variable to return contextual strings PDL2ParserVal yyval; //used to return semantic vals from action routines PDL2ParserVal yylval;//the 'lval' (result) I got from yylex() PDL2ParserVal valstk[]; int valptr; //############################################################### // methods: value stack push,pop,drop,peek. //############################################################### void val_init() { valstk=new PDL2ParserVal[YYSTACKSIZE]; yyval=new PDL2ParserVal(); yylval=new PDL2ParserVal(); valptr=-1; } void val_push(PDL2ParserVal val) { if (valptr>=YYSTACKSIZE) return; valstk[++valptr]=val; } PDL2ParserVal val_pop() { if (valptr<0) return new PDL2ParserVal(); return valstk[valptr--]; } void val_drop(int cnt) { int ptr; ptr=valptr-cnt; if (ptr<0) return; valptr = ptr; } PDL2ParserVal val_peek(int relative) { int ptr; ptr=valptr-relative; if (ptr<0) return new PDL2ParserVal(); return valstk[ptr]; } //#### end semantic value section #### public final static short NL=257; public final static short DEC_INTEGER_LITERAL=258; public final static short HEX_INTEGER_LITERAL=259; public final static short DUAL_INTEGER_LITERAL=260; public final static short STRING_LITERAL=261; public final static short BOOLEAN_LITERAL=262; public final static short LABEL=263; public final static short PACKETREF=264; public final static short INLINEPACKETREF=265; public final static short IDENTIFIER=266; public final static short TK_LSHIFT=267; public final static short TK_RSHIFT=268; public final static short TK_URSHIFT=269; public final static short CMP_EQ=270; public final static short CMP_NEQ=271; public final static short CMP_LT=272; public final static short CMP_LEQ=273; public final static short CMP_GT=274; public final static short CMP_GEQ=275; public final static short ASSIGN=276; public final static short CAST_TO_INT=277; public final static short CAST_TO_BOOLEAN=278; public final static short IF=279; public final static short TKDOLLAR=280; public final static short TK_MESSAGEID=281; public final static short TK_FAIL=282; public final static short TK_SWITCH=283; public final static short TK_CASE=284; public final static short TK_DEFAULT=285; public final static short TK_PLUS=286; public final static short TK_TIMES=287; public final static short TK_MINUS=288; public final static short TK_DIVIDE=289; public final static short TK_PERCENT=290; public final static short TK_AND=291; public final static short TK_OR=292; public final static short TK_XOR=293; public final static short TK_TILDE=294; public final static short TK_NOT=295; public final static short TK_EQ=296; public final static short TK_INTERROGATIONMARK=297; public final static short NEG=298; public final static short YYERRCODE=256; final static short yylhs[] = { -1, 0, 0, 0, 26, 27, 4, 4, 44, 2, 2, 3, 3, 11, 11, 11, 11, 42, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 37, 38, 39, 40, 40, 45, 41, 46, 41, 36, 47, 35, 35, 34, 13, 15, 14, 19, 20, 18, 17, 17, 16, 10, 10, 12, 23, 24, 25, 29, 29, 30, 48, 30, 49, 21, 28, 28, 50, 28, 31, 31, 22, 1, 1, 1, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 33, 33, 6, 5, 43, 43, 43, 43, 43, }; final static short yylen[] = { 2, 0, 1, 2, 3, 1, 1, 2, 0, 5, 3, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 2, 0, 5, 0, 4, 3, 0, 4, 3, 4, 3, 1, 3, 1, 2, 5, 1, 3, 2, 1, 2, 3, 1, 1, 2, 1, 1, 1, 0, 3, 0, 6, 1, 2, 0, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 7, 2, 1, 1, 1, 1, 1, }; final static short yydefred[] = { 0, 0, 0, 0, 0, 5, 0, 2, 0, 0, 17, 7, 0, 3, 0, 4, 10, 0, 75, 76, 77, 11, 18, 58, 59, 0, 0, 0, 32, 0, 16, 15, 0, 64, 42, 0, 26, 0, 55, 31, 0, 22, 0, 23, 49, 24, 25, 63, 19, 20, 21, 0, 61, 0, 62, 27, 28, 29, 30, 0, 0, 13, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 14, 0, 60, 0, 56, 54, 0, 0, 72, 9, 0, 46, 48, 105, 106, 107, 0, 0, 103, 0, 0, 0, 0, 0, 104, 80, 0, 79, 74, 0, 81, 0, 0, 0, 65, 68, 0, 41, 0, 57, 0, 53, 0, 0, 0, 0, 108, 109, 101, 99, 100, 0, 116, 115, 112, 113, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 45, 34, 69, 0, 44, 0, 0, 0, 39, 33, 36, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 96, 97, 0, 0, 0, 0, 0, 43, 51, 37, 0, 0, 0, 67, 71, 0, 40, 0, 38, 0, 110, }; final static short yydgoto[] = { 2, 96, 3, 4, 5, 161, 97, 98, 99, 100, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 101, 48, 49, 50, 6, 7, 106, 51, 52, 53, 54, 102, 55, 70, 56, 57, 58, 59, 116, 117, 8, 129, 17, 189, 184, 71, 69, 179, 151, }; final static short yysindex[] = { -252, -250, 0, -246, -237, 0, -246, 0, -247, -13, 0, 0, -6, 0, -229, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, -49, 4, 16, 0, 17, 0, 0, -208, 0, 0, -47, 0, -226, 0, 0, -236, 0, -227, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 19, 0, 0, 0, 0, 0, -43, -180, 0, -229, 87, -178, 87, 26, -236, 0, 312, -36, 7, 0, -229, 0, 30, 0, 0, 49, -229, 0, 0, -259, 0, 0, 0, 0, 0, 87, 87, 0, 87, 87, 87, 87, -200, 0, 0, -139, 0, 0, 55, 0, 56, 116, -30, 0, 0, 7, 0, -193, 0, 87, 0, -229, 43, -25, -259, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 44, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 0, 0, 0, 0, 7, 0, 7, 152, 47, 0, 0, 0, 0, 87, 44, -216, -216, -216, -106, -106, -106, -106, -106, -106, -239, 0, -239, 0, 0, -222, -222, -222, 312, -23, 0, 0, 0, 312, -139, 44, 0, 0, 312, 0, 44, 0, 14, 0, }; final static short yyrindex[] = { 108, -266, 0, 109, 0, 0, 0, 0, -237, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 433, 444, 453, -38, 99, 411, 468, 474, 488, 190, 0, 250, 0, 0, 317, 387, 396, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; final static short yygindex[] = { 0, -10, 0, 0, 110, -149, 0, 685, 0, 0, 0, 0, 77, 0, -15, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 112, -161, -63, 0, -45, -67, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; final static int YYTABLESIZE=845; static short yytable[]; static { yytable();} static void yytable(){ yytable = new short[]{ 47, 47, 107, 82, 21, 109, 80, 35, 110, 62, 17, 73, 186, 73, 1, 111, 9, 67, 187, 47, 10, 82, 77, 190, 17, 114, 115, 75, 192, 18, 19, 20, 18, 19, 20, 52, 52, 191, 74, 12, 66, 35, 193, 14, 63, 152, 15, 34, 140, 111, 142, 143, 84, 16, 52, 82, 64, 65, 66, 35, 78, 35, 79, 111, 139, 140, 141, 142, 143, 113, 139, 140, 141, 142, 143, 144, 145, 146, 81, 73, 82, 83, 8, 103, 62, 47, 124, 125, 73, 112, 181, 126, 127, 128, 70, 150, 147, 148, 35, 153, 157, 156, 188, 160, 155, 183, 180, 194, 1, 6, 78, 35, 107, 11, 76, 68, 158, 107, 13, 0, 52, 0, 107, 0, 0, 0, 0, 94, 130, 131, 132, 133, 134, 135, 136, 137, 138, 0, 0, 0, 83, 35, 0, 35, 0, 0, 0, 139, 140, 141, 142, 143, 144, 145, 146, 0, 0, 149, 83, 0, 0, 130, 131, 132, 0, 0, 159, 0, 0, 35, 0, 0, 0, 0, 35, 0, 0, 0, 95, 35, 139, 140, 141, 142, 143, 144, 145, 146, 0, 0, 0, 0, 83, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 0, 0, 47, 47, 47, 47, 60, 0, 0, 0, 91, 82, 82, 82, 82, 82, 82, 61, 47, 72, 47, 47, 47, 47, 47, 47, 47, 0, 91, 47, 0, 47, 52, 52, 52, 108, 47, 52, 52, 52, 52, 0, 0, 0, 18, 19, 20, 0, 0, 22, 23, 24, 25, 52, 0, 52, 52, 52, 52, 52, 52, 52, 91, 0, 52, 26, 52, 27, 28, 29, 92, 52, 30, 31, 0, 0, 32, 0, 0, 8, 8, 8, 0, 33, 8, 8, 8, 8, 92, 0, 0, 70, 70, 70, 0, 0, 70, 70, 70, 70, 8, 0, 8, 8, 8, 0, 0, 8, 8, 0, 0, 8, 70, 0, 70, 70, 70, 0, 8, 70, 70, 0, 92, 70, 18, 19, 20, 0, 85, 86, 70, 34, 87, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 88, 89, 0, 90, 0, 83, 83, 83, 83, 83, 83, 91, 93, 0, 0, 0, 0, 92, 93, 130, 131, 132, 133, 134, 135, 136, 137, 138, 130, 131, 132, 133, 134, 135, 136, 137, 138, 0, 139, 140, 141, 142, 143, 144, 145, 146, 93, 139, 140, 141, 142, 143, 144, 145, 146, 130, 131, 132, 133, 134, 135, 136, 137, 138, 94, 0, 0, 0, 0, 0, 0, 105, 0, 98, 139, 140, 141, 142, 143, 144, 145, 146, 94, 0, 0, 0, 0, 0, 84, 0, 0, 98, 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, 0, 0, 84, 0, 0, 0, 88, 0, 91, 0, 91, 0, 94, 91, 91, 91, 0, 89, 0, 0, 0, 98, 0, 0, 88, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 89, 84, 0, 0, 0, 0, 85, 0, 0, 90, 0, 0, 86, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 88, 85, 0, 87, 0, 0, 0, 86, 0, 0, 92, 89, 92, 0, 0, 92, 92, 92, 0, 0, 90, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 86, 0, 0, 18, 19, 20, 0, 0, 22, 23, 24, 25, 0, 0, 87, 0, 0, 93, 93, 93, 93, 93, 93, 93, 93, 93, 27, 28, 29, 0, 0, 30, 31, 0, 0, 32, 0, 0, 0, 0, 0, 93, 93, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, 94, 94, 94, 94, 94, 94, 94, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 0, 0, 0, 0, 0, 94, 94, 94, 84, 84, 84, 84, 84, 84, 98, 98, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, 0, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 104, 0, 0, 0, 0, 0, 0, 0, 87, 87, 87, 87, 87, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, 0, 120, 121, 122, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, }; } static short yycheck[]; static { yycheck(); } static void yycheck() { yycheck = new short[] { 40, 41, 69, 41, 14, 41, 51, 17, 71, 58, 276, 58, 161, 59, 266, 59, 266, 32, 179, 59, 266, 59, 37, 184, 290, 284, 285, 37, 189, 258, 259, 260, 258, 259, 260, 40, 41, 186, 264, 276, 266, 51, 191, 290, 40, 108, 59, 40, 287, 93, 289, 290, 62, 59, 59, 93, 40, 40, 266, 69, 296, 71, 289, 73, 286, 287, 288, 289, 290, 79, 286, 287, 288, 289, 290, 291, 292, 293, 59, 125, 123, 261, 40, 261, 58, 125, 286, 287, 58, 40, 153, 291, 292, 293, 40, 125, 41, 41, 108, 292, 125, 58, 125, 59, 114, 58, 151, 93, 0, 0, 41, 125, 179, 3, 37, 32, 117, 184, 6, -1, 125, -1, 189, -1, -1, -1, -1, 40, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, -1, 41, 151, -1, 153, -1, -1, -1, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, 41, 59, -1, -1, 267, 268, 269, -1, -1, 41, -1, -1, 179, -1, -1, -1, -1, 184, -1, -1, -1, 91, 189, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, 93, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 258, 259, 260, -1, -1, 263, 264, 265, 266, 276, -1, -1, -1, 41, 270, 271, 272, 273, 274, 275, 287, 279, 287, 281, 282, 283, 284, 285, 286, 287, -1, 59, 290, -1, 292, 258, 259, 260, 292, 297, 263, 264, 265, 266, -1, -1, -1, 258, 259, 260, -1, -1, 263, 264, 265, 266, 279, -1, 281, 282, 283, 284, 285, 286, 287, 93, -1, 290, 279, 292, 281, 282, 283, 41, 297, 286, 287, -1, -1, 290, -1, -1, 258, 259, 260, -1, 297, 263, 264, 265, 266, 59, -1, -1, 258, 259, 260, -1, -1, 263, 264, 265, 266, 279, -1, 281, 282, 283, -1, -1, 286, 287, -1, -1, 290, 279, -1, 281, 282, 283, -1, 297, 286, 287, -1, 93, 290, 258, 259, 260, -1, 262, 263, 297, 40, 266, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, 277, 278, -1, 280, -1, 270, 271, 272, 273, 274, 275, 288, 59, -1, -1, -1, -1, 294, 295, 267, 268, 269, 270, 271, 272, 273, 274, 275, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, 286, 287, 288, 289, 290, 291, 292, 293, 93, 286, 287, 288, 289, 290, 291, 292, 293, 267, 268, 269, 270, 271, 272, 273, 274, 275, 41, -1, -1, -1, -1, -1, -1, 123, -1, 41, 286, 287, 288, 289, 290, 291, 292, 293, 59, -1, -1, -1, -1, -1, 41, -1, -1, 59, -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, -1, -1, 59, -1, -1, -1, 41, -1, 286, -1, 288, -1, 93, 291, 292, 293, -1, 41, -1, -1, -1, 93, -1, -1, 59, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 59, 93, -1, -1, -1, -1, 41, -1, -1, 59, -1, -1, 41, -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, 93, 59, -1, 41, -1, -1, -1, 59, -1, -1, 286, 93, 288, -1, -1, 291, 292, 293, -1, -1, 93, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, 93, -1, -1, 258, 259, 260, -1, -1, 263, 264, 265, 266, -1, -1, 93, -1, -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, 281, 282, 283, -1, -1, 286, 287, -1, -1, 290, -1, -1, -1, -1, -1, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, -1, -1, -1, -1, 291, 292, 293, 270, 271, 272, 273, 274, 275, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, 267, 268, 269, 270, 271, 272, 273, 274, 275, 267, 268, 269, 270, 271, 272, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, 271, 272, 273, 274, 275, 270, 271, 272, 273, 274, 275, 65, -1, -1, -1, -1, -1, -1, -1, 270, 271, 272, 273, 274, 275, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, -1, 91, 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, }; } final static short YYFINAL=2; final static short YYMAXTOKEN=298; final static String yyname[] = { "end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,"'('","')'",null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,"':'","';'", null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, "'['",null,"']'",null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,"'{'",null,"'}'",null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,"NL","DEC_INTEGER_LITERAL", "HEX_INTEGER_LITERAL","DUAL_INTEGER_LITERAL","STRING_LITERAL","BOOLEAN_LITERAL", "LABEL","PACKETREF","INLINEPACKETREF","IDENTIFIER","TK_LSHIFT","TK_RSHIFT", "TK_URSHIFT","CMP_EQ","CMP_NEQ","CMP_LT","CMP_LEQ","CMP_GT","CMP_GEQ","ASSIGN", "CAST_TO_INT","CAST_TO_BOOLEAN","IF","TKDOLLAR","TK_MESSAGEID","TK_FAIL", "TK_SWITCH","TK_CASE","TK_DEFAULT","TK_PLUS","TK_TIMES","TK_MINUS","TK_DIVIDE", "TK_PERCENT","TK_AND","TK_OR","TK_XOR","TK_TILDE","TK_NOT","TK_EQ", "TK_INTERROGATIONMARK","NEG", }; final static String yyrule[] = { "$accept : pdldocument", "pdldocument :", "pdldocument : pdlbody", "pdldocument : pdlheader pdlbody", "pdlheader : IDENTIFIER IDENTIFIER ';'", "pdlbody : PacketDeclList", "PacketDeclList : PacketDecl", "PacketDeclList : PacketDecl PacketDeclList", "$$1 :", "PacketDecl : PacketDeclStart ASSIGN $$1 ItemList ';'", "PacketDecl : PacketDeclStart ASSIGN ';'", "PacketDeclStart : PacketName TK_PERCENT INTEGER_LITERAL", "PacketDeclStart : PacketName", "Multiplicity : IDENTIFIER TK_TIMES", "Multiplicity : INTEGER_LITERAL TK_TIMES", "Multiplicity : TK_TIMES", "Multiplicity : TK_PLUS", "PacketName : IDENTIFIER", "SimpleItem : LABEL", "SimpleItem : PacketRef", "SimpleItem : InlinePacketRef", "SimpleItem : PacketRefList", "SimpleItem : Variable", "SimpleItem : VariableList", "SimpleItem : ImplicitVariable", "SimpleItem : ImplicitAnonymVariable", "SimpleItem : Constant", "SimpleItem : MessageId", "SimpleItem : ChoiceStatement", "SimpleItem : FailStatement", "SimpleItem : SwitchStatement", "SimpleItem : StringDef", "FailStatement : TK_FAIL", "SwitchStatement : SwitchStatementHeader '{' SwitchCaseList '}'", "SwitchStatementHeader : TK_SWITCH '(' expression ')'", "SwitchCaseList : CaseStatement", "SwitchCaseList : CaseStatement SwitchCaseList", "$$2 :", "CaseStatement : TK_CASE INTEGER_LITERAL ':' $$2 Block", "$$3 :", "CaseStatement : TK_DEFAULT ':' $$3 Block", "ChoiceStatement : '(' Choice ')'", "$$4 :", "Choice : $$4 Item TK_OR Item", "Choice : Choice TK_OR Item", "MessageId : TK_MESSAGEID '(' STRING_LITERAL ')'", "StringDef : IDENTIFIER ASSIGN STRING_LITERAL", "Variable : RawVariable", "RawVariable : IDENTIFIER ':' INTEGER_LITERAL", "ImplicitVariable : GetImplicitVariable", "ImplicitAnonymVariable : TK_PERCENT GetImplicitVariable", "GetImplicitVariable : RawVariable TK_EQ '(' expression ')'", "VariableList : RawVariableList", "VariableList : RawVariableList TK_DIVIDE INTEGER_LITERAL", "RawVariableList : Multiplicity RawVariable", "Constant : ConstantWithoutMuliplicity", "Constant : Multiplicity ConstantWithoutMuliplicity", "ConstantWithoutMuliplicity : INTEGER_LITERAL ':' INTEGER_LITERAL", "PacketRef : PACKETREF", "InlinePacketRef : INLINEPACKETREF", "PacketRefList : Multiplicity PACKETREF", "Item : BlockItem", "Item : SimpleItem", "BlockItem : IfStatement", "$$5 :", "BlockItem : TK_INTERROGATIONMARK $$5 Block", "$$6 :", "IfStatement : IF '(' IfExpression ')' $$6 Block", "Block : SimpleItem", "Block : '{' '}'", "$$7 :", "Block : '{' $$7 ItemList '}'", "ItemList : Item ItemList", "ItemList : Item", "IfExpression : compiled_expression", "INTEGER_LITERAL : DEC_INTEGER_LITERAL", "INTEGER_LITERAL : HEX_INTEGER_LITERAL", "INTEGER_LITERAL : DUAL_INTEGER_LITERAL", "compiled_expression : expression", "expression : ConstExpr", "expression : StreamOp", "expression : TypeCastExpr", "expression : expression CMP_EQ expression", "expression : expression CMP_NEQ expression", "expression : expression CMP_LT expression", "expression : expression CMP_LEQ expression", "expression : expression CMP_GT expression", "expression : expression CMP_GEQ expression", "expression : expression TK_LSHIFT expression", "expression : expression TK_RSHIFT expression", "expression : expression TK_URSHIFT expression", "expression : expression TK_PLUS expression", "expression : expression TK_MINUS expression", "expression : expression TK_AND expression", "expression : expression TK_OR expression", "expression : expression TK_TIMES expression", "expression : expression TK_DIVIDE expression", "expression : expression TK_PERCENT expression", "expression : expression TK_XOR expression", "expression : TK_TILDE expression", "expression : TK_NOT expression", "expression : TK_MINUS expression", "expression : '(' expression ')'", "ConstExpr : TKDOLLAR", "ConstExpr : INTEGER_LITERAL", "ConstExpr : BOOLEAN_LITERAL", "ConstExpr : LABEL", "ConstExpr : IDENTIFIER", "TypeCastExpr : CAST_TO_INT expression", "TypeCastExpr : CAST_TO_BOOLEAN expression", "StreamOp : '[' StreamOpToken NextExpression NextExpression NextExpression NextExpression ']'", "NextExpression : ';' expression", "StreamOpToken : TK_AND", "StreamOpToken : TK_OR", "StreamOpToken : TK_XOR", "StreamOpToken : TK_TIMES", "StreamOpToken : TK_PLUS", }; //#line 363 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" /* a reference to the lexer object */ private PDL2Lexer lexer; private PDLDocumentImpl pdldoc = new PDLDocumentImpl(); public PDLDocument getDocument() { return pdldoc; } private List<Expression> exprStack = new ArrayList<Expression>(); private void epush(Expression e) { exprStack.add(e); } public Expression epop1() { Expression e = exprStack.remove(exprStack.size()-2); return e; } public Expression epop() { Expression e = exprStack.remove(exprStack.size()-1); return e; } public Expression epopFinal() { if(exprStack.size()>1) throw new IllegalStateException(); return epop(); } // PDLBlock and choice elements private List<Object> bstack = new ArrayList<Object>(); private static final boolean PDLDebug = false; private void bpush(Object b) { if (PDLDebug) System.out.println("bpush:"+b); if ((b instanceof PDLBlock) || (b instanceof PDLChoiceImpl) || (b instanceof PDLSwitchStatementImpl) || (b instanceof PDLCaseStatementImpl)) bstack.add(b); else throw new ClassCastException(); } private void bpop() { if (PDLDebug) System.out.println("bpop"); bstack.remove(bstack.size()-1); } private void badd(Object item) throws PDLException { if (item == null) throw new PDLException("error in parser: cannot add null to parent block"); if (PDLDebug) System.out.println("badd:"+item); Object p = bstack.get(bstack.size()-1); if (p instanceof PDLBlock) ((PDLBlock)p).add((PDLItem)item); else if (p instanceof PDLChoiceImpl) ((PDLChoiceImpl)p).add((PDLItem)item); else if (p instanceof PDLCaseStatementImpl) ((PDLCaseStatementImpl)p).add((PDLItem)item); else if (p instanceof PDLSwitchStatementImpl) ((PDLSwitchStatementImpl)p).add((PDLCaseStatementImpl)item); else throw new ClassCastException("could not determine type of"+item.getClass()); } private PDLPacketRefImpl textToPacketRef(String s) { int i = s.indexOf('$'); return new PDLPacketRefImpl(pdldoc, s.substring(0,i), s.substring(i+1), false); } private PDLPacketRefImpl textToInlinePacketRef(String s) { return new PDLPacketRefImpl(pdldoc, s.substring(0,s.length()-2), null, true); } private void registerPacketDecl(PDLPacketDecl p) throws PDLException { try { pdldoc.add(p); } catch (IllegalArgumentException e) { yyerror("multiple declarations of packet: "+p.getName()); throw e; // in case no exception is thrown } } public void parse() throws PDLException { yyparse(); PDLDocumentVerifier verifier = new PDLDocumentVerifier(pdldoc); verifier.verify(); } /* interface to the lexer */ private int yylex () { int yyl_return = -1; try { yyl_return = lexer.yylex(); } catch (IOException e) { System.err.println("IO error :"+e); } return yyl_return; } /* error reporting */ public void yyerror (String error) throws PDLException { throw new PDLException( "[line "+ lexer.getLineNumber()+":"+lexer.getColumnNumber()+"] "+error); } /* lexer is created in the constructor */ public PDL2Parser(Reader r) { lexer = new PDL2Lexer(r, this); } /* that's how you use the parser */ public static void main(String args[]) throws IOException, PDLException { PDL2Parser yyparser = new PDL2Parser(new FileReader(args[0])); yyparser.yyparse(); } //#line 716 "PDL2Parser.java" //############################################################### // method: yylexdebug : check lexer state //############################################################### void yylexdebug(int state,int ch) { String s=null; if (ch < 0) ch=0; if (ch <= YYMAXTOKEN) //check index bounds s = yyname[ch]; //now get it if (s==null) s = "illegal-symbol"; debug("state "+state+", reading "+ch+" ("+s+")"); } //The following are now global, to aid in error reporting int yyn; //next next thing to do int yym; // int yystate; //current parsing state from state table String yys; //current token string //############################################################### // method: yyparse : parse input and execute indicated items //############################################################### int yyparse() throws PDLException { boolean doaction; init_stacks(); yynerrs = 0; yyerrflag = 0; yychar = -1; //impossible char forces a read yystate=0; //initial state state_push(yystate); //save it val_push(yylval); //save empty value while (true) //until parsing is done, either correctly, or w/error { doaction=true; //if (yydebug) debug("loop"); //#### NEXT ACTION (from reduction table) for (yyn=yydefred[yystate];yyn==0;yyn=yydefred[yystate]) { //if (yydebug) debug("yyn:"+yyn+" state:"+yystate+" yychar:"+yychar); if (yychar < 0) //we want a char? { yychar = yylex(); //get next token //if (yydebug) debug(" next yychar:"+yychar); //#### ERROR CHECK #### if (yychar < 0) //it it didn't work/error { yychar = 0; //change it to default string (no -1!) //if (yydebug) // yylexdebug(yystate,yychar); } }//yychar<0 yyn = yysindex[yystate]; //get amount to shift by (shift index) if ((yyn != 0) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { //if (yydebug) //debug("state "+yystate+", shifting to state "+yytable[yyn]); //#### NEXT STATE #### yystate = yytable[yyn];//we are in a new state state_push(yystate); //save it val_push(yylval); //push our lval as the input for next rule yychar = -1; //since we have 'eaten' a token, say we need another if (yyerrflag > 0) //have we recovered an error? --yyerrflag; //give ourselves credit doaction=false; //but don't process yet break; //quit the yyn=0 loop } yyn = yyrindex[yystate]; //reduce if ((yyn !=0 ) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { //we reduced! //if (yydebug) debug("reduce"); yyn = yytable[yyn]; doaction=true; //get ready to execute break; //drop down to actions } else //ERROR RECOVERY { if (yyerrflag==0) { yyerror("syntax error"); yynerrs++; } if (yyerrflag < 3) //low error count? { yyerrflag = 3; while (true) //do until break { if (stateptr<0) //check for under & overflow here { yyerror("stack underflow. aborting..."); //note lower case 's' return 1; } yyn = yysindex[state_peek(0)]; if ((yyn != 0) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { //if (yydebug) //debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" "); yystate = yytable[yyn]; state_push(yystate); val_push(yylval); doaction=false; break; } else { //if (yydebug) //debug("error recovery discarding state "+state_peek(0)+" "); if (stateptr<0) //check for under & overflow here { yyerror("Stack underflow. aborting..."); //capital 'S' return 1; } state_pop(); val_pop(); } } } else //discard this token { if (yychar == 0) return 1; //yyabort //if (yydebug) //{ //yys = null; //if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; //if (yys == null) yys = "illegal-symbol"; //debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")"); //} yychar = -1; //read another } }//end error recovery }//yyn=0 loop if (!doaction) //any reason not to proceed? continue; //skip action yym = yylen[yyn]; //get count of terminals on rhs //if (yydebug) //debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")"); if (yym>0) //if count of rhs not 'nil' yyval = val_peek(yym-1); //get current semantic value switch(yyn) { //########## USER-SUPPLIED ACTIONS ########## case 1: //#line 82 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" {} break; case 2: //#line 83 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" {} break; case 3: //#line 84 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" {} break; case 4: //#line 88 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { if (!val_peek(2).sval.equals("start")) throw new PDLException("'start' expected"); pdldoc.setStartPacketName(val_peek(1).sval); } break; case 5: //#line 92 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj=val_peek(0).obj; } break; case 8: //#line 103 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { /* action:before ItemList */ PDLPacketDeclImpl pdecl = (PDLPacketDeclImpl)val_peek(1).obj; bpush(pdecl); yyval.obj = pdecl; registerPacketDecl(pdecl); } break; case 9: //#line 112 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { /* action:after ItemList */ bpop(); } break; case 10: //#line 116 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { registerPacketDecl((PDLPacketDeclImpl)val_peek(2).obj); } break; case 11: //#line 120 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { int padding = val_peek(0).ival; if(padding<1) yyerror("padding must >=1: "+padding); yyval.obj = new PDLPacketDeclImpl(val_peek(2).sval, padding); } break; case 12: //#line 125 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj = new PDLPacketDeclImpl(val_peek(0).sval, 1); /* default padding = 1 */ } break; case 13: //#line 129 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj = new PDLMultiplicityImpl(val_peek(1).sval); } break; case 14: //#line 130 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj = new PDLMultiplicityImpl(val_peek(1).ival); } break; case 15: //#line 131 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyerror("*-multiplicity not implemented"); /*$$ = new PDLMultiplicityImpl(PDLMultiplicityType.NoneOrMany); */ } break; case 16: //#line 134 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyerror("+-multiplicity not implemented"); /*$$ = new PDLMultiplicityImpl(PDLMultiplicityType.OneOrMany); */ } break; case 18: //#line 144 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(new PDLInstructionImpl(PDLItemType.Label, val_peek(0).sval)); } break; case 32: //#line 161 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(new PDLInstructionImpl(PDLItemType.Fail)); } break; case 33: //#line 165 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { bpop(); } break; case 34: //#line 169 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLSwitchStatementImpl s = new PDLSwitchStatementImpl(epopFinal()); badd(s); bpush(s); } break; case 37: //#line 178 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLCaseStatementImpl c = new PDLCaseStatementImpl(false, val_peek(1).ival); badd(c); bpush(c); } break; case 38: //#line 178 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj=val_peek(1).obj; bpop(); } break; case 39: //#line 179 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLCaseStatementImpl c = new PDLCaseStatementImpl(true, -1); badd(c); bpush(c); } break; case 40: //#line 179 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj=val_peek(1).obj; bpop(); } break; case 41: //#line 183 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj=val_peek(1).obj; } break; case 42: //#line 187 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLChoiceImpl m = new PDLChoiceImpl(); badd(m); bpush(m); } break; case 43: //#line 187 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { bpop(); } break; case 44: //#line 188 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj = val_peek(2).obj; } break; case 45: //#line 192 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(new PDLInstructionImpl(PDLItemType.MessageId, val_peek(1).sval)); } break; case 46: //#line 196 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(new PDLInstructionImpl(PDLItemType.StringDef, val_peek(2).sval, val_peek(0).sval)); } break; case 47: //#line 200 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(val_peek(0).obj); } break; case 48: //#line 204 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLUtils.checkBitcount(val_peek(0).ival); yyval.obj=PDLVariableImpl.create(val_peek(2).sval, val_peek(0).ival); } break; case 49: //#line 209 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(val_peek(0).obj); } break; case 50: //#line 214 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLVariableImpl v = (PDLVariableImpl) val_peek(0).obj; v.setAnonym(); badd(v); } break; case 51: //#line 218 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLFunction function; try { function = new PDLFunctionImpl(epopFinal()); } catch(IllegalArgumentException iae) {throw new PDLException(iae);} yyval.obj = PDLVariableImpl.createImplicit((PDLVariable)val_peek(4).obj, function, false); } break; case 52: //#line 224 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(val_peek(0).obj); } break; case 53: //#line 225 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLVariableImpl v = (PDLVariableImpl) val_peek(2).obj; v.setTerminal(val_peek(0).ival); badd(val_peek(2).obj); } break; case 54: //#line 229 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj= PDLVariableImpl.createVariableList((PDLVariable)val_peek(0).obj, (PDLMultiplicity)val_peek(1).obj); } break; case 55: //#line 233 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(val_peek(0).obj); } break; case 56: //#line 234 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { ((PDLConstantImpl)val_peek(0).obj).setMultiplicity((PDLMultiplicityImpl)val_peek(1).obj); badd(val_peek(0).obj); } break; case 57: //#line 238 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLUtils.checkBounds(val_peek(2).ival, val_peek(0).ival); yyval.obj = new PDLConstantImpl(val_peek(2).ival, val_peek(0).ival); } break; case 58: //#line 243 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(textToPacketRef(val_peek(0).sval)); } break; case 59: //#line 247 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(textToInlinePacketRef(val_peek(0).sval)); } break; case 60: //#line 251 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(new PDLPacketRefImpl(pdldoc, textToPacketRef(val_peek(0).sval), (PDLMultiplicity)val_peek(1).obj)); } break; case 63: //#line 260 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj=val_peek(0).obj; } break; case 64: //#line 261 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLOptionalImpl o = new PDLOptionalImpl(); badd(o); bpush(o); } break; case 65: //#line 261 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { bpop(); } break; case 66: //#line 265 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLConditionalImpl c = new PDLConditionalImpl((PDLCondition) val_peek(1).obj); badd(c); bpush(c); yyval.obj = c; } break; case 67: //#line 266 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { bpop(); } break; case 68: //#line 269 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { } break; case 69: //#line 270 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { badd(new PDLBlockImpl()); } break; case 70: //#line 271 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { PDLBlockImpl b = new PDLBlockImpl(); badd(b); bpush(b); } break; case 71: //#line 271 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { bpop(); } break; case 74: //#line 280 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { try {yyval.obj = new PDLCompiledCondition((Expression)val_peek(0).obj);} catch(IllegalArgumentException iae) {throw new PDLException(iae);} } break; case 78: //#line 290 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj = epopFinal(); } break; case 82: //#line 298 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.cmpEq ( epop1(), epop() )); } break; case 83: //#line 299 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.cmpNeq ( epop1(), epop() )); } break; case 84: //#line 300 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.cmpLt ( epop1(), epop() )); } break; case 85: //#line 301 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.cmpLEq ( epop1(), epop() )); } break; case 86: //#line 302 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.cmpGt ( epop1(), epop() )); } break; case 87: //#line 303 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.cmpGEq ( epop1(), epop() )); } break; case 88: //#line 305 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.shl ( epop1(), epop() )); } break; case 89: //#line 306 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.shr ( epop1(), epop() )); } break; case 90: //#line 307 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.ushr ( epop1(), epop() )); } break; case 91: //#line 309 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.add ( epop1(), epop() )); } break; case 92: //#line 310 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.minus ( epop1(), epop() )); } break; case 93: //#line 311 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.and ( epop1(), epop() )); } break; case 94: //#line 312 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.or ( epop1(), epop() )); } break; case 95: //#line 314 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.mul ( epop1(), epop() )); } break; case 96: //#line 315 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.div ( epop1(), epop() )); } break; case 97: //#line 316 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.mod ( epop1(), epop() )); } break; case 98: //#line 317 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.xor ( epop1(), epop() )); } break; case 99: //#line 319 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.inv ( epop() )); } break; case 100: //#line 320 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.inv ( epop() )); } break; case 101: //#line 321 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.neg ( epop() )); } break; case 102: //#line 323 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression( epop() )); } break; case 103: //#line 327 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression(Opcodes.fpush)); } break; case 104: //#line 328 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression(Opcodes.ipush, val_peek(0).ival )); } break; case 105: //#line 329 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression(Opcodes.bpush, val_peek(0).ival==1?true:false)); } break; case 106: //#line 330 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression(Opcodes.lpush, (String)val_peek(0).sval)); } break; case 107: //#line 331 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression(Opcodes.vpush, (String)val_peek(0).sval)); } break; case 108: //#line 335 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.castToInt((Expression) val_peek(0).obj)); } break; case 109: //#line 336 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(Expression.castToBoolean((Expression) val_peek(0).obj)); } break; case 110: //#line 345 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { epush(new Expression(val_peek(5).ival, (Expression)val_peek(4).obj, (Expression)val_peek(3).obj, (Expression)val_peek(2).obj, (Expression)val_peek(1).obj)); } break; case 111: //#line 351 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.obj=epopFinal(); } break; case 112: //#line 355 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.ival=Opcodes.land; } break; case 113: //#line 356 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.ival=Opcodes.lor; } break; case 114: //#line 357 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.ival=Opcodes.lxor; } break; case 115: //#line 358 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.ival=Opcodes.lmul; } break; case 116: //#line 359 "/home/christian/dev/nmedit/libs/jpdl2/format/pdl2.byaccj" { yyval.ival=Opcodes.ladd; } break; //#line 1237 "PDL2Parser.java" //########## END OF USER-SUPPLIED ACTIONS ########## }//switch //#### Now let's reduce... #### //if (yydebug) debug("reduce"); state_drop(yym); //we just reduced yylen states yystate = state_peek(0); //get new state val_drop(yym); //corresponding value drop yym = yylhs[yyn]; //select next TERMINAL(on lhs) if (yystate == 0 && yym == 0)//done? 'rest' state and at first TERMINAL { //if (yydebug) debug("After reduction, shifting from state 0 to state "+YYFINAL+""); yystate = YYFINAL; //explicitly say we're done state_push(YYFINAL); //and save it val_push(yyval); //also save the semantic value of parsing if (yychar < 0) //we want another character? { yychar = yylex(); //get next character if (yychar<0) yychar=0; //clean, if necessary //if (yydebug) //yylexdebug(yystate,yychar); } if (yychar == 0) //Good exit (if lex returns 0 ;-) break; //quit the loop--all DONE }//if yystate else //else not done yet { //get next state and push, for next yydefred[] yyn = yygindex[yym]; //find out where to go if ((yyn != 0) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; //get new state else yystate = yydgoto[yym]; //else go to new defred //if (yydebug) debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+""); state_push(yystate); //going again, so push state & val... val_push(yyval); //for next action } }//main loop return 0;//yyaccept!! } //## end of method parse() ###################################### //## run() --- for Thread ####################################### //## The -Jnorun option was used ## //## end of method run() ######################################## //## Constructors ############################################### /** * Default constructor. Turn off with -Jnoconstruct . */ public PDL2Parser() { //nothing to do } /** * Create a parser, setting the debug to true or false. * @param debugMe true for debugging, false for no debug. */ public PDL2Parser(boolean debugMe) { yydebug=debugMe; } //############################################################### } //################### END OF CLASS ##############################