From 158e7a4b1fd569064bc0b407041a4dfc1d0bd7a7 Mon Sep 17 00:00:00 2001 From: rtrimana Date: Mon, 7 Nov 2016 16:54:14 -0800 Subject: [PATCH] Extending parser for struct/enum (policy) definition files; Removing parser support for generics/template with 2 data types --- config/iotpolicy/enum.pol | 7 + config/iotpolicy/struct.pol | 7 + iotjava/iotpolicy/parser/Lexer.java | 318 +++++++------ iotjava/iotpolicy/parser/Parser.java | 681 ++++++++++++++------------- iotjava/iotpolicy/parser/sym.java | 11 +- others/javacup/iotparser.cup | 168 ++++--- others/jflex/iotparser.jflex | 2 + 7 files changed, 635 insertions(+), 559 deletions(-) create mode 100644 config/iotpolicy/enum.pol create mode 100644 config/iotpolicy/struct.pol diff --git a/config/iotpolicy/enum.pol b/config/iotpolicy/enum.pol new file mode 100644 index 0000000..c9e85b6 --- /dev/null +++ b/config/iotpolicy/enum.pol @@ -0,0 +1,7 @@ + +enum Enum { + + APPLE, + ORANGE, + GRAPE +} diff --git a/config/iotpolicy/struct.pol b/config/iotpolicy/struct.pol new file mode 100644 index 0000000..c4f80ec --- /dev/null +++ b/config/iotpolicy/struct.pol @@ -0,0 +1,7 @@ + +struct Struct { + + string name; + float value; + int year; +} diff --git a/iotjava/iotpolicy/parser/Lexer.java b/iotjava/iotpolicy/parser/Lexer.java index b3f3fd9..8751717 100644 --- a/iotjava/iotpolicy/parser/Lexer.java +++ b/iotjava/iotpolicy/parser/Lexer.java @@ -7,7 +7,6 @@ // Technische Universitaet Muenchen // Fakultaet fuer Informatik -package iotpolicy.parser; import java_cup.runtime.Symbol; import java_cup.runtime.ComplexSymbolFactory; @@ -64,17 +63,17 @@ public class Lexer implements java_cup.runtime.Scanner, sym { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\2\0\1\1\1\2\2\3\1\4\16\2\1\5\1\6"+ + "\2\0\1\1\1\2\2\3\1\4\17\2\1\5\1\6"+ "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+ - "\1\17\1\20\1\0\10\2\1\21\11\2\1\22\1\23"+ - "\1\24\1\25\1\26\25\2\1\27\1\30\3\2\1\31"+ - "\2\2\1\32\2\2\1\33\2\2\1\34\2\2\1\35"+ - "\7\2\1\36\2\2\1\37\2\2\1\40\1\41\1\42"+ - "\2\2\1\43\3\2\1\44\2\2\1\45\3\2\1\46"+ - "\1\47"; + "\1\17\1\20\1\0\11\2\1\21\11\2\1\22\1\23"+ + "\1\24\1\25\1\26\27\2\1\27\1\30\1\31\3\2"+ + "\1\32\2\2\1\33\2\2\1\34\3\2\1\35\2\2"+ + "\1\36\7\2\1\37\1\40\2\2\1\41\2\2\1\42"+ + "\1\43\1\44\2\2\1\45\3\2\1\46\2\2\1\47"+ + "\3\2\1\50\1\51"; private static int [] zzUnpackAction() { - int [] result = new int[127]; + int [] result = new int[134]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -101,23 +100,24 @@ public class Lexer implements java_cup.runtime.Scanner, sym { private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\51\0\122\0\173\0\244\0\122\0\122\0\315"+ "\0\366\0\u011f\0\u0148\0\u0171\0\u019a\0\u01c3\0\u01ec\0\u0215"+ - "\0\u023e\0\u0267\0\u0290\0\u02b9\0\u02e2\0\122\0\122\0\122"+ - "\0\122\0\122\0\122\0\122\0\122\0\122\0\u030b\0\122"+ - "\0\u0334\0\u035d\0\u0386\0\u03af\0\u03d8\0\u0401\0\u042a\0\u0453"+ - "\0\u047c\0\u04a5\0\173\0\u04ce\0\u04f7\0\u0520\0\u0549\0\u0572"+ - "\0\u059b\0\u05c4\0\u05ed\0\u0616\0\122\0\122\0\122\0\122"+ - "\0\u063f\0\u0668\0\u0691\0\u06ba\0\u06e3\0\u070c\0\u0735\0\u075e"+ + "\0\u023e\0\u0267\0\u0290\0\u02b9\0\u02e2\0\u030b\0\122\0\122"+ + "\0\122\0\122\0\122\0\122\0\122\0\122\0\122\0\u0334"+ + "\0\122\0\u035d\0\u0386\0\u03af\0\u03d8\0\u0401\0\u042a\0\u0453"+ + "\0\u047c\0\u04a5\0\u04ce\0\u04f7\0\173\0\u0520\0\u0549\0\u0572"+ + "\0\u059b\0\u05c4\0\u05ed\0\u0616\0\u063f\0\u0668\0\122\0\122"+ + "\0\122\0\122\0\u0691\0\u06ba\0\u06e3\0\u070c\0\u0735\0\u075e"+ "\0\u0787\0\u07b0\0\u07d9\0\u0802\0\u082b\0\u0854\0\u087d\0\u08a6"+ - "\0\u08cf\0\u08f8\0\u0921\0\u094a\0\u0973\0\u099c\0\173\0\173"+ - "\0\u09c5\0\u09ee\0\u0a17\0\173\0\u0a40\0\u0a69\0\173\0\u0a92"+ - "\0\u0abb\0\173\0\u0ae4\0\u0b0d\0\173\0\u0b36\0\u0b5f\0\173"+ - "\0\u0b88\0\u0bb1\0\u0bda\0\u0c03\0\u0c2c\0\u0c55\0\u0c7e\0\173"+ - "\0\u0ca7\0\u0cd0\0\173\0\u0cf9\0\u0d22\0\173\0\173\0\173"+ - "\0\u0d4b\0\u0d74\0\173\0\u0d9d\0\u0dc6\0\u0def\0\173\0\u0e18"+ - "\0\u0e41\0\173\0\u0e6a\0\u0e93\0\u0ebc\0\173\0\173"; + "\0\u08cf\0\u08f8\0\u0921\0\u094a\0\u0973\0\u099c\0\u09c5\0\u09ee"+ + "\0\u0a17\0\u0a40\0\173\0\173\0\173\0\u0a69\0\u0a92\0\u0abb"+ + "\0\173\0\u0ae4\0\u0b0d\0\173\0\u0b36\0\u0b5f\0\173\0\u0b88"+ + "\0\u0bb1\0\u0bda\0\173\0\u0c03\0\u0c2c\0\173\0\u0c55\0\u0c7e"+ + "\0\u0ca7\0\u0cd0\0\u0cf9\0\u0d22\0\u0d4b\0\173\0\173\0\u0d74"+ + "\0\u0d9d\0\173\0\u0dc6\0\u0def\0\173\0\173\0\173\0\u0e18"+ + "\0\u0e41\0\173\0\u0e6a\0\u0e93\0\u0ebc\0\173\0\u0ee5\0\u0f0e"+ + "\0\173\0\u0f37\0\u0f60\0\u0f89\0\173\0\173"; private static int [] zzUnpackRowMap() { - int [] result = new int[127]; + int [] result = new int[134]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -141,81 +141,85 @@ public class Lexer implements java_cup.runtime.Scanner, sym { private static final String ZZ_TRANS_PACKED_0 = "\1\3\1\4\1\3\1\5\1\6\1\7\1\6\1\10"+ - "\2\4\1\11\2\4\1\12\1\13\2\4\1\14\1\4"+ - "\1\15\1\16\1\17\1\4\1\20\1\21\1\22\1\23"+ - "\1\24\1\4\1\25\1\26\1\27\1\30\1\31\1\32"+ - "\1\33\1\34\1\35\1\36\1\3\1\0\3\37\1\0"+ - "\1\3\31\37\1\40\10\37\1\41\1\37\52\0\2\4"+ - "\4\0\27\4\17\0\1\42\45\0\2\4\4\0\1\4"+ - "\1\43\25\4\14\0\2\4\4\0\2\4\1\44\1\4"+ - "\1\45\22\4\14\0\2\4\4\0\11\4\1\46\15\4"+ - "\14\0\2\4\4\0\5\4\1\47\2\4\1\50\16\4"+ - "\14\0\2\4\4\0\5\4\1\51\21\4\14\0\2\4"+ - "\4\0\12\4\1\52\14\4\14\0\2\4\4\0\3\4"+ - "\1\53\23\4\14\0\2\4\4\0\5\4\1\54\3\4"+ - "\1\55\15\4\14\0\2\4\4\0\4\4\1\56\10\4"+ - "\1\57\11\4\14\0\2\4\4\0\2\4\1\60\24\4"+ - "\14\0\2\4\4\0\5\4\1\61\21\4\14\0\2\4"+ - "\4\0\17\4\1\62\7\4\14\0\2\4\4\0\11\4"+ - "\1\63\15\4\14\0\2\4\4\0\1\64\26\4\13\0"+ - "\3\37\2\0\31\37\1\0\10\37\1\0\1\37\10\0"+ - "\1\65\1\66\3\0\1\67\20\0\1\70\17\0\1\6"+ - "\44\0\2\4\4\0\2\4\1\71\24\4\14\0\2\4"+ - "\4\0\6\4\1\72\20\4\14\0\2\4\4\0\5\4"+ - "\1\73\21\4\14\0\2\4\4\0\25\4\1\74\1\4"+ - "\14\0\2\4\4\0\5\4\1\75\21\4\14\0\2\4"+ - "\4\0\2\4\1\76\24\4\14\0\2\4\4\0\1\4"+ - "\1\77\25\4\14\0\2\4\4\0\5\4\1\100\21\4"+ - "\14\0\2\4\4\0\17\4\1\101\7\4\14\0\2\4"+ - "\4\0\3\4\1\102\23\4\14\0\2\4\4\0\15\4"+ - "\1\103\11\4\14\0\2\4\4\0\23\4\1\104\3\4"+ - "\14\0\2\4\4\0\6\4\1\105\20\4\14\0\2\4"+ - "\4\0\1\106\26\4\14\0\2\4\4\0\7\4\1\107"+ - "\17\4\14\0\2\4\4\0\2\4\1\110\24\4\14\0"+ - "\2\4\4\0\2\4\1\111\24\4\14\0\2\4\4\0"+ - "\11\4\1\112\15\4\14\0\2\4\4\0\1\113\26\4"+ - "\14\0\2\4\4\0\6\4\1\114\20\4\14\0\2\4"+ - "\4\0\17\4\1\115\7\4\14\0\2\4\4\0\12\4"+ - "\1\116\14\4\14\0\2\4\4\0\11\4\1\117\15\4"+ - "\14\0\2\4\4\0\13\4\1\120\13\4\14\0\2\4"+ - "\4\0\15\4\1\121\11\4\14\0\2\4\4\0\7\4"+ - "\1\122\17\4\14\0\2\4\4\0\20\4\1\123\6\4"+ - "\14\0\2\4\4\0\6\4\1\124\20\4\14\0\2\4"+ - "\4\0\15\4\1\125\11\4\14\0\2\4\4\0\1\126"+ - "\26\4\14\0\2\4\4\0\16\4\1\127\10\4\14\0"+ - "\2\4\4\0\12\4\1\130\14\4\14\0\2\4\4\0"+ - "\4\4\1\131\22\4\14\0\2\4\4\0\4\4\1\132"+ - "\22\4\14\0\2\4\4\0\6\4\1\133\20\4\14\0"+ - "\2\4\4\0\1\4\1\134\25\4\14\0\2\4\4\0"+ - "\2\4\1\135\24\4\14\0\2\4\4\0\1\136\26\4"+ - "\14\0\2\4\4\0\11\4\1\137\15\4\14\0\2\4"+ - "\4\0\2\4\1\140\24\4\14\0\2\4\4\0\12\4"+ - "\1\141\14\4\14\0\2\4\4\0\6\4\1\142\20\4"+ - "\14\0\2\4\4\0\7\4\1\143\17\4\14\0\2\4"+ - "\4\0\1\4\1\144\25\4\14\0\2\4\4\0\1\145"+ - "\26\4\14\0\2\4\4\0\5\4\1\146\21\4\14\0"+ - "\2\4\4\0\14\4\1\147\12\4\14\0\2\4\4\0"+ - "\13\4\1\150\13\4\14\0\2\4\4\0\6\4\1\151"+ - "\20\4\14\0\2\4\4\0\15\4\1\152\11\4\14\0"+ - "\2\4\4\0\11\4\1\153\15\4\14\0\2\4\4\0"+ - "\1\154\26\4\14\0\2\4\4\0\1\155\26\4\14\0"+ - "\2\4\4\0\13\4\1\156\13\4\14\0\2\4\4\0"+ - "\20\4\1\157\6\4\14\0\2\4\4\0\16\4\1\160"+ - "\10\4\14\0\2\4\4\0\15\4\1\161\11\4\14\0"+ - "\2\4\4\0\11\4\1\162\15\4\14\0\2\4\4\0"+ - "\1\4\1\163\25\4\14\0\2\4\4\0\23\4\1\164"+ - "\3\4\14\0\2\4\4\0\12\4\1\165\14\4\14\0"+ - "\2\4\4\0\20\4\1\166\6\4\14\0\2\4\4\0"+ - "\3\4\1\167\23\4\14\0\2\4\4\0\2\4\1\170"+ - "\24\4\14\0\2\4\4\0\1\171\26\4\14\0\2\4"+ - "\4\0\11\4\1\172\15\4\14\0\2\4\4\0\1\173"+ - "\26\4\14\0\2\4\4\0\2\4\1\174\24\4\14\0"+ - "\2\4\4\0\5\4\1\175\21\4\14\0\2\4\4\0"+ - "\10\4\1\176\16\4\14\0\2\4\4\0\1\4\1\177"+ - "\25\4\13\0"; + "\2\4\1\11\2\4\1\12\1\13\1\4\1\14\1\15"+ + "\1\4\1\16\1\17\1\20\1\4\1\21\1\22\1\23"+ + "\1\24\1\25\1\4\1\26\1\27\1\30\1\31\1\32"+ + "\1\33\1\34\1\35\1\36\1\37\1\3\1\0\3\40"+ + "\1\0\1\3\31\40\1\41\10\40\1\42\1\40\52\0"+ + "\2\4\4\0\27\4\17\0\1\43\45\0\2\4\4\0"+ + "\1\4\1\44\25\4\14\0\2\4\4\0\2\4\1\45"+ + "\1\4\1\46\22\4\14\0\2\4\4\0\11\4\1\47"+ + "\15\4\14\0\2\4\4\0\5\4\1\50\2\4\1\51"+ + "\16\4\14\0\2\4\4\0\1\4\1\52\25\4\14\0"+ + "\2\4\4\0\5\4\1\53\21\4\14\0\2\4\4\0"+ + "\12\4\1\54\14\4\14\0\2\4\4\0\3\4\1\55"+ + "\23\4\14\0\2\4\4\0\5\4\1\56\3\4\1\57"+ + "\15\4\14\0\2\4\4\0\4\4\1\60\10\4\1\61"+ + "\11\4\14\0\2\4\4\0\2\4\1\62\24\4\14\0"+ + "\2\4\4\0\5\4\1\63\21\4\14\0\2\4\4\0"+ + "\17\4\1\64\7\4\14\0\2\4\4\0\11\4\1\65"+ + "\15\4\14\0\2\4\4\0\1\66\26\4\13\0\3\40"+ + "\2\0\31\40\1\0\10\40\1\0\1\40\10\0\1\67"+ + "\1\70\3\0\1\71\20\0\1\72\17\0\1\6\44\0"+ + "\2\4\4\0\2\4\1\73\24\4\14\0\2\4\4\0"+ + "\6\4\1\74\20\4\14\0\2\4\4\0\5\4\1\75"+ + "\21\4\14\0\2\4\4\0\25\4\1\76\1\4\14\0"+ + "\2\4\4\0\5\4\1\77\21\4\14\0\2\4\4\0"+ + "\2\4\1\100\24\4\14\0\2\4\4\0\17\4\1\101"+ + "\7\4\14\0\2\4\4\0\1\4\1\102\25\4\14\0"+ + "\2\4\4\0\5\4\1\103\21\4\14\0\2\4\4\0"+ + "\17\4\1\104\7\4\14\0\2\4\4\0\3\4\1\105"+ + "\23\4\14\0\2\4\4\0\15\4\1\106\11\4\14\0"+ + "\2\4\4\0\23\4\1\107\3\4\14\0\2\4\4\0"+ + "\6\4\1\110\20\4\14\0\2\4\4\0\1\111\26\4"+ + "\14\0\2\4\4\0\7\4\1\112\17\4\14\0\2\4"+ + "\4\0\2\4\1\113\24\4\14\0\2\4\4\0\2\4"+ + "\1\114\24\4\14\0\2\4\4\0\11\4\1\115\15\4"+ + "\14\0\2\4\4\0\1\116\16\4\1\117\7\4\14\0"+ + "\2\4\4\0\6\4\1\120\20\4\14\0\2\4\4\0"+ + "\17\4\1\121\7\4\14\0\2\4\4\0\12\4\1\122"+ + "\14\4\14\0\2\4\4\0\11\4\1\123\15\4\14\0"+ + "\2\4\4\0\24\4\1\124\2\4\14\0\2\4\4\0"+ + "\13\4\1\125\13\4\14\0\2\4\4\0\15\4\1\126"+ + "\11\4\14\0\2\4\4\0\7\4\1\127\17\4\14\0"+ + "\2\4\4\0\20\4\1\130\6\4\14\0\2\4\4\0"+ + "\6\4\1\131\20\4\14\0\2\4\4\0\15\4\1\132"+ + "\11\4\14\0\2\4\4\0\1\133\26\4\14\0\2\4"+ + "\4\0\16\4\1\134\10\4\14\0\2\4\4\0\12\4"+ + "\1\135\14\4\14\0\2\4\4\0\4\4\1\136\22\4"+ + "\14\0\2\4\4\0\4\4\1\137\22\4\14\0\2\4"+ + "\4\0\6\4\1\140\20\4\14\0\2\4\4\0\1\4"+ + "\1\141\25\4\14\0\2\4\4\0\20\4\1\142\6\4"+ + "\14\0\2\4\4\0\2\4\1\143\24\4\14\0\2\4"+ + "\4\0\1\144\26\4\14\0\2\4\4\0\11\4\1\145"+ + "\15\4\14\0\2\4\4\0\2\4\1\146\24\4\14\0"+ + "\2\4\4\0\12\4\1\147\14\4\14\0\2\4\4\0"+ + "\6\4\1\150\20\4\14\0\2\4\4\0\7\4\1\151"+ + "\17\4\14\0\2\4\4\0\1\4\1\152\25\4\14\0"+ + "\2\4\4\0\1\153\26\4\14\0\2\4\4\0\5\4"+ + "\1\154\21\4\14\0\2\4\4\0\14\4\1\155\12\4"+ + "\14\0\2\4\4\0\13\4\1\156\13\4\14\0\2\4"+ + "\4\0\2\4\1\157\24\4\14\0\2\4\4\0\6\4"+ + "\1\160\20\4\14\0\2\4\4\0\15\4\1\161\11\4"+ + "\14\0\2\4\4\0\11\4\1\162\15\4\14\0\2\4"+ + "\4\0\1\163\26\4\14\0\2\4\4\0\1\164\26\4"+ + "\14\0\2\4\4\0\13\4\1\165\13\4\14\0\2\4"+ + "\4\0\20\4\1\166\6\4\14\0\2\4\4\0\16\4"+ + "\1\167\10\4\14\0\2\4\4\0\15\4\1\170\11\4"+ + "\14\0\2\4\4\0\11\4\1\171\15\4\14\0\2\4"+ + "\4\0\1\4\1\172\25\4\14\0\2\4\4\0\23\4"+ + "\1\173\3\4\14\0\2\4\4\0\12\4\1\174\14\4"+ + "\14\0\2\4\4\0\20\4\1\175\6\4\14\0\2\4"+ + "\4\0\3\4\1\176\23\4\14\0\2\4\4\0\2\4"+ + "\1\177\24\4\14\0\2\4\4\0\1\200\26\4\14\0"+ + "\2\4\4\0\11\4\1\201\15\4\14\0\2\4\4\0"+ + "\1\202\26\4\14\0\2\4\4\0\2\4\1\203\24\4"+ + "\14\0\2\4\4\0\5\4\1\204\21\4\14\0\2\4"+ + "\4\0\10\4\1\205\16\4\14\0\2\4\4\0\1\4"+ + "\1\206\25\4\13\0"; private static int [] zzUnpackTrans() { - int [] result = new int[3813]; + int [] result = new int[4018]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -253,11 +257,11 @@ public class Lexer implements java_cup.runtime.Scanner, sym { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\2\0\1\11\2\1\2\11\16\1\11\11\1\1\1\11"+ - "\1\1\1\0\22\1\4\11\107\1"; + "\2\0\1\11\2\1\2\11\17\1\11\11\1\1\1\11"+ + "\1\1\1\0\23\1\4\11\114\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[127]; + int [] result = new int[134]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -749,160 +753,168 @@ public class Lexer implements java_cup.runtime.Scanner, sym { { /* throw new Error("Illegal character <"+ yytext()+">");*/ error("Illegal character <"+ yytext()+">"); } - case 40: break; + case 42: break; case 2: { return symbol("Identifier",IDENT, yytext()); } - case 41: break; + case 43: break; case 3: { /* ignore */ } - case 42: break; + case 44: break; case 4: { return symbol("semicolon",SEMICOLON); } - case 43: break; + case 45: break; case 5: { string.setLength(0); yybegin(STRING); } - case 44: break; + case 46: break; case 6: { return symbol("comma",COMMA); } - case 45: break; + case 47: break; case 7: { return symbol("(",LPAR); } - case 46: break; + case 48: break; case 8: { return symbol(")",RPAR); } - case 47: break; + case 49: break; case 9: { return symbol("<",LANG); } - case 48: break; + case 50: break; case 10: { return symbol(">",RANG); } - case 49: break; + case 51: break; case 11: { return symbol("{",BEGIN); } - case 50: break; + case 52: break; case 12: { return symbol("}",END); } - case 51: break; + case 53: break; case 13: { return symbol("=",ASSIGN); } - case 52: break; + case 54: break; case 14: { string.append( yytext() ); } - case 53: break; + case 55: break; case 15: { yybegin(YYINITIAL); return symbol("StringConst",STRINGCONST,string.toString(),string.length()); } - case 54: break; + case 56: break; case 16: { string.append('\\'); } - case 55: break; + case 57: break; case 17: { return symbol("as",AS); } - case 56: break; + case 58: break; case 18: { string.append('\n'); } - case 57: break; + case 59: break; case 19: { string.append('\t'); } - case 58: break; + case 60: break; case 20: { string.append('\r'); } - case 59: break; + case 61: break; case 21: { string.append('\"'); } - case 60: break; + case 62: break; case 22: { return symbol("int",TYPE, "int" ); } - case 61: break; + case 63: break; case 23: { return symbol("byte",TYPE, "byte" ); } - case 62: break; + case 64: break; case 24: - { return symbol("long",TYPE, "long" ); + { return symbol("enum",ENUM); } - case 63: break; + case 65: break; case 25: - { return symbol("char",TYPE, "char" ); + { return symbol("long",TYPE, "long" ); } - case 64: break; + case 66: break; case 26: - { return symbol("void",TYPE, "void" ); + { return symbol("char",TYPE, "char" ); } - case 65: break; + case 67: break; case 27: - { return symbol("with",WITH); + { return symbol("void",TYPE, "void" ); } - case 66: break; + case 68: break; case 28: - { return symbol("short",TYPE, "short" ); + { return symbol("with",WITH); } - case 67: break; + case 69: break; case 29: - { return symbol("float",TYPE, "float" ); + { return symbol("short",TYPE, "short" ); } - case 68: break; + case 70: break; case 30: - { return symbol("string",TYPE, "String" ); + { return symbol("float",TYPE, "float" ); } - case 69: break; + case 71: break; case 31: - { return symbol("double",TYPE, "double" ); + { return symbol("string",TYPE, "String" ); } - case 70: break; + case 72: break; case 32: - { return symbol("String",TYPE, "String" ); + { return symbol("struct",STRUCT); } - case 71: break; + case 73: break; case 33: - { return symbol("public",PUBLIC); + { return symbol("double",TYPE, "double" ); } - case 72: break; + case 74: break; case 34: - { return symbol("method",METHOD); + { return symbol("String",TYPE, "String" ); } - case 73: break; + case 75: break; case 35: - { return symbol("boolean",TYPE, "boolean" ); + { return symbol("public",PUBLIC); } - case 74: break; + case 76: break; case 36: - { return symbol("requires",REQUIRES); + { return symbol("method",METHOD); } - case 75: break; + case 77: break; case 37: - { return symbol("interface",INTERFACE); + { return symbol("boolean",TYPE, "boolean" ); } - case 76: break; + case 78: break; case 38: - { return symbol("capability",CAPABILITY); + { return symbol("requires",REQUIRES); } - case 77: break; + case 79: break; case 39: + { return symbol("interface",INTERFACE); + } + case 80: break; + case 40: + { return symbol("capability",CAPABILITY); + } + case 81: break; + case 41: { return symbol("description",DESCRIPTION); } - case 78: break; + case 82: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/iotjava/iotpolicy/parser/Parser.java b/iotjava/iotpolicy/parser/Parser.java index 5f3158a..12a8049 100644 --- a/iotjava/iotpolicy/parser/Parser.java +++ b/iotjava/iotpolicy/parser/Parser.java @@ -2,7 +2,6 @@ //---------------------------------------------------- // The following code was generated by CUP v0.11b 20160615 (GIT 4ac7450) //---------------------------------------------------- -package iotpolicy.parser; import java_cup.runtime.ComplexSymbolFactory; import java_cup.runtime.ScannerBuffer; @@ -14,8 +13,6 @@ import javax.xml.transform.*; import javax.xml.transform.stream.*; import java_cup.runtime.XMLElement; -import iotpolicy.tree.ParseNode; - /** CUP v0.11b 20160615 (GIT 4ac7450) generated parser. */ @SuppressWarnings({"rawtypes"}) @@ -39,19 +36,20 @@ public class Parser extends java_cup.runtime.lr_parser { /** Production table. */ protected static final short _production_table[][] = unpackFromStrings(new String[] { - "\000\047\000\002\002\003\000\002\002\004\000\002\002" + - "\003\000\002\003\011\000\002\004\004\000\002\004\002" + - "\000\002\005\011\000\002\005\011\000\002\006\004\000" + - "\002\006\002\000\002\007\005\000\002\007\004\000\002" + - "\007\005\000\002\007\004\000\002\007\007\000\002\007" + - "\007\000\002\007\011\000\002\007\011\000\002\007\011" + - "\000\002\007\011\000\002\007\010\000\002\007\010\000" + - "\002\007\012\000\002\007\012\000\002\007\012\000\002" + - "\007\012\000\002\011\004\000\002\011\002\000\002\012" + - "\007\000\002\013\004\000\002\013\002\000\002\014\006" + - "\000\002\014\006\000\002\015\004\000\002\015\002\000" + - "\002\016\012\000\002\017\003\000\002\017\005\000\002" + - "\017\002" }); + "\000\054\000\002\002\003\000\002\002\004\000\002\002" + + "\003\000\002\002\003\000\002\002\003\000\002\003\011" + + "\000\002\004\004\000\002\004\002\000\002\005\011\000" + + "\002\005\011\000\002\006\004\000\002\006\002\000\002" + + "\007\005\000\002\007\004\000\002\007\005\000\002\007" + + "\004\000\002\007\007\000\002\007\007\000\002\007\010" + + "\000\002\007\010\000\002\011\004\000\002\011\002\000" + + "\002\012\007\000\002\013\004\000\002\013\002\000\002" + + "\014\006\000\002\014\006\000\002\015\004\000\002\015" + + "\002\000\002\016\012\000\002\017\003\000\002\017\005" + + "\000\002\017\002\000\002\020\007\000\002\021\004\000" + + "\002\021\002\000\002\022\004\000\002\022\003\000\002" + + "\023\007\000\002\024\004\000\002\024\002\000\002\025" + + "\005\000\002\025\005\000\002\025\010" }); /** Access to production table. */ public short[][] production_table() {return _production_table;} @@ -59,61 +57,64 @@ public class Parser extends java_cup.runtime.lr_parser { /** Parse-action table. */ protected static final short[][] _action_table = unpackFromStrings(new String[] { - "\000\127\000\010\002\uffdf\015\006\022\uffdf\001\002\000" + - "\004\002\001\001\002\000\006\002\uffff\022\117\001\002" + - "\000\004\016\011\001\002\000\004\002\010\001\002\000" + - "\004\002\000\001\002\000\004\026\012\001\002\000\004" + - "\012\013\001\002\000\010\013\ufffc\015\ufffc\017\ufffc\001" + - "\002\000\010\013\uffe6\015\016\017\uffe6\001\002\000\010" + - "\013\ufffd\015\ufffd\017\ufffd\001\002\000\006\025\041\026" + - "\040\001\002\000\006\013\022\017\021\001\002\000\006" + - "\013\uffe7\017\uffe7\001\002\000\004\026\023\001\002\000" + - "\004\002\ufffe\001\002\000\004\012\024\001\002\000\010" + - "\013\uffe3\020\uffe3\021\uffe3\001\002\000\010\013\030\020" + - "\027\021\031\001\002\000\010\013\uffe4\020\uffe4\021\uffe4" + - "\001\002\000\004\014\035\001\002\000\006\013\uffe5\017" + - "\uffe5\001\002\000\004\014\032\001\002\000\004\027\033" + - "\001\002\000\004\004\034\001\002\000\010\013\uffe1\020" + - "\uffe1\021\uffe1\001\002\000\004\027\036\001\002\000\004" + - "\004\037\001\002\000\010\013\uffe2\020\uffe2\021\uffe2\001" + - "\002\000\004\026\111\001\002\000\004\026\042\001\002" + - "\000\004\006\043\001\002\000\010\007\ufff8\025\ufff8\026" + - "\ufff8\001\002\000\010\007\046\025\050\026\045\001\002" + - "\000\006\010\054\026\055\001\002\000\004\004\053\001" + - "\002\000\010\007\ufff9\025\ufff9\026\ufff9\001\002\000\004" + - "\026\051\001\002\000\012\005\052\007\ufff6\025\ufff6\026" + - "\ufff6\001\002\000\010\007\ufff7\025\ufff7\026\ufff7\001\002" + - "\000\010\013\ufffb\015\ufffb\017\ufffb\001\002\000\006\025" + - "\060\026\057\001\002\000\012\005\056\007\ufff4\025\ufff4" + - "\026\ufff4\001\002\000\010\007\ufff5\025\ufff5\026\ufff5\001" + - "\002\000\006\005\075\011\076\001\002\000\006\005\061" + - "\011\062\001\002\000\006\025\066\026\065\001\002\000" + - "\004\026\063\001\002\000\012\005\064\007\ufff3\025\ufff3" + - "\026\ufff3\001\002\000\010\007\uffed\025\uffed\026\uffed\001" + - "\002\000\004\011\072\001\002\000\004\011\067\001\002" + - "\000\004\026\070\001\002\000\012\005\071\007\ufff1\025" + - "\ufff1\026\ufff1\001\002\000\010\007\uffeb\025\uffeb\026\uffeb" + - "\001\002\000\004\026\073\001\002\000\012\005\074\007" + - "\ufff0\025\ufff0\026\ufff0\001\002\000\010\007\uffea\025\uffea" + - "\026\uffea\001\002\000\006\025\102\026\101\001\002\000" + - "\004\026\077\001\002\000\012\005\100\007\ufff2\025\ufff2" + - "\026\ufff2\001\002\000\010\007\uffec\025\uffec\026\uffec\001" + - "\002\000\004\011\106\001\002\000\004\011\103\001\002" + - "\000\004\026\104\001\002\000\012\005\105\007\uffef\025" + - "\uffef\026\uffef\001\002\000\010\007\uffe9\025\uffe9\026\uffe9" + - "\001\002\000\004\026\107\001\002\000\012\005\110\007" + - "\uffee\025\uffee\026\uffee\001\002\000\010\007\uffe8\025\uffe8" + - "\026\uffe8\001\002\000\004\006\112\001\002\000\010\007" + - "\ufff8\025\ufff8\026\ufff8\001\002\000\010\007\114\025\050" + - "\026\045\001\002\000\004\004\115\001\002\000\010\013" + - "\ufffa\015\ufffa\017\ufffa\001\002\000\006\002\uffe0\022\uffe0" + - "\001\002\000\004\026\120\001\002\000\004\023\121\001" + - "\002\000\010\005\uffdb\024\uffdb\026\122\001\002\000\006" + - "\005\uffdd\024\uffdd\001\002\000\006\005\124\024\125\001" + - "\002\000\004\026\131\001\002\000\004\016\126\001\002" + - "\000\004\026\127\001\002\000\004\004\130\001\002\000" + - "\006\002\uffde\022\uffde\001\002\000\006\005\uffdc\024\uffdc" + - "\001\002" }); + "\000\140\000\014\002\uffe5\015\012\022\uffe5\025\007\026" + + "\011\001\002\000\004\002\001\001\002\000\004\002\ufffd" + + "\001\002\000\004\002\ufffe\001\002\000\004\030\134\001" + + "\002\000\006\002\uffff\022\120\001\002\000\004\030\100" + + "\001\002\000\004\016\015\001\002\000\004\002\014\001" + + "\002\000\004\002\000\001\002\000\004\030\016\001\002" + + "\000\004\012\017\001\002\000\010\013\ufffa\015\ufffa\017" + + "\ufffa\001\002\000\010\013\uffec\015\022\017\uffec\001\002" + + "\000\010\013\ufffb\015\ufffb\017\ufffb\001\002\000\006\027" + + "\045\030\044\001\002\000\006\013\026\017\025\001\002" + + "\000\006\013\uffed\017\uffed\001\002\000\004\030\027\001" + + "\002\000\004\002\ufffc\001\002\000\004\012\030\001\002" + + "\000\010\013\uffe9\020\uffe9\021\uffe9\001\002\000\010\013" + + "\034\020\033\021\035\001\002\000\010\013\uffea\020\uffea" + + "\021\uffea\001\002\000\004\014\041\001\002\000\006\013" + + "\uffeb\017\uffeb\001\002\000\004\014\036\001\002\000\004" + + "\031\037\001\002\000\004\004\040\001\002\000\010\013" + + "\uffe7\020\uffe7\021\uffe7\001\002\000\004\031\042\001\002" + + "\000\004\004\043\001\002\000\010\013\uffe8\020\uffe8\021" + + "\uffe8\001\002\000\004\030\073\001\002\000\004\030\046" + + "\001\002\000\004\006\047\001\002\000\010\007\ufff6\027" + + "\ufff6\030\ufff6\001\002\000\010\007\052\027\054\030\051" + + "\001\002\000\006\010\060\030\061\001\002\000\004\004" + + "\057\001\002\000\010\007\ufff7\027\ufff7\030\ufff7\001\002" + + "\000\004\030\055\001\002\000\012\005\056\007\ufff4\027" + + "\ufff4\030\ufff4\001\002\000\010\007\ufff5\027\ufff5\030\ufff5" + + "\001\002\000\010\013\ufff9\015\ufff9\017\ufff9\001\002\000" + + "\006\027\064\030\063\001\002\000\012\005\062\007\ufff2" + + "\027\ufff2\030\ufff2\001\002\000\010\007\ufff3\027\ufff3\030" + + "\ufff3\001\002\000\004\011\070\001\002\000\004\011\065" + + "\001\002\000\004\030\066\001\002\000\012\005\067\007" + + "\ufff1\027\ufff1\030\ufff1\001\002\000\010\007\uffef\027\uffef" + + "\030\uffef\001\002\000\004\030\071\001\002\000\012\005" + + "\072\007\ufff0\027\ufff0\030\ufff0\001\002\000\010\007\uffee" + + "\027\uffee\030\uffee\001\002\000\004\006\074\001\002\000" + + "\010\007\ufff6\027\ufff6\030\ufff6\001\002\000\010\007\076" + + "\027\054\030\051\001\002\000\004\004\077\001\002\000" + + "\010\013\ufff8\015\ufff8\017\ufff8\001\002\000\004\012\101" + + "\001\002\000\010\013\uffd9\027\uffd9\030\uffd9\001\002\000" + + "\010\013\104\027\106\030\103\001\002\000\006\010\111" + + "\030\112\001\002\000\004\002\uffdb\001\002\000\010\013" + + "\uffda\027\uffda\030\uffda\001\002\000\004\030\107\001\002" + + "\000\004\004\110\001\002\000\010\013\uffd8\027\uffd8\030" + + "\uffd8\001\002\000\004\030\114\001\002\000\004\004\113" + + "\001\002\000\010\013\uffd7\027\uffd7\030\uffd7\001\002\000" + + "\004\011\115\001\002\000\004\030\116\001\002\000\004" + + "\004\117\001\002\000\010\013\uffd6\027\uffd6\030\uffd6\001" + + "\002\000\004\030\122\001\002\000\006\002\uffe6\022\uffe6" + + "\001\002\000\004\023\123\001\002\000\010\005\uffe1\024" + + "\uffe1\030\125\001\002\000\006\005\126\024\127\001\002" + + "\000\006\005\uffe3\024\uffe3\001\002\000\004\030\133\001" + + "\002\000\004\016\130\001\002\000\004\030\131\001\002" + + "\000\004\004\132\001\002\000\006\002\uffe4\022\uffe4\001" + + "\002\000\006\005\uffe2\024\uffe2\001\002\000\004\012\135" + + "\001\002\000\006\013\uffde\030\uffde\001\002\000\006\013" + + "\141\030\140\001\002\000\006\013\uffdf\030\uffdf\001\002" + + "\000\010\005\142\013\uffdc\030\uffdc\001\002\000\004\002" + + "\uffe0\001\002\000\006\013\uffdd\030\uffdd\001\002" }); /** Access to parse-action table. */ public short[][] action_table() {return _action_table;} @@ -121,36 +122,39 @@ public class Parser extends java_cup.runtime.lr_parser { /** reduce_goto table. */ protected static final short[][] _reduce_table = unpackFromStrings(new String[] { - "\000\127\000\010\002\006\003\003\015\004\001\001\000" + - "\002\001\001\000\004\016\115\001\001\000\002\001\001" + - "\000\002\001\001\000\002\001\001\000\002\001\001\000" + - "\002\001\001\000\004\004\013\001\001\000\006\005\014" + - "\011\016\001\001\000\002\001\001\000\002\001\001\000" + - "\004\012\017\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\002\001\001\000\004\013\024\001" + - "\001\000\004\014\025\001\001\000\002\001\001\000\002" + - "\001\001\000\002\001\001\000\002\001\001\000\002\001" + - "\001\000\002\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\002\001\001\000\002\001\001\000" + - "\002\001\001\000\002\001\001\000\004\006\043\001\001" + - "\000\004\007\046\001\001\000\002\001\001\000\002\001" + + "\000\140\000\014\002\012\003\003\015\007\020\005\023" + + "\004\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\004\016\120\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\004\004" + + "\017\001\001\000\006\005\020\011\022\001\001\000\002" + + "\001\001\000\002\001\001\000\004\012\023\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\004\013\030\001\001\000\004\014\031\001" + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + - "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\001\000\004\006\047\001\001\000\004\007\052\001\001" + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + "\002\001\001\000\002\001\001\000\002\001\001\000\004" + - "\006\112\001\001\000\004\007\046\001\001\000\002\001" + - "\001\000\002\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\004\017\122\001\001\000\002\001" + + "\006\074\001\001\000\004\007\052\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\004\024\101" + + "\001\001\000\004\025\104\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + - "\002\001\001" }); + "\002\001\001\000\002\001\001\000\004\017\123\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\004\021" + + "\135\001\001\000\004\022\136\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001" }); /** Access to reduce_goto table. */ public short[][] reduce_table() {return _reduce_table;} @@ -274,7 +278,39 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 3: // intface ::= PUBLIC INTERFACE IDENT BEGIN methlist capablist END + case 3: // policy ::= enumdec + { + ParseNode RESULT =null; + int enleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int enright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + ParseNode en = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; + + ParseNode pn = new ParseNode("policy"); + pn.addChild(en); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("policy",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 4: // policy ::= structdec + { + ParseNode RESULT =null; + int stleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int stright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + ParseNode st = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; + + ParseNode pn = new ParseNode("policy"); + pn.addChild(st); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("policy",0, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 5: // intface ::= PUBLIC INTERFACE IDENT BEGIN methlist capablist END { ParseNode RESULT =null; int idintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; @@ -298,7 +334,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 4: // methlist ::= methlist meth + case 6: // methlist ::= methlist meth { ParseNode RESULT =null; int mlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -316,7 +352,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 5: // methlist ::= + case 7: // methlist ::= { ParseNode RESULT =null; @@ -328,7 +364,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 6: // meth ::= PUBLIC TYPE IDENT LPAR paramlist RPAR SEMICOLON + case 8: // meth ::= PUBLIC TYPE IDENT LPAR paramlist RPAR SEMICOLON { ParseNode RESULT =null; int typemethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; @@ -352,7 +388,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 7: // meth ::= PUBLIC IDENT IDENT LPAR paramlist RPAR SEMICOLON + case 9: // meth ::= PUBLIC IDENT IDENT LPAR paramlist RPAR SEMICOLON { ParseNode RESULT =null; int clsmethleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; @@ -376,7 +412,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 8: // paramlist ::= paramlist param + case 10: // paramlist ::= paramlist param { ParseNode RESULT =null; int plleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -394,7 +430,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 9: // paramlist ::= + case 11: // paramlist ::= { ParseNode RESULT =null; @@ -406,7 +442,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 10: // param ::= TYPE IDENT COMMA + case 12: // param ::= TYPE IDENT COMMA { ParseNode RESULT =null; int typeprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; @@ -426,7 +462,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 11: // param ::= TYPE IDENT + case 13: // param ::= TYPE IDENT { ParseNode RESULT =null; int typeprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -446,7 +482,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 12: // param ::= IDENT IDENT COMMA + case 14: // param ::= IDENT IDENT COMMA { ParseNode RESULT =null; int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; @@ -466,7 +502,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 13: // param ::= IDENT IDENT + case 15: // param ::= IDENT IDENT { ParseNode RESULT =null; int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -486,7 +522,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 14: // param ::= IDENT LANG TYPE RANG IDENT + case 16: // param ::= IDENT LANG TYPE RANG IDENT { ParseNode RESULT =null; int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; @@ -509,7 +545,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 15: // param ::= IDENT LANG IDENT RANG IDENT + case 17: // param ::= IDENT LANG IDENT RANG IDENT { ParseNode RESULT =null; int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; @@ -532,115 +568,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 16: // param ::= IDENT LANG TYPE COMMA TYPE RANG IDENT - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value; - int typegen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; - int typegen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right; - Object typegen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value; - int typegen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; - int typegen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; - Object typegen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen1 + "," + typegen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 17: // param ::= IDENT LANG TYPE COMMA IDENT RANG IDENT - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value; - int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; - int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right; - Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value; - int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; - int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; - Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen + "," + clsgen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 18: // param ::= IDENT LANG IDENT COMMA TYPE RANG IDENT - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value; - int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; - int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right; - Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value; - int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; - int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; - Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen + "," + typegen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 19: // param ::= IDENT LANG IDENT COMMA IDENT RANG IDENT - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-6)).value; - int clsgen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).left; - int clsgen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)).right; - Object clsgen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-4)).value; - int clsgen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; - int clsgen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; - Object clsgen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen1 + "," + clsgen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 20: // param ::= IDENT LANG TYPE RANG IDENT COMMA + case 18: // param ::= IDENT LANG TYPE RANG IDENT COMMA { ParseNode RESULT =null; int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; @@ -663,7 +591,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 21: // param ::= IDENT LANG IDENT RANG IDENT COMMA + case 19: // param ::= IDENT LANG IDENT RANG IDENT COMMA { ParseNode RESULT =null; int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; @@ -686,115 +614,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 22: // param ::= IDENT LANG TYPE COMMA TYPE RANG IDENT COMMA - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value; - int typegen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; - int typegen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right; - Object typegen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value; - int typegen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; - int typegen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; - Object typegen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen1 + "," + typegen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 23: // param ::= IDENT LANG TYPE COMMA IDENT RANG IDENT COMMA - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value; - int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; - int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right; - Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value; - int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; - int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; - Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen + "," + clsgen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 24: // param ::= IDENT LANG IDENT COMMA TYPE RANG IDENT COMMA - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value; - int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; - int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right; - Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value; - int typegenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; - int typegenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; - Object typegen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen + "," + typegen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 25: // param ::= IDENT LANG IDENT COMMA IDENT RANG IDENT COMMA - { - ParseNode RESULT =null; - int clsprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).left; - int clsprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)).right; - Object clsprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-7)).value; - int clsgen1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; - int clsgen1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right; - Object clsgen1 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value; - int clsgen2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; - int clsgen2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; - Object clsgen2 = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; - int idprmleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int idprmright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Object idprm = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; - - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen1 + "," + clsgen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - - CUP$Parser$result = parser.getSymbolFactory().newSymbol("param",5, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-7)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); - } - return CUP$Parser$result; - - /*. . . . . . . . . . . . . . . . . . . .*/ - case 26: // capablist ::= capablist capab + case 20: // capablist ::= capablist capab { ParseNode RESULT =null; int clleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -812,7 +632,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 27: // capablist ::= + case 21: // capablist ::= { ParseNode RESULT =null; @@ -824,7 +644,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 28: // capab ::= CAPABILITY IDENT BEGIN capabcont END + case 22: // capab ::= CAPABILITY IDENT BEGIN capabcont END { ParseNode RESULT =null; int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; @@ -844,7 +664,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 29: // capabcont ::= capabcont cont + case 23: // capabcont ::= capabcont cont { ParseNode RESULT =null; int ccontleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -862,7 +682,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 30: // capabcont ::= + case 24: // capabcont ::= { ParseNode RESULT =null; @@ -874,7 +694,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 31: // cont ::= DESCRIPTION ASSIGN STRINGCONST SEMICOLON + case 25: // cont ::= DESCRIPTION ASSIGN STRINGCONST SEMICOLON { ParseNode RESULT =null; int dscleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; @@ -893,7 +713,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 32: // cont ::= METHOD ASSIGN STRINGCONST SEMICOLON + case 26: // cont ::= METHOD ASSIGN STRINGCONST SEMICOLON { ParseNode RESULT =null; int mtdleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; @@ -912,7 +732,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 33: // reqlist ::= reqlist require + case 27: // reqlist ::= reqlist require { ParseNode RESULT =null; int rlleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -930,7 +750,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 34: // reqlist ::= + case 28: // reqlist ::= { ParseNode RESULT =null; @@ -942,7 +762,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 35: // require ::= REQUIRES IDENT WITH capintlist AS INTERFACE IDENT SEMICOLON + case 29: // require ::= REQUIRES IDENT WITH capintlist AS INTERFACE IDENT SEMICOLON { ParseNode RESULT =null; int idintleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-6)).left; @@ -966,7 +786,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 36: // capintlist ::= IDENT + case 30: // capintlist ::= IDENT { ParseNode RESULT =null; int idcapleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; @@ -982,7 +802,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 37: // capintlist ::= capintlist COMMA IDENT + case 31: // capintlist ::= capintlist COMMA IDENT { ParseNode RESULT =null; int cilleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; @@ -1000,7 +820,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 38: // capintlist ::= + case 32: // capintlist ::= { ParseNode RESULT =null; @@ -1011,6 +831,201 @@ class CUP$Parser$actions { } return CUP$Parser$result; + /*. . . . . . . . . . . . . . . . . . . .*/ + case 33: // enumdec ::= ENUM IDENT BEGIN enumlist END + { + ParseNode RESULT =null; + int idenumdecleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; + int idenumdecright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; + Object idenumdec = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; + int elleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int elright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + ParseNode el = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + + ParseNode pn = new ParseNode("enum_dec"); + pn.addChild("enum_dec_ident").setLiteral(idenumdec); + pn.addChild(el); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("enumdec",14, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 34: // enumlist ::= enumlist enummem + { + ParseNode RESULT =null; + int elleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int elright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + ParseNode el = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + int eleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int eright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + ParseNode e = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; + + el.addChild(e); + RESULT = el; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("enumlist",15, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 35: // enumlist ::= + { + ParseNode RESULT =null; + + ParseNode pn = new ParseNode("enum_list"); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("enumlist",15, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 36: // enummem ::= IDENT COMMA + { + ParseNode RESULT =null; + int idenumleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int idenumright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + Object idenum = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + + ParseNode pn = new ParseNode("enum_mem"); + pn.addChild("enum_ident").setLiteral(idenum); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("enummem",16, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 37: // enummem ::= IDENT + { + ParseNode RESULT =null; + int idenumleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int idenumright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + Object idenum = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; + + ParseNode pn = new ParseNode("enum_mem"); + pn.addChild("enum_ident").setLiteral(idenum); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("enummem",16, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 38: // structdec ::= STRUCT IDENT BEGIN structlist END + { + ParseNode RESULT =null; + int idstructdecleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; + int idstructdecright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; + Object idstructdec = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; + int slleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int slright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + ParseNode sl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + + ParseNode pn = new ParseNode("struct_dec"); + pn.addChild("struct_dec_ident").setLiteral(idstructdec); + pn.addChild(sl); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("structdec",17, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-4)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 39: // structlist ::= structlist structmem + { + ParseNode RESULT =null; + int slleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int slright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + ParseNode sl = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + int sleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int sright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + ParseNode s = (ParseNode)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; + + sl.addChild(s); + RESULT = sl; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("structlist",18, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 40: // structlist ::= + { + ParseNode RESULT =null; + + ParseNode pn = new ParseNode("enum_list"); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("structlist",18, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 41: // structmem ::= TYPE IDENT SEMICOLON + { + ParseNode RESULT =null; + int typestrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; + int typestrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; + Object typestr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; + int idstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int idstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + Object idstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + + ParseNode pn = new ParseNode("struct_mem"); + pn.addChild("struct_type").setLiteral(typestr); + pn.addChild("struct_ident").setLiteral(idstr); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("structmem",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 42: // structmem ::= IDENT IDENT SEMICOLON + { + ParseNode RESULT =null; + int clsstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; + int clsstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; + Object clsstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; + int idstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int idstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + Object idstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + + ParseNode pn = new ParseNode("struct_mem"); + pn.addChild("struct_class").setLiteral(clsstr); + pn.addChild("struct_ident").setLiteral(idstr); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("structmem",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 43: // structmem ::= IDENT LANG IDENT RANG IDENT SEMICOLON + { + ParseNode RESULT =null; + int clsstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).left; + int clsstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)).right; + Object clsstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-5)).value; + int clsgenleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; + int clsgenright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right; + Object clsgen = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value; + int idstrleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int idstrright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + Object idstr = (Object)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + + ParseNode pn = new ParseNode("struct_mem"); + pn.addChild("struct_class").setLiteral((String)clsstr + "<" + clsgen + ">"); + pn.addChild("struct_ident").setLiteral(idstr); + RESULT = pn; + + CUP$Parser$result = parser.getSymbolFactory().newSymbol("structmem",19, ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); + } + return CUP$Parser$result; + /* . . . . . .*/ default: throw new Exception( diff --git a/iotjava/iotpolicy/parser/sym.java b/iotjava/iotpolicy/parser/sym.java index b726278..fecdde4 100644 --- a/iotjava/iotpolicy/parser/sym.java +++ b/iotjava/iotpolicy/parser/sym.java @@ -2,14 +2,14 @@ //---------------------------------------------------- // The following code was generated by CUP v0.11b 20160615 (GIT 4ac7450) //---------------------------------------------------- -package iotpolicy.parser; /** CUP generated interface containing symbol constants. */ public interface sym { /* terminals */ - public static final int IDENT = 20; + public static final int IDENT = 22; public static final int SEMICOLON = 2; - public static final int STRINGCONST = 21; + public static final int STRUCT = 20; + public static final int STRINGCONST = 23; public static final int REQUIRES = 16; public static final int RANG = 7; public static final int END = 9; @@ -19,11 +19,12 @@ public interface sym { public static final int WITH = 17; public static final int PUBLIC = 11; public static final int BEGIN = 8; - public static final int TYPE = 19; + public static final int TYPE = 21; public static final int DESCRIPTION = 14; public static final int COMMA = 3; public static final int EOF = 0; public static final int METHOD = 15; + public static final int ENUM = 19; public static final int error = 1; public static final int INTERFACE = 12; public static final int ASSIGN = 10; @@ -49,6 +50,8 @@ public interface sym { "REQUIRES", "WITH", "AS", + "ENUM", + "STRUCT", "TYPE", "IDENT", "STRINGCONST" diff --git a/others/javacup/iotparser.cup b/others/javacup/iotparser.cup index 36dcb7a..be96c46 100644 --- a/others/javacup/iotparser.cup +++ b/others/javacup/iotparser.cup @@ -25,7 +25,7 @@ parser code {: :}; terminal SEMICOLON, COMMA, LPAR, RPAR, LANG, RANG, BEGIN, END, ASSIGN; -terminal PUBLIC, INTERFACE, CAPABILITY, DESCRIPTION, METHOD, REQUIRES, WITH, AS; +terminal PUBLIC, INTERFACE, CAPABILITY, DESCRIPTION, METHOD, REQUIRES, WITH, AS, ENUM, STRUCT; terminal TYPE; terminal IDENT, STRINGCONST; @@ -33,6 +33,9 @@ non terminal ParseNode policy; non terminal ParseNode intface, methlist, meth, paramlist, param, paramtype; non terminal ParseNode capablist, capab, capabcont, cont; non terminal ParseNode reqlist, require, capintlist; +non terminal ParseNode enumdec, enumlist, enummem; +non terminal ParseNode structdec, structlist, structmem; + /** * A policy file normally consists of: @@ -44,6 +47,11 @@ non terminal ParseNode reqlist, require, capintlist; * to declare their required capabilities in the * generated interfaces * 2) List of generated interfaces (requires) + * + * Additionally we support declarations for these + * data types: + * 3) Enumeration + * 4) Struct */ policy ::= intface:in {: @@ -57,6 +65,18 @@ policy ::= intface:in pn.addChild(rl); RESULT = pn; :} + | enumdec:en + {: + ParseNode pn = new ParseNode("policy"); + pn.addChild(en); + RESULT = pn; + :} + | structdec:st + {: + ParseNode pn = new ParseNode("policy"); + pn.addChild(st); + RESULT = pn; + :} ; //1) Interface class definition @@ -141,7 +161,7 @@ param ::= TYPE:typeprm IDENT:idprm COMMA pn.addChild("param_ident").setLiteral(idprm); RESULT = pn; :} - /* generic/template with one type, e.g. set */ + /* generic/template with one type, e.g. list */ | IDENT:clsprm LANG TYPE:typegen RANG IDENT:idprm {: ParseNode pn = new ParseNode("param"); @@ -156,41 +176,8 @@ param ::= TYPE:typeprm IDENT:idprm COMMA pn.addChild("param_ident").setLiteral(idprm); RESULT = pn; :} - /* generic/template with two types, e.g. map */ - | IDENT:clsprm LANG TYPE:typegen1 COMMA TYPE:typegen2 RANG IDENT:idprm - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen1 + "," + typegen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} - | IDENT:clsprm LANG TYPE:typegen COMMA IDENT:clsgen RANG IDENT:idprm - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen + "," + clsgen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} - | IDENT:clsprm LANG IDENT:clsgen COMMA TYPE:typegen RANG IDENT:idprm - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen + "," + typegen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} - | IDENT:clsprm LANG IDENT:clsgen1 COMMA IDENT:clsgen2 RANG IDENT:idprm - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen1 + "," + clsgen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} /* Add comma at the end... */ - /* generic/template with one type, e.g. set */ + /* generic/template with one type, e.g. list */ | IDENT:clsprm LANG TYPE:typegen RANG IDENT:idprm COMMA {: ParseNode pn = new ParseNode("param"); @@ -205,39 +192,6 @@ param ::= TYPE:typeprm IDENT:idprm COMMA pn.addChild("param_ident").setLiteral(idprm); RESULT = pn; :} - /* generic/template with two types, e.g. map */ - | IDENT:clsprm LANG TYPE:typegen1 COMMA TYPE:typegen2 RANG IDENT:idprm COMMA - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen1 + "," + typegen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} - | IDENT:clsprm LANG TYPE:typegen COMMA IDENT:clsgen RANG IDENT:idprm COMMA - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + typegen + "," + clsgen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} - | IDENT:clsprm LANG IDENT:clsgen COMMA TYPE:typegen RANG IDENT:idprm COMMA - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen + "," + typegen + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} - | IDENT:clsprm LANG IDENT:clsgen1 COMMA IDENT:clsgen2 RANG IDENT:idprm COMMA - {: - ParseNode pn = new ParseNode("param"); - pn.addChild("param_class").setLiteral((String)clsprm - + "<" + clsgen1 + "," + clsgen2 + ">"); - pn.addChild("param_ident").setLiteral(idprm); - RESULT = pn; - :} ; //2) List of capabilities and their respective contents, i.e. description, method, etc. @@ -324,3 +278,79 @@ capintlist ::= IDENT:idcap :} ; +//4) Enumeration declaration +enumdec ::= ENUM IDENT:idenumdec BEGIN enumlist:el END + {: + ParseNode pn = new ParseNode("enum_dec"); + pn.addChild("enum_dec_ident").setLiteral(idenumdec); + pn.addChild(el); + RESULT = pn; + :} + ; +enumlist ::= enumlist:el enummem:e + {: + el.addChild(e); + RESULT = el; + :} + | /* empty */ + {: + ParseNode pn = new ParseNode("enum_list"); + RESULT = pn; + :} + ; +enummem ::= IDENT:idenum COMMA + {: + ParseNode pn = new ParseNode("enum_mem"); + pn.addChild("enum_ident").setLiteral(idenum); + RESULT = pn; + :} + | IDENT:idenum + {: + ParseNode pn = new ParseNode("enum_mem"); + pn.addChild("enum_ident").setLiteral(idenum); + RESULT = pn; + :} + ; + +//5) Struct declaration +structdec ::= STRUCT IDENT:idstructdec BEGIN structlist:sl END + {: + ParseNode pn = new ParseNode("struct_dec"); + pn.addChild("struct_dec_ident").setLiteral(idstructdec); + pn.addChild(sl); + RESULT = pn; + :} + ; +structlist ::= structlist:sl structmem:s + {: + sl.addChild(s); + RESULT = sl; + :} + | /* empty */ + {: + ParseNode pn = new ParseNode("enum_list"); + RESULT = pn; + :} + ; +structmem ::= TYPE:typestr IDENT:idstr SEMICOLON + {: + ParseNode pn = new ParseNode("struct_mem"); + pn.addChild("struct_type").setLiteral(typestr); + pn.addChild("struct_ident").setLiteral(idstr); + RESULT = pn; + :} + | IDENT:clsstr IDENT:idstr SEMICOLON + {: + ParseNode pn = new ParseNode("struct_mem"); + pn.addChild("struct_class").setLiteral(clsstr); + pn.addChild("struct_ident").setLiteral(idstr); + RESULT = pn; + :} + | IDENT:clsstr LANG IDENT:clsgen RANG IDENT:idstr SEMICOLON + {: + ParseNode pn = new ParseNode("struct_mem"); + pn.addChild("struct_class").setLiteral((String)clsstr + "<" + clsgen + ">"); + pn.addChild("struct_ident").setLiteral(idstr); + RESULT = pn; + :} + ; diff --git a/others/jflex/iotparser.jflex b/others/jflex/iotparser.jflex index 8ad50b3..6c33ece 100644 --- a/others/jflex/iotparser.jflex +++ b/others/jflex/iotparser.jflex @@ -83,6 +83,8 @@ white_space = {new_line} | [ \t\f] "requires" { return symbol("requires",REQUIRES); } "with" { return symbol("with",WITH); } "as" { return symbol("as",AS); } +"enum" { return symbol("enum",ENUM); } +"struct" { return symbol("struct",STRUCT); } /* names */ {Ident} { return symbol("Identifier",IDENT, yytext()); } -- 2.34.1