diff --git a/GramaticaLibreDeContexto.md b/GramaticaLibreDeContexto.md index 5620984..d143622 100644 --- a/GramaticaLibreDeContexto.md +++ b/GramaticaLibreDeContexto.md @@ -30,12 +30,11 @@ SPECIFIC -> TK_char OPERATION -> - OPERATION '.' OPERATION | - OPERATION '|' OPERATION | - OPERATION '*' | - OPERATION '+' | - OPERATION '?' | - '(' OPERATION ')' | + '.' OPERATION OPERATION | + '|' OPERATION OPERATION | + '*' OPERATION | + '+' OPERATION | + '?' OPERATION | OPERAND OPERAND -> diff --git a/Images/ManualUsuario/Abierto.png b/Images/ManualUsuario/Abierto.png index aa77c03..58bd4a6 100644 Binary files a/Images/ManualUsuario/Abierto.png and b/Images/ManualUsuario/Abierto.png differ diff --git a/Images/ManualUsuario/Abrir.png b/Images/ManualUsuario/Abrir.png index 6555d0f..787dd6c 100644 Binary files a/Images/ManualUsuario/Abrir.png and b/Images/ManualUsuario/Abrir.png differ diff --git a/Images/ManualUsuario/Analizar.png b/Images/ManualUsuario/Analizar.png index 81c5b4c..e1ade72 100644 Binary files a/Images/ManualUsuario/Analizar.png and b/Images/ManualUsuario/Analizar.png differ diff --git a/Images/ManualUsuario/GuardadoComo.png b/Images/ManualUsuario/GuardadoComo.png index 6ebc0f4..77799e5 100644 Binary files a/Images/ManualUsuario/GuardadoComo.png and b/Images/ManualUsuario/GuardadoComo.png differ diff --git a/Images/ManualUsuario/Guardar.png b/Images/ManualUsuario/Guardar.png index 4849e28..242c0e9 100644 Binary files a/Images/ManualUsuario/Guardar.png and b/Images/ManualUsuario/Guardar.png differ diff --git a/Images/ManualUsuario/GuardarComo.png b/Images/ManualUsuario/GuardarComo.png index 4bc8000..4e16542 100644 Binary files a/Images/ManualUsuario/GuardarComo.png and b/Images/ManualUsuario/GuardarComo.png differ diff --git a/Images/ManualUsuario/GuardarComoNombrar.png b/Images/ManualUsuario/GuardarComoNombrar.png index 844ba09..6a44873 100644 Binary files a/Images/ManualUsuario/GuardarComoNombrar.png and b/Images/ManualUsuario/GuardarComoNombrar.png differ diff --git a/Images/ManualUsuario/Nuevo.png b/Images/ManualUsuario/Nuevo.png index 61156ae..880df89 100644 Binary files a/Images/ManualUsuario/Nuevo.png and b/Images/ManualUsuario/Nuevo.png differ diff --git a/Images/ManualUsuario/NuevoCreado.png b/Images/ManualUsuario/NuevoCreado.png index de5e3d9..2dca293 100644 Binary files a/Images/ManualUsuario/NuevoCreado.png and b/Images/ManualUsuario/NuevoCreado.png differ diff --git a/Images/ManualUsuario/NuevoNombrar.png b/Images/ManualUsuario/NuevoNombrar.png index 13793d6..585d3c3 100644 Binary files a/Images/ManualUsuario/NuevoNombrar.png and b/Images/ManualUsuario/NuevoNombrar.png differ diff --git a/Images/ManualUsuario/Validar.png b/Images/ManualUsuario/Validar.png index 11f7a58..eb9cc6b 100644 Binary files a/Images/ManualUsuario/Validar.png and b/Images/ManualUsuario/Validar.png differ diff --git a/ManualTecnico.md b/ManualTecnico.md index 1b6f80a..9b26a07 100644 --- a/ManualTecnico.md +++ b/ManualTecnico.md @@ -9,7 +9,7 @@ 4. [Cálculo De Siguientes](#4-cálculo-de-siguientes) 5. [Cálculo De Transiciones](#5-cálculo-de-transiciones) 6. [Método De Thompson](#6-método-de-thompson) -7. [Diagrama De Clases](#7-diagrama-de-clases) +7. [Método De Thompson](#7-diagrama-de-clases) ## 1. Análisis Léxico * ### Tabla de Tokens @@ -44,13 +44,13 @@ ## 2. Análisis Sintáctico * ### Expresion Regular en Notación Polaca - Los operadores se escriben entre los operandos para operadores binarios y al final para operadores unarios. + Los operadores se escriben antes que los operandos.
Ejemplo:
- * operando | operando - * operando . operando - * operando \+ - * operando \* - * operando ? + * | operando operando + * . operando operando + * \+ operando + * \* operando + * ? operando * ### Gramática Libre del Contexto ```java @@ -82,12 +82,11 @@ SPECIFIC -> TK_char OPERATION -> - OPERATION '.' OPERATION | - OPERATION '|' OPERATION | - OPERATION '*' | - OPERATION '+' | - OPERATION '?' | - '(' OPERATION ')' | + '.' OPERATION OPERATION | + '|' OPERATION OPERATION | + '*' OPERATION | + '+' OPERATION | + '?' OPERATION | OPERAND OPERAND -> @@ -163,12 +162,11 @@ EVALUATION -> TK_id ':' TK_str ';' IDS:regex TK_prompt OPERATION:op TK_semicolon {:addTree(regex,op);:} ; OPERATION ::= - OPERATION:op1 TK_or OPERATION:op2 {:RESULT = buildTree("|",op1,op2,op1.anulable || op2.anulable,Type.OR); :} | - OPERATION:op1 TK_concat OPERATION:op2 {:RESULT = buildTree(".",op1,op2,op1.anulable && op2.anulable,Type.CONCAT);:} | - OPERATION:op1 TK_kleene {:RESULT = buildTree("*",op1,null,true,Type.KLEENE); :} | - OPERATION:op1 TK_positive {:RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); :} | - OPERATION:op1 TK_optional {:RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); :} | - TK_lpar OPERATION:op TK_rpar {:RESULT = op; :} | + TK_or OPERATION:op1 OPERATION:op2 {:RESULT = buildTree("|",op1,op2,op1.anulable || op2.anulable,Type.OR); :} | + TK_concat OPERATION:op1 OPERATION:op2 {:RESULT = buildTree(".",op1,op2,op1.anulable && op2.anulable,Type.CONCAT);:} | + TK_kleene OPERATION:op1 {:RESULT = buildTree("*",op1,null,true,Type.KLEENE); :} | + TK_positive OPERATION:op1 {:RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); :} | + TK_optional OPERATION:op1 {:RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); :} | OPERAND:op {:RESULT = op; :} ; OPERAND ::= diff --git a/ManualUsuario.md b/ManualUsuario.md index 8d23d54..ccf456c 100644 --- a/ManualUsuario.md +++ b/ManualUsuario.md @@ -100,19 +100,19 @@ El reporte se genera y abre automáticamente al momento del análisis si se dete [Subir](#exregan) ## 5. Expresión Regular -* ### Expresion Regular en Notación Infija +* ### Expresion Regular en Notación Polaca Los operadores se escriben antes que los operandos.
Ejemplo:
- * operando | operando - * operando . operando - * operando \+ - * operando \* - * operando ? -* ### Ejemplos de Expresiones Regulares en Notación Infija - |Notación Infija|Notación Prefija| + * | operando operando + * . operando operando + * \+ operando + * \* operando + * ? operando +* ### Ejemplos de Expresiones Regulares en Notación Prefija o Polaca + |Notación Prefija|Notación Infija| |----------------|---------------| - |((operando)* \| operando)+|+ \| * operando operando| - |(operando)+(operando \| operando)|. + operando \| operando operando| + |+ \| * operando operando|((operando)* \| operando)+| + |. + operando \| operando operando|(operando)+(operando \| operando)| [Subir](#exregan) @@ -128,9 +128,9 @@ CONJ: digit -> 0~9; --------------COMENTARIO MULTILÍNEA-------------- !> //Expresiones Regulares -REGEX1 -> ("1"?."2"*|"3"+."2"*)|("2"?."3"+."1"|"3"."1"*); -REGEX2 -> ("a"."b"."c")+|"a"?."x"."y"."z"|("0"|"1")+; -numero -> {digit}+.(".".{digit}+)?; +REGEX1 -> ||.?"1"*"2".+"3"*"2"|..?"2"+"3""1"."3"*"1"; +REGEX2 -> ||+.."a""b""c"...?"a""x""y""z"+|"0""1"; +numero -> .+{digit}?."."+{digit}; %% //Validación de Cadenas diff --git a/Proyecto1.jar b/Proyecto1.jar index 2ce3670..8036a1d 100644 Binary files a/Proyecto1.jar and b/Proyecto1.jar differ diff --git a/README.md b/README.md index 2c2ba20..3f1ca4d 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ CONJ: digit -> 0~9; --------------COMENTARIO MULTILÍNEA-------------- !> //Expresiones Regulares -REGEX1 -> ("1"?."2"*|"3"+."2"*)|("2"?."3"+."1"|"3"."1"*); -REGEX2 -> ("a"."b"."c")+|"a"?."x"."y"."z"|("0"|"1")+; -numero -> {digit}+.(".".{digit}+)?; +REGEX1 -> ||.?"1"*"2".+"3"*"2"|..?"2"+"3""1"."3"*"1"; +REGEX2 -> ||+.."a""b""c"...?"a""x""y""z"+|"0""1"; +numero -> .+{digit}?."."+{digit}; %% //Validación de Cadenas @@ -58,12 +58,11 @@ SPECIFIC -> TK_char OPERATION -> - OPERATION '.' OPERATION | - OPERATION '|' OPERATION | - OPERATION '*' | - OPERATION '+' | - OPERATION '?' | - '(' OPERATION ')' | + '.' OPERATION OPERATION | + '|' OPERATION OPERATION | + '*' OPERATION | + '+' OPERATION | + '?' OPERATION | OPERAND OPERAND -> diff --git a/bin/Files b/bin/Files index eaa0b93..e69de29 100644 Binary files a/bin/Files and b/bin/Files differ diff --git a/bin/Interface/IDE.class b/bin/Interface/IDE.class index 8d86771..068fd3f 100644 Binary files a/bin/Interface/IDE.class and b/bin/Interface/IDE.class differ diff --git a/bin/Language/Parser$CUP$Parser$actions.class b/bin/Language/Parser$CUP$Parser$actions.class index c94b317..4f4dd34 100644 Binary files a/bin/Language/Parser$CUP$Parser$actions.class and b/bin/Language/Parser$CUP$Parser$actions.class differ diff --git a/bin/Language/Parser.class b/bin/Language/Parser.class index b87476b..c37b7cf 100644 Binary files a/bin/Language/Parser.class and b/bin/Language/Parser.class differ diff --git a/bin/Language/Parser.cup b/bin/Language/Parser.cup index f2cd9e7..d31e618 100644 --- a/bin/Language/Parser.cup +++ b/bin/Language/Parser.cup @@ -101,9 +101,6 @@ non terminal String CHARACTER; non terminal String IDS; /* 5. Precedencias */ -precedence left TK_or; -precedence left TK_concat; -precedence left TK_positive, TK_kleene, TK_optional; /* 6. Gramatica Libre de Contexto */ @@ -155,12 +152,11 @@ CHARACTER ::= TK_kleene :ch {:RESULT = ch;:} ; OPERATION ::= - OPERATION:op1 TK_or OPERATION:op2 {:RESULT = buildTree("|",op1,op2,op1.anulable || op2.anulable,Type.OR); :} | - OPERATION:op1 TK_concat OPERATION:op2 {:RESULT = buildTree(".",op1,op2,op1.anulable && op2.anulable,Type.CONCAT);:} | - OPERATION:op1 TK_kleene {:RESULT = buildTree("*",op1,null,true,Type.KLEENE); :} | - OPERATION:op1 TK_positive {:RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); :} | - OPERATION:op1 TK_optional {:RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); :} | - TK_lpar OPERATION:op TK_rpar {:RESULT = op; :} | + TK_or OPERATION:op1 OPERATION:op2 {:RESULT = buildTree("|",op1,op2,op1.anulable || op2.anulable,Type.OR); :} | + TK_concat OPERATION:op1 OPERATION:op2 {:RESULT = buildTree(".",op1,op2,op1.anulable && op2.anulable,Type.CONCAT);:} | + TK_kleene OPERATION:op1 {:RESULT = buildTree("*",op1,null,true,Type.KLEENE); :} | + TK_positive OPERATION:op1 {:RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); :} | + TK_optional OPERATION:op1 {:RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); :} | OPERAND:op {:RESULT = op; :} ; OPERAND ::= diff --git a/bin/Language/ParserF$CUP$ParserF$actions.class b/bin/Language/ParserF$CUP$ParserF$actions.class index 92bd80a..b0bd132 100644 Binary files a/bin/Language/ParserF$CUP$ParserF$actions.class and b/bin/Language/ParserF$CUP$ParserF$actions.class differ diff --git a/bin/Language/ParserF.class b/bin/Language/ParserF.class index 917e15a..ae19c95 100644 Binary files a/bin/Language/ParserF.class and b/bin/Language/ParserF.class differ diff --git a/bin/Language/ParserF.cup b/bin/Language/ParserF.cup index 0d4f946..10d14c5 100644 --- a/bin/Language/ParserF.cup +++ b/bin/Language/ParserF.cup @@ -37,9 +37,6 @@ non terminal String CHARACTER; non terminal String IDS; /* 5. Precedencias */ -precedence left TK_or; -precedence left TK_concat; -precedence left TK_positive, TK_kleene, TK_optional; /* 6. Gramatica Libre de Contexto */ @@ -93,12 +90,11 @@ CHARACTER ::= TK_kleene :ch {:RESULT = ch;:} ; OPERATION ::= - OPERATION TK_or :op {:painter.OPERATOR(opleft,opright);:} OPERATION | - OPERATION TK_concat :op {:painter.OPERATOR(opleft,opright);:} OPERATION | - OPERATION TK_kleene :op {:painter.OPERATOR(opleft,opright);:} | - OPERATION TK_positive:op {:painter.OPERATOR(opleft,opright);:} | - OPERATION TK_optional:op {:painter.OPERATOR(opleft,opright);:} | - TK_lpar OPERATION TK_rpar | + TK_or :op {:painter.OPERATOR(opleft,opright);:} OPERATION OPERATION | + TK_concat :op {:painter.OPERATOR(opleft,opright);:} OPERATION OPERATION | + TK_kleene :op {:painter.OPERATOR(opleft,opright);:} OPERATION | + TK_positive:op {:painter.OPERATOR(opleft,opright);:} OPERATION | + TK_optional:op {:painter.OPERATOR(opleft,opright);:} OPERATION | OPERAND ; OPERAND ::= diff --git a/src/Interface/IDE.java b/src/Interface/IDE.java index 55df743..c29f7a1 100644 --- a/src/Interface/IDE.java +++ b/src/Interface/IDE.java @@ -226,7 +226,7 @@ void addComponents() { this.add(saveOLC); } void copyright() { - this.add(new Label(0,695,1390,15,"EXREGAN Infix",11)); + this.add(new Label(0,695,1390,15,"EXREGAN Prefix",11)); this.add(new Label(0,710,1390,15,"© Danny Hugo Bryan Tejaxún Pichiyá",11)); } void addToolBar() { diff --git a/src/Language/Parser.cup b/src/Language/Parser.cup index f2cd9e7..d31e618 100644 --- a/src/Language/Parser.cup +++ b/src/Language/Parser.cup @@ -101,9 +101,6 @@ non terminal String CHARACTER; non terminal String IDS; /* 5. Precedencias */ -precedence left TK_or; -precedence left TK_concat; -precedence left TK_positive, TK_kleene, TK_optional; /* 6. Gramatica Libre de Contexto */ @@ -155,12 +152,11 @@ CHARACTER ::= TK_kleene :ch {:RESULT = ch;:} ; OPERATION ::= - OPERATION:op1 TK_or OPERATION:op2 {:RESULT = buildTree("|",op1,op2,op1.anulable || op2.anulable,Type.OR); :} | - OPERATION:op1 TK_concat OPERATION:op2 {:RESULT = buildTree(".",op1,op2,op1.anulable && op2.anulable,Type.CONCAT);:} | - OPERATION:op1 TK_kleene {:RESULT = buildTree("*",op1,null,true,Type.KLEENE); :} | - OPERATION:op1 TK_positive {:RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); :} | - OPERATION:op1 TK_optional {:RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); :} | - TK_lpar OPERATION:op TK_rpar {:RESULT = op; :} | + TK_or OPERATION:op1 OPERATION:op2 {:RESULT = buildTree("|",op1,op2,op1.anulable || op2.anulable,Type.OR); :} | + TK_concat OPERATION:op1 OPERATION:op2 {:RESULT = buildTree(".",op1,op2,op1.anulable && op2.anulable,Type.CONCAT);:} | + TK_kleene OPERATION:op1 {:RESULT = buildTree("*",op1,null,true,Type.KLEENE); :} | + TK_positive OPERATION:op1 {:RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); :} | + TK_optional OPERATION:op1 {:RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); :} | OPERAND:op {:RESULT = op; :} ; OPERAND ::= diff --git a/src/Language/Parser.java b/src/Language/Parser.java index a15d7de..14c3b5d 100644 --- a/src/Language/Parser.java +++ b/src/Language/Parser.java @@ -42,7 +42,7 @@ public final Class getSymbolContainer() { /** Production table. */ protected static final short _production_table[][] = unpackFromStrings(new String[] { - "\000\063\000\002\002\004\000\002\002\005\000\002\002" + + "\000\062\000\002\002\004\000\002\002\005\000\002\002" + "\004\000\002\003\005\000\002\003\004\000\002\003\003" + "\000\002\003\004\000\002\003\003\000\002\004\004\000" + "\002\004\003\000\002\004\004\000\002\004\003\000\002" + @@ -53,11 +53,11 @@ public final Class getSymbolContainer() { "\014\003\000\002\014\003\000\002\014\003\000\002\014" + "\003\000\002\014\003\000\002\014\003\000\002\014\003" + "\000\002\012\005\000\002\012\005\000\002\012\004\000" + - "\002\012\004\000\002\012\004\000\002\012\005\000\002" + - "\012\003\000\002\013\005\000\002\013\003\000\002\013" + - "\003\000\002\013\003\000\002\013\003\000\002\006\004" + - "\000\002\006\003\000\002\006\004\000\002\006\003\000" + - "\002\007\006\000\002\015\003\000\002\015\003" }); + "\002\012\004\000\002\012\004\000\002\012\003\000\002" + + "\013\005\000\002\013\003\000\002\013\003\000\002\013" + + "\003\000\002\013\003\000\002\006\004\000\002\006\003" + + "\000\002\006\004\000\002\006\003\000\002\007\006\000" + + "\002\015\003\000\002\015\003" }); /** Access to production table. */ public short[][] production_table() {return _production_table;} @@ -65,78 +65,91 @@ public final Class getSymbolContainer() { /** Parse-action table. */ protected static final short[][] _action_table = unpackFromStrings(new String[] { - "\000\112\000\004\012\004\001\002\000\016\003\016\004" + + "\000\114\000\004\012\004\001\002\000\016\003\016\004" + "\014\005\020\007\013\013\011\030\010\001\002\000\004" + "\002\006\001\002\000\004\002\001\001\002\000\004\013" + - "\114\001\002\000\012\003\103\005\020\007\013\013\ufffa" + - "\001\002\000\004\002\uffff\001\002\000\016\003\100\004" + - "\014\005\020\007\013\013\ufffc\030\077\001\002\000\006" + - "\017\uffcf\021\uffcf\001\002\000\004\017\046\001\002\000" + + "\116\001\002\000\012\003\105\005\020\007\013\013\ufffa" + + "\001\002\000\004\002\uffff\001\002\000\016\003\102\004" + + "\014\005\020\007\013\013\ufffc\030\101\001\002\000\006" + + "\017\uffd0\021\uffd0\001\002\000\004\017\050\001\002\000" + "\004\021\021\001\002\000\016\003\ufff6\004\ufff6\005\ufff6" + "\007\ufff6\013\ufff6\030\ufff6\001\002\000\016\003\ufff8\004" + "\ufff8\005\ufff8\007\ufff8\013\ufff8\030\ufff8\001\002\000\006" + - "\017\uffd0\021\uffd0\001\002\000\016\006\024\012\027\014" + - "\030\031\023\032\031\033\026\001\002\000\016\016\045" + - "\023\035\024\040\025\034\026\037\027\036\001\002\000" + - "\020\015\uffd7\016\uffd7\023\uffd7\024\uffd7\025\uffd7\026\uffd7" + - "\027\uffd7\001\002\000\020\015\uffd9\016\uffd9\023\uffd9\024" + - "\uffd9\025\uffd9\026\uffd9\027\uffd9\001\002\000\020\015\uffdb" + - "\016\uffdb\023\uffdb\024\uffdb\025\uffdb\026\uffdb\027\uffdb\001" + - "\002\000\020\015\uffd8\016\uffd8\023\uffd8\024\uffd8\025\uffd8" + - "\026\uffd8\027\uffd8\001\002\000\004\005\043\001\002\000" + - "\016\006\024\012\027\014\030\031\023\032\031\033\026" + - "\001\002\000\020\015\uffd6\016\uffd6\023\uffd6\024\uffd6\025" + - "\uffd6\026\uffd6\027\uffd6\001\002\000\016\015\033\023\035" + - "\024\040\025\034\026\037\027\036\001\002\000\020\015" + - "\uffdc\016\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc\027\uffdc" + - "\001\002\000\020\015\uffde\016\uffde\023\uffde\024\uffde\025" + - "\uffde\026\uffde\027\uffde\001\002\000\016\006\024\012\027" + - "\014\030\031\023\032\031\033\026\001\002\000\020\015" + - "\uffdd\016\uffdd\023\uffdd\024\uffdd\025\uffdd\026\uffdd\027\uffdd" + - "\001\002\000\020\015\uffdf\016\uffdf\023\uffdf\024\uffdf\025" + - "\uffdf\026\uffdf\027\uffdf\001\002\000\016\006\024\012\027" + - "\014\030\031\023\032\031\033\026\001\002\000\020\015" + - "\uffe1\016\uffe1\023\035\024\uffe1\025\034\026\037\027\036" + - "\001\002\000\020\015\uffe0\016\uffe0\023\uffe0\024\uffe0\025" + - "\034\026\037\027\036\001\002\000\004\013\044\001\002" + - "\000\020\015\uffda\016\uffda\023\uffda\024\uffda\025\uffda\026" + - "\uffda\027\uffda\001\002\000\016\003\ufff4\004\ufff4\005\ufff4" + - "\007\ufff4\013\ufff4\030\ufff4\001\002\000\006\005\020\007" + - "\013\001\002\000\004\021\050\001\002\000\036\007\060" + - "\010\070\011\063\012\071\013\055\014\066\015\052\016" + - "\057\017\056\020\067\023\051\024\054\025\061\026\064" + - "\001\002\000\010\016\uffe4\020\uffe4\022\uffe4\001\002\000" + - "\010\016\uffe9\020\uffe9\022\uffe9\001\002\000\010\016\ufff0" + - "\020\ufff0\022\075\001\002\000\010\016\uffe5\020\uffe5\022" + - "\uffe5\001\002\000\010\016\uffeb\020\uffeb\022\uffeb\001\002" + - "\000\010\016\uffe7\020\uffe7\022\uffe7\001\002\000\010\016" + - "\uffe8\020\uffe8\022\uffe8\001\002\000\010\016\uffef\020\uffef" + - "\022\uffef\001\002\000\010\016\uffe3\020\uffe3\022\uffe3\001" + - "\002\000\004\016\074\001\002\000\010\016\uffed\020\uffed" + - "\022\uffed\001\002\000\010\016\uffe2\020\uffe2\022\uffe2\001" + - "\002\000\006\016\ufff2\020\072\001\002\000\010\016\uffea" + - "\020\uffea\022\uffea\001\002\000\010\016\uffe6\020\uffe6\022" + - "\uffe6\001\002\000\010\016\uffee\020\uffee\022\uffee\001\002" + - "\000\010\016\uffec\020\uffec\022\uffec\001\002\000\036\007" + - "\060\010\070\011\063\012\071\013\055\014\066\015\052" + - "\016\057\017\056\020\067\023\051\024\054\025\061\026" + - "\064\001\002\000\006\016\ufff1\020\ufff1\001\002\000\016" + - "\003\ufff5\004\ufff5\005\ufff5\007\ufff5\013\ufff5\030\ufff5\001" + - "\002\000\036\007\060\010\070\011\063\012\071\013\055" + - "\014\066\015\052\016\057\017\056\020\067\023\051\024" + - "\054\025\061\026\064\001\002\000\004\016\ufff3\001\002" + - "\000\012\003\103\005\020\007\013\013\ufffd\001\002\000" + - "\016\003\ufff7\004\ufff7\005\ufff7\007\ufff7\013\ufff7\030\ufff7" + - "\001\002\000\016\003\ufff9\004\ufff9\005\ufff9\007\ufff9\013" + - "\ufff9\030\ufff9\001\002\000\004\017\110\001\002\000\012" + - "\003\uffd2\005\uffd2\007\uffd2\013\uffd2\001\002\000\012\003" + - "\106\005\020\007\013\013\ufffe\001\002\000\012\003\uffd4" + - "\005\uffd4\007\uffd4\013\uffd4\001\002\000\012\003\uffd3\005" + - "\uffd3\007\uffd3\013\uffd3\001\002\000\012\003\uffd5\005\uffd5" + - "\007\uffd5\013\uffd5\001\002\000\004\006\111\001\002\000" + - "\004\016\112\001\002\000\012\003\uffd1\005\uffd1\007\uffd1" + - "\013\uffd1\001\002\000\012\003\106\005\020\007\013\013" + - "\ufffb\001\002\000\004\002\000\001\002" }); + "\017\uffd1\021\uffd1\001\002\000\026\006\024\012\033\023" + + "\022\024\023\025\026\026\031\027\030\031\027\032\034" + + "\033\025\001\002\000\026\006\024\012\033\023\022\024" + + "\023\025\026\026\031\027\030\031\027\032\034\033\025" + + "\001\002\000\026\006\024\012\033\023\022\024\023\025" + + "\026\026\031\027\030\031\027\032\034\033\025\001\002" + + "\000\030\006\uffda\012\uffda\016\uffda\023\uffda\024\uffda\025" + + "\uffda\026\uffda\027\uffda\031\uffda\032\uffda\033\uffda\001\002" + + "\000\030\006\uffd9\012\uffd9\016\uffd9\023\uffd9\024\uffd9\025" + + "\uffd9\026\uffd9\027\uffd9\031\uffd9\032\uffd9\033\uffd9\001\002" + + "\000\026\006\024\012\033\023\022\024\023\025\026\026" + + "\031\027\030\031\027\032\034\033\025\001\002\000\030" + + "\006\uffd8\012\uffd8\016\uffd8\023\uffd8\024\uffd8\025\uffd8\026" + + "\uffd8\027\uffd8\031\uffd8\032\uffd8\033\uffd8\001\002\000\026" + + "\006\024\012\033\023\022\024\023\025\026\026\031\027" + + "\030\031\027\032\034\033\025\001\002\000\026\006\024" + + "\012\033\023\022\024\023\025\026\026\031\027\030\031" + + "\027\032\034\033\025\001\002\000\004\016\040\001\002" + + "\000\004\005\036\001\002\000\030\006\uffd7\012\uffd7\016" + + "\uffd7\023\uffd7\024\uffd7\025\uffd7\026\uffd7\027\uffd7\031\uffd7" + + "\032\uffd7\033\uffd7\001\002\000\030\006\uffdc\012\uffdc\016" + + "\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc\027\uffdc\031\uffdc" + + "\032\uffdc\033\uffdc\001\002\000\004\013\037\001\002\000" + + "\030\006\uffdb\012\uffdb\016\uffdb\023\uffdb\024\uffdb\025\uffdb" + + "\026\uffdb\027\uffdb\031\uffdb\032\uffdb\033\uffdb\001\002\000" + + "\016\003\ufff4\004\ufff4\005\ufff4\007\ufff4\013\ufff4\030\ufff4" + + "\001\002\000\030\006\uffdf\012\uffdf\016\uffdf\023\uffdf\024" + + "\uffdf\025\uffdf\026\uffdf\027\uffdf\031\uffdf\032\uffdf\033\uffdf" + + "\001\002\000\030\006\uffdd\012\uffdd\016\uffdd\023\uffdd\024" + + "\uffdd\025\uffdd\026\uffdd\027\uffdd\031\uffdd\032\uffdd\033\uffdd" + + "\001\002\000\030\006\uffde\012\uffde\016\uffde\023\uffde\024" + + "\uffde\025\uffde\026\uffde\027\uffde\031\uffde\032\uffde\033\uffde" + + "\001\002\000\026\006\024\012\033\023\022\024\023\025" + + "\026\026\031\027\030\031\027\032\034\033\025\001\002" + + "\000\030\006\uffe1\012\uffe1\016\uffe1\023\uffe1\024\uffe1\025" + + "\uffe1\026\uffe1\027\uffe1\031\uffe1\032\uffe1\033\uffe1\001\002" + + "\000\026\006\024\012\033\023\022\024\023\025\026\026" + + "\031\027\030\031\027\032\034\033\025\001\002\000\030" + + "\006\uffe0\012\uffe0\016\uffe0\023\uffe0\024\uffe0\025\uffe0\026" + + "\uffe0\027\uffe0\031\uffe0\032\uffe0\033\uffe0\001\002\000\006" + + "\005\020\007\013\001\002\000\004\021\052\001\002\000" + + "\036\007\062\010\072\011\065\012\073\013\057\014\070" + + "\015\054\016\061\017\060\020\071\023\053\024\056\025" + + "\063\026\066\001\002\000\010\016\uffe4\020\uffe4\022\uffe4" + + "\001\002\000\010\016\uffe9\020\uffe9\022\uffe9\001\002\000" + + "\010\016\ufff0\020\ufff0\022\077\001\002\000\010\016\uffe5" + + "\020\uffe5\022\uffe5\001\002\000\010\016\uffeb\020\uffeb\022" + + "\uffeb\001\002\000\010\016\uffe7\020\uffe7\022\uffe7\001\002" + + "\000\010\016\uffe8\020\uffe8\022\uffe8\001\002\000\010\016" + + "\uffef\020\uffef\022\uffef\001\002\000\010\016\uffe3\020\uffe3" + + "\022\uffe3\001\002\000\004\016\076\001\002\000\010\016" + + "\uffed\020\uffed\022\uffed\001\002\000\010\016\uffe2\020\uffe2" + + "\022\uffe2\001\002\000\006\016\ufff2\020\074\001\002\000" + + "\010\016\uffea\020\uffea\022\uffea\001\002\000\010\016\uffe6" + + "\020\uffe6\022\uffe6\001\002\000\010\016\uffee\020\uffee\022" + + "\uffee\001\002\000\010\016\uffec\020\uffec\022\uffec\001\002" + + "\000\036\007\062\010\072\011\065\012\073\013\057\014" + + "\070\015\054\016\061\017\060\020\071\023\053\024\056" + + "\025\063\026\066\001\002\000\006\016\ufff1\020\ufff1\001" + + "\002\000\016\003\ufff5\004\ufff5\005\ufff5\007\ufff5\013\ufff5" + + "\030\ufff5\001\002\000\036\007\062\010\072\011\065\012" + + "\073\013\057\014\070\015\054\016\061\017\060\020\071" + + "\023\053\024\056\025\063\026\066\001\002\000\004\016" + + "\ufff3\001\002\000\012\003\105\005\020\007\013\013\ufffd" + + "\001\002\000\016\003\ufff7\004\ufff7\005\ufff7\007\ufff7\013" + + "\ufff7\030\ufff7\001\002\000\016\003\ufff9\004\ufff9\005\ufff9" + + "\007\ufff9\013\ufff9\030\ufff9\001\002\000\004\017\112\001" + + "\002\000\012\003\uffd3\005\uffd3\007\uffd3\013\uffd3\001\002" + + "\000\012\003\110\005\020\007\013\013\ufffe\001\002\000" + + "\012\003\uffd5\005\uffd5\007\uffd5\013\uffd5\001\002\000\012" + + "\003\uffd4\005\uffd4\007\uffd4\013\uffd4\001\002\000\012\003" + + "\uffd6\005\uffd6\007\uffd6\013\uffd6\001\002\000\004\006\113" + + "\001\002\000\004\016\114\001\002\000\012\003\uffd2\005" + + "\uffd2\007\uffd2\013\uffd2\001\002\000\012\003\110\005\020" + + "\007\013\013\ufffb\001\002\000\004\002\000\001\002" }); /** Access to parse-action table. */ public short[][] action_table() {return _action_table;} @@ -144,34 +157,36 @@ public final Class getSymbolContainer() { /** reduce_goto table. */ protected static final short[][] _reduce_table = unpackFromStrings(new String[] { - "\000\112\000\004\002\004\001\001\000\012\003\006\004" + + "\000\114\000\004\002\004\001\001\000\012\003\006\004" + "\011\005\016\015\014\001\001\000\002\001\001\000\002" + - "\001\001\000\002\001\001\000\010\006\112\007\104\015" + - "\101\001\001\000\002\001\001\000\006\005\100\015\014" + + "\001\001\000\002\001\001\000\010\006\114\007\106\015" + + "\103\001\001\000\002\001\001\000\006\005\102\015\014" + "\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\006\012\021\013\024\001\001\000\002\001\001\000" + + "\000\006\012\031\013\034\001\001\000\006\012\045\013" + + "\034\001\001\000\006\012\043\013\034\001\001\000\002" + + "\001\001\000\002\001\001\000\006\012\042\013\034\001" + + "\001\000\002\001\001\000\006\012\041\013\034\001\001" + + "\000\006\012\040\013\034\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\006\012\031\013\024\001" + - "\001\000\002\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\006\012\041\013\024\001\001\000" + - "\002\001\001\000\002\001\001\000\006\012\040\013\024" + - "\001\001\000\002\001\001\000\002\001\001\000\002\001" + - "\001\000\002\001\001\000\002\001\001\000\004\015\046" + - "\001\001\000\002\001\001\000\010\010\061\011\064\014" + - "\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\006\012\044" + + "\013\034\001\001\000\002\001\001\000\006\012\046\013" + + "\034\001\001\000\002\001\001\000\004\015\050\001\001" + + "\000\002\001\001\000\010\010\063\011\066\014\054\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\014\072\001\001\000" + - "\002\001\001\000\002\001\001\000\004\014\075\001\001" + - "\000\002\001\001\000\010\006\103\007\104\015\101\001" + + "\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\006\007\106\015\101\001\001\000" + + "\000\002\001\001\000\004\014\074\001\001\000\002\001" + + "\001\000\002\001\001\000\004\014\077\001\001\000\002" + + "\001\001\000\010\006\105\007\106\015\103\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\006\007" + - "\106\015\101\001\001\000\002\001\001" }); + "\001\001\000\006\007\110\015\103\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\006\007\110\015" + + "\103\001\001\000\002\001\001" }); /** Access to reduce_goto table. */ public short[][] reduce_table() {return _reduce_table;} @@ -667,12 +682,12 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 32: // OPERATION ::= OPERATION TK_or OPERATION + case 32: // OPERATION ::= TK_or OPERATION OPERATION { Node RESULT =null; - int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; - int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; - Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; + int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; int op2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; int op2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; Node op2 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; @@ -682,12 +697,12 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 33: // OPERATION ::= OPERATION TK_concat OPERATION + case 33: // OPERATION ::= TK_concat OPERATION OPERATION { Node RESULT =null; - int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left; - int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right; - Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value; + int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; + int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; + Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; int op2left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; int op2right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; Node op2 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; @@ -697,67 +712,55 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 34: // OPERATION ::= OPERATION TK_kleene + case 34: // OPERATION ::= TK_kleene OPERATION { Node RESULT =null; - int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; RESULT = buildTree("*",op1,null,true,Type.KLEENE); CUP$Parser$result = parser.getSymbolFactory().newSymbol("OPERATION",8, ((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: // OPERATION ::= OPERATION TK_positive + case 35: // OPERATION ::= TK_positive OPERATION { Node RESULT =null; - int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; RESULT = buildTree("+",op1,null,op1.anulable,Type.POSITIVE); CUP$Parser$result = parser.getSymbolFactory().newSymbol("OPERATION",8, ((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 36: // OPERATION ::= OPERATION TK_optional + case 36: // OPERATION ::= TK_optional OPERATION { Node RESULT =null; - int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; + int op1left = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; + int op1right = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; + Node op1 = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; RESULT = buildTree("?",op1,null,true,Type.OPTIONAL); CUP$Parser$result = parser.getSymbolFactory().newSymbol("OPERATION",8, ((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: // OPERATION ::= TK_lpar OPERATION TK_rpar - { - Node RESULT =null; - int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; - int opright = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right; - Node op = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value; - RESULT = op; - CUP$Parser$result = parser.getSymbolFactory().newSymbol("OPERATION",8, ((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 38: // OPERATION ::= OPERAND + case 37: // OPERATION ::= OPERAND { Node RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; int opright = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right; Node op = (Node)((java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value; - RESULT = op; + RESULT = op; CUP$Parser$result = parser.getSymbolFactory().newSymbol("OPERATION",8, ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT); } return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 39: // OPERAND ::= TK_lbr TK_id TK_rbr + case 38: // OPERAND ::= TK_lbr TK_id TK_rbr { Node RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left; @@ -769,7 +772,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 40: // OPERAND ::= TK_str + case 39: // OPERAND ::= TK_str { Node RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; @@ -781,7 +784,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 41: // OPERAND ::= TK_newline + case 40: // OPERAND ::= TK_newline { Node RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; @@ -793,7 +796,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 42: // OPERAND ::= TK_singlequ + case 41: // OPERAND ::= TK_singlequ { Node RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; @@ -805,7 +808,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 43: // OPERAND ::= TK_doublequ + case 42: // OPERAND ::= TK_doublequ { Node RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; @@ -817,7 +820,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 44: // EVALUATIONS ::= EVALUATIONS EVALUATION + case 43: // EVALUATIONS ::= EVALUATIONS EVALUATION { Object RESULT =null; @@ -826,7 +829,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 45: // EVALUATIONS ::= EVALUATION + case 44: // EVALUATIONS ::= EVALUATION { Object RESULT =null; @@ -835,7 +838,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 46: // EVALUATIONS ::= EVALUATIONS error + case 45: // EVALUATIONS ::= EVALUATIONS error { Object RESULT =null; @@ -844,7 +847,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 47: // EVALUATIONS ::= error + case 46: // EVALUATIONS ::= error { Object RESULT =null; @@ -853,7 +856,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 48: // EVALUATION ::= IDS TK_colon TK_str TK_semicolon + case 47: // EVALUATION ::= IDS TK_colon TK_str TK_semicolon { Object RESULT =null; int expleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left; @@ -868,7 +871,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 49: // IDS ::= TK_id + case 48: // IDS ::= TK_id { String RESULT =null; int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; @@ -880,7 +883,7 @@ class CUP$Parser$actions { return CUP$Parser$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 50: // IDS ::= TK_char + case 49: // IDS ::= TK_char { String RESULT =null; int idleft = ((java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left; diff --git a/src/Language/ParserF.cup b/src/Language/ParserF.cup index 0d4f946..10d14c5 100644 --- a/src/Language/ParserF.cup +++ b/src/Language/ParserF.cup @@ -37,9 +37,6 @@ non terminal String CHARACTER; non terminal String IDS; /* 5. Precedencias */ -precedence left TK_or; -precedence left TK_concat; -precedence left TK_positive, TK_kleene, TK_optional; /* 6. Gramatica Libre de Contexto */ @@ -93,12 +90,11 @@ CHARACTER ::= TK_kleene :ch {:RESULT = ch;:} ; OPERATION ::= - OPERATION TK_or :op {:painter.OPERATOR(opleft,opright);:} OPERATION | - OPERATION TK_concat :op {:painter.OPERATOR(opleft,opright);:} OPERATION | - OPERATION TK_kleene :op {:painter.OPERATOR(opleft,opright);:} | - OPERATION TK_positive:op {:painter.OPERATOR(opleft,opright);:} | - OPERATION TK_optional:op {:painter.OPERATOR(opleft,opright);:} | - TK_lpar OPERATION TK_rpar | + TK_or :op {:painter.OPERATOR(opleft,opright);:} OPERATION OPERATION | + TK_concat :op {:painter.OPERATOR(opleft,opright);:} OPERATION OPERATION | + TK_kleene :op {:painter.OPERATOR(opleft,opright);:} OPERATION | + TK_positive:op {:painter.OPERATOR(opleft,opright);:} OPERATION | + TK_optional:op {:painter.OPERATOR(opleft,opright);:} OPERATION | OPERAND ; OPERAND ::= diff --git a/src/Language/ParserF.java b/src/Language/ParserF.java index c5bc0eb..94f4e9c 100644 --- a/src/Language/ParserF.java +++ b/src/Language/ParserF.java @@ -32,7 +32,7 @@ public final Class getSymbolContainer() { /** Production table. */ protected static final short _production_table[][] = unpackFromStrings(new String[] { - "\000\074\000\002\002\004\000\002\002\005\000\002\002" + + "\000\076\000\002\002\004\000\002\002\005\000\002\002" + "\004\000\002\003\005\000\002\003\004\000\002\003\003" + "\000\002\003\004\000\002\003\003\000\002\010\003\000" + "\002\004\004\000\002\004\003\000\002\004\004\000\002" + @@ -44,13 +44,14 @@ public final Class getSymbolContainer() { "\003\000\002\015\003\000\002\015\003\000\002\015\003" + "\000\002\015\003\000\002\015\003\000\002\015\003\000" + "\002\015\003\000\002\015\003\000\002\023\002\000\002" + - "\013\006\000\002\024\002\000\002\013\006\000\002\013" + - "\004\000\002\013\004\000\002\013\004\000\002\013\005" + - "\000\002\013\003\000\002\014\005\000\002\014\003\000" + - "\002\014\003\000\002\014\003\000\002\014\003\000\002" + - "\006\004\000\002\006\003\000\002\006\004\000\002\006" + - "\003\000\002\025\002\000\002\026\002\000\002\007\010" + - "\000\002\016\003\000\002\016\003" }); + "\013\006\000\002\024\002\000\002\013\006\000\002\025" + + "\002\000\002\013\005\000\002\026\002\000\002\013\005" + + "\000\002\027\002\000\002\013\005\000\002\013\003\000" + + "\002\014\005\000\002\014\003\000\002\014\003\000\002" + + "\014\003\000\002\014\003\000\002\006\004\000\002\006" + + "\003\000\002\006\004\000\002\006\003\000\002\030\002" + + "\000\002\031\002\000\002\007\010\000\002\016\003\000" + + "\002\016\003" }); /** Access to production table. */ public short[][] production_table() {return _production_table;} @@ -58,84 +59,104 @@ public final Class getSymbolContainer() { /** Parse-action table. */ protected static final short[][] _action_table = unpackFromStrings(new String[] { - "\000\123\000\004\012\004\001\002\000\016\003\017\004" + + "\000\130\000\004\012\004\001\002\000\016\003\017\004" + "\015\005\021\007\014\013\012\030\011\001\002\000\004" + "\002\006\001\002\000\004\002\001\001\002\000\012\003" + - "\112\005\021\007\014\013\ufffa\001\002\000\004\013\124" + + "\117\005\021\007\014\013\ufffa\001\002\000\004\013\131" + "\001\002\000\012\003\ufff9\005\ufff9\007\ufff9\013\ufff9\001" + - "\002\000\004\002\uffff\001\002\000\016\003\107\004\015" + + "\002\000\004\002\uffff\001\002\000\016\003\114\004\015" + "\005\021\007\014\013\ufffc\030\011\001\002\000\010\013" + - "\uffc6\017\uffc6\021\uffc6\001\002\000\004\017\ufff4\001\002" + + "\uffc4\017\uffc4\021\uffc4\001\002\000\004\017\ufff4\001\002" + "\000\004\021\ufff1\001\002\000\016\003\ufff5\004\ufff5\005" + "\ufff5\007\ufff5\013\ufff5\030\ufff5\001\002\000\016\003\ufff7" + "\004\ufff7\005\ufff7\007\ufff7\013\ufff7\030\ufff7\001\002\000" + - "\010\013\uffc7\017\uffc7\021\uffc7\001\002\000\004\021\023" + - "\001\002\000\016\006\026\012\027\014\030\031\025\032" + - "\033\033\032\001\002\000\016\016\051\023\037\024\042" + - "\025\036\026\040\027\041\001\002\000\020\015\uffd0\016" + - "\uffd0\023\uffd0\024\uffd0\025\uffd0\026\uffd0\027\uffd0\001\002" + - "\000\020\015\uffd2\016\uffd2\023\uffd2\024\uffd2\025\uffd2\026" + - "\uffd2\027\uffd2\001\002\000\006\005\021\007\014\001\002" + - "\000\016\006\026\012\027\014\030\031\025\032\033\033" + - "\032\001\002\000\020\015\uffd4\016\uffd4\023\uffd4\024\uffd4" + - "\025\uffd4\026\uffd4\027\uffd4\001\002\000\020\015\uffd1\016" + - "\uffd1\023\uffd1\024\uffd1\025\uffd1\026\uffd1\027\uffd1\001\002" + - "\000\020\015\uffcf\016\uffcf\023\uffcf\024\uffcf\025\uffcf\026" + - "\uffcf\027\uffcf\001\002\000\016\015\035\023\037\024\042" + - "\025\036\026\040\027\041\001\002\000\020\015\uffd5\016" + - "\uffd5\023\uffd5\024\uffd5\025\uffd5\026\uffd5\027\uffd5\001\002" + - "\000\020\015\uffd7\016\uffd7\023\uffd7\024\uffd7\025\uffd7\026" + - "\uffd7\027\uffd7\001\002\000\016\006\uffda\012\uffda\014\uffda" + - "\031\uffda\032\uffda\033\uffda\001\002\000\020\015\uffd8\016" + - "\uffd8\023\uffd8\024\uffd8\025\uffd8\026\uffd8\027\uffd8\001\002" + - "\000\020\015\uffd6\016\uffd6\023\uffd6\024\uffd6\025\uffd6\026" + - "\uffd6\027\uffd6\001\002\000\016\006\uffdc\012\uffdc\014\uffdc" + - "\031\uffdc\032\uffdc\033\uffdc\001\002\000\016\006\026\012" + - "\027\014\030\031\025\032\033\033\032\001\002\000\020" + - "\015\uffdb\016\uffdb\023\037\024\uffdb\025\036\026\040\027" + - "\041\001\002\000\016\006\026\012\027\014\030\031\025" + - "\032\033\033\032\001\002\000\020\015\uffd9\016\uffd9\023" + - "\uffd9\024\uffd9\025\036\026\040\027\041\001\002\000\004" + - "\013\050\001\002\000\020\015\uffd3\016\uffd3\023\uffd3\024" + - "\uffd3\025\uffd3\026\uffd3\027\uffd3\001\002\000\016\003\ufff0" + - "\004\ufff0\005\ufff0\007\ufff0\013\ufff0\030\ufff0\001\002\000" + - "\004\017\053\001\002\000\006\005\021\007\014\001\002" + - "\000\004\021\ufff3\001\002\000\004\021\056\001\002\000" + - "\036\007\066\010\076\011\071\012\077\013\063\014\074" + - "\015\060\016\065\017\064\020\075\023\057\024\062\025" + - "\067\026\072\001\002\000\010\016\uffdf\020\uffdf\022\uffdf" + + "\010\013\uffc5\017\uffc5\021\uffc5\001\002\000\004\021\023" + + "\001\002\000\026\006\025\012\036\023\024\024\026\025" + + "\030\026\033\027\032\031\031\032\035\033\027\001\002" + + "\000\026\006\uffda\012\uffda\023\uffda\024\uffda\025\uffda\026" + + "\uffda\027\uffda\031\uffda\032\uffda\033\uffda\001\002\000\030" + + "\006\uffd0\012\uffd0\016\uffd0\023\uffd0\024\uffd0\025\uffd0\026" + + "\uffd0\027\uffd0\031\uffd0\032\uffd0\033\uffd0\001\002\000\026" + + "\006\uffdc\012\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc\027" + + "\uffdc\031\uffdc\032\uffdc\033\uffdc\001\002\000\030\006\uffcf" + + "\012\uffcf\016\uffcf\023\uffcf\024\uffcf\025\uffcf\026\uffcf\027" + + "\uffcf\031\uffcf\032\uffcf\033\uffcf\001\002\000\026\006\uffd6" + + "\012\uffd6\023\uffd6\024\uffd6\025\uffd6\026\uffd6\027\uffd6\031" + + "\uffd6\032\uffd6\033\uffd6\001\002\000\030\006\uffce\012\uffce" + + "\016\uffce\023\uffce\024\uffce\025\uffce\026\uffce\027\uffce\031" + + "\uffce\032\uffce\033\uffce\001\002\000\026\006\uffd4\012\uffd4" + + "\023\uffd4\024\uffd4\025\uffd4\026\uffd4\027\uffd4\031\uffd4\032" + + "\uffd4\033\uffd4\001\002\000\026\006\uffd8\012\uffd8\023\uffd8" + + "\024\uffd8\025\uffd8\026\uffd8\027\uffd8\031\uffd8\032\uffd8\033" + + "\uffd8\001\002\000\004\016\042\001\002\000\030\006\uffcd" + + "\012\uffcd\016\uffcd\023\uffcd\024\uffcd\025\uffcd\026\uffcd\027" + + "\uffcd\031\uffcd\032\uffcd\033\uffcd\001\002\000\006\005\021" + + "\007\014\001\002\000\030\006\uffd2\012\uffd2\016\uffd2\023" + + "\uffd2\024\uffd2\025\uffd2\026\uffd2\027\uffd2\031\uffd2\032\uffd2" + + "\033\uffd2\001\002\000\004\013\041\001\002\000\030\006" + + "\uffd1\012\uffd1\016\uffd1\023\uffd1\024\uffd1\025\uffd1\026\uffd1" + + "\027\uffd1\031\uffd1\032\uffd1\033\uffd1\001\002\000\016\003" + + "\ufff0\004\ufff0\005\ufff0\007\ufff0\013\ufff0\030\ufff0\001\002" + + "\000\026\006\025\012\036\023\024\024\026\025\030\026" + + "\033\027\032\031\031\032\035\033\027\001\002\000\030" + + "\006\uffd7\012\uffd7\016\uffd7\023\uffd7\024\uffd7\025\uffd7\026" + + "\uffd7\027\uffd7\031\uffd7\032\uffd7\033\uffd7\001\002\000\026" + + "\006\025\012\036\023\024\024\026\025\030\026\033\027" + + "\032\031\031\032\035\033\027\001\002\000\030\006\uffd3" + + "\012\uffd3\016\uffd3\023\uffd3\024\uffd3\025\uffd3\026\uffd3\027" + + "\uffd3\031\uffd3\032\uffd3\033\uffd3\001\002\000\026\006\025" + + "\012\036\023\024\024\026\025\030\026\033\027\032\031" + + "\031\032\035\033\027\001\002\000\030\006\uffd5\012\uffd5" + + "\016\uffd5\023\uffd5\024\uffd5\025\uffd5\026\uffd5\027\uffd5\031" + + "\uffd5\032\uffd5\033\uffd5\001\002\000\026\006\025\012\036" + + "\023\024\024\026\025\030\026\033\027\032\031\031\032" + + "\035\033\027\001\002\000\026\006\025\012\036\023\024" + + "\024\026\025\030\026\033\027\032\031\031\032\035\033" + + "\027\001\002\000\030\006\uffdb\012\uffdb\016\uffdb\023\uffdb" + + "\024\uffdb\025\uffdb\026\uffdb\027\uffdb\031\uffdb\032\uffdb\033" + + "\uffdb\001\002\000\026\006\025\012\036\023\024\024\026" + + "\025\030\026\033\027\032\031\031\032\035\033\027\001" + + "\002\000\026\006\025\012\036\023\024\024\026\025\030" + + "\026\033\027\032\031\031\032\035\033\027\001\002\000" + + "\030\006\uffd9\012\uffd9\016\uffd9\023\uffd9\024\uffd9\025\uffd9" + + "\026\uffd9\027\uffd9\031\uffd9\032\uffd9\033\uffd9\001\002\000" + + "\004\017\060\001\002\000\006\005\021\007\014\001\002" + + "\000\004\021\ufff3\001\002\000\004\021\063\001\002\000" + + "\036\007\073\010\103\011\076\012\104\013\070\014\101" + + "\015\065\016\072\017\071\020\102\023\064\024\067\025" + + "\074\026\077\001\002\000\010\016\uffdf\020\uffdf\022\uffdf" + "\001\002\000\010\016\uffe4\020\uffe4\022\uffe4\001\002\000" + "\010\016\uffeb\020\uffeb\022\uffef\001\002\000\010\016\uffe0" + "\020\uffe0\022\uffe0\001\002\000\010\016\uffe6\020\uffe6\022" + "\uffe6\001\002\000\010\016\uffe2\020\uffe2\022\uffe2\001\002" + "\000\010\016\uffe3\020\uffe3\022\uffe3\001\002\000\010\016" + "\uffea\020\uffea\022\uffea\001\002\000\010\016\uffde\020\uffde" + - "\022\uffde\001\002\000\004\016\102\001\002\000\010\016" + + "\022\uffde\001\002\000\004\016\107\001\002\000\010\016" + "\uffe8\020\uffe8\022\uffe8\001\002\000\010\016\uffdd\020\uffdd" + - "\022\uffdd\001\002\000\006\016\uffed\020\100\001\002\000" + + "\022\uffdd\001\002\000\006\016\uffed\020\105\001\002\000" + "\010\016\uffe5\020\uffe5\022\uffe5\001\002\000\010\016\uffe1" + "\020\uffe1\022\uffe1\001\002\000\010\016\uffe9\020\uffe9\022" + "\uffe9\001\002\000\010\016\uffe7\020\uffe7\022\uffe7\001\002" + - "\000\036\007\066\010\076\011\071\012\077\013\063\014" + - "\074\015\060\016\065\017\064\020\075\023\057\024\062" + - "\025\067\026\072\001\002\000\006\016\uffec\020\uffec\001" + + "\000\036\007\073\010\103\011\076\012\104\013\070\014" + + "\101\015\065\016\072\017\071\020\102\023\064\024\067" + + "\025\074\026\077\001\002\000\006\016\uffec\020\uffec\001" + "\002\000\016\003\ufff2\004\ufff2\005\ufff2\007\ufff2\013\ufff2" + - "\030\ufff2\001\002\000\004\022\104\001\002\000\036\007" + - "\066\010\076\011\071\012\077\013\063\014\074\015\060" + - "\016\065\017\064\020\075\023\057\024\062\025\067\026" + - "\072\001\002\000\004\016\uffee\001\002\000\012\003\112" + + "\030\ufff2\001\002\000\004\022\111\001\002\000\036\007" + + "\073\010\103\011\076\012\104\013\070\014\101\015\065" + + "\016\072\017\071\020\102\023\064\024\067\025\074\026" + + "\077\001\002\000\004\016\uffee\001\002\000\012\003\117" + "\005\021\007\014\013\ufffd\001\002\000\016\003\ufff6\004" + "\ufff6\005\ufff6\007\ufff6\013\ufff6\030\ufff6\001\002\000\016" + "\003\ufff8\004\ufff8\005\ufff8\007\ufff8\013\ufff8\030\ufff8\001" + - "\002\000\004\017\uffca\001\002\000\012\003\uffcb\005\uffcb" + - "\007\uffcb\013\uffcb\001\002\000\012\003\115\005\021\007" + - "\014\013\ufffe\001\002\000\012\003\uffcd\005\uffcd\007\uffcd" + - "\013\uffcd\001\002\000\012\003\uffcc\005\uffcc\007\uffcc\013" + - "\uffcc\001\002\000\012\003\uffce\005\uffce\007\uffce\013\uffce" + - "\001\002\000\004\017\120\001\002\000\004\006\121\001" + - "\002\000\004\016\uffc9\001\002\000\004\016\123\001\002" + - "\000\012\003\uffc8\005\uffc8\007\uffc8\013\uffc8\001\002\000" + - "\004\002\000\001\002\000\012\003\115\005\021\007\014" + + "\002\000\004\017\uffc8\001\002\000\012\003\uffc9\005\uffc9" + + "\007\uffc9\013\uffc9\001\002\000\012\003\122\005\021\007" + + "\014\013\ufffe\001\002\000\012\003\uffcb\005\uffcb\007\uffcb" + + "\013\uffcb\001\002\000\012\003\uffca\005\uffca\007\uffca\013" + + "\uffca\001\002\000\012\003\uffcc\005\uffcc\007\uffcc\013\uffcc" + + "\001\002\000\004\017\125\001\002\000\004\006\126\001" + + "\002\000\004\016\uffc7\001\002\000\004\016\130\001\002" + + "\000\012\003\uffc6\005\uffc6\007\uffc6\013\uffc6\001\002\000" + + "\004\002\000\001\002\000\012\003\122\005\021\007\014" + "\013\ufffb\001\002" }); /** Access to parse-action table. */ @@ -144,39 +165,42 @@ public final Class getSymbolContainer() { /** reduce_goto table. */ protected static final short[][] _reduce_table = unpackFromStrings(new String[] { - "\000\123\000\004\002\004\001\001\000\014\003\007\004" + + "\000\130\000\004\002\004\001\001\000\014\003\007\004" + "\012\005\017\010\006\016\015\001\001\000\002\001\001" + - "\000\002\001\001\000\010\006\124\007\113\016\110\001" + + "\000\002\001\001\000\010\006\131\007\120\016\115\001" + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + - "\000\010\005\107\010\105\016\015\001\001\000\002\001" + - "\001\000\004\017\051\001\001\000\004\021\021\001\001" + + "\000\010\005\114\010\112\016\015\001\001\000\002\001" + + "\001\000\004\017\056\001\001\000\004\021\021\001\001" + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + - "\002\001\001\000\006\013\023\014\030\001\001\000\002" + - "\001\001\000\002\001\001\000\002\001\001\000\004\016" + - "\046\001\001\000\006\013\033\014\030\001\001\000\002" + + "\002\001\001\000\006\013\033\014\036\001\001\000\004" + + "\024\053\001\001\000\002\001\001\000\004\023\050\001" + + "\001\000\002\001\001\000\004\026\046\001\001\000\002" + + "\001\001\000\004\027\044\001\001\000\004\025\042\001" + + "\001\000\002\001\001\000\002\001\001\000\004\016\037" + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + - "\001\000\002\001\001\000\002\001\001\000\004\024\044" + - "\001\001\000\002\001\001\000\002\001\001\000\004\023" + - "\042\001\001\000\006\013\043\014\030\001\001\000\002" + - "\001\001\000\006\013\045\014\030\001\001\000\002\001" + - "\001\000\002\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\004\016\053\001\001\000\004\020" + - "\054\001\001\000\002\001\001\000\010\011\067\012\072" + - "\015\060\001\001\000\002\001\001\000\002\001\001\000" + - "\004\022\102\001\001\000\002\001\001\000\002\001\001" + - "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\001\000\002\001\001\000\006\013\043\014\036\001\001" + + "\000\002\001\001\000\006\013\045\014\036\001\001\000" + + "\002\001\001\000\006\013\047\014\036\001\001\000\002" + + "\001\001\000\006\013\051\014\036\001\001\000\006\013" + + "\052\014\036\001\001\000\002\001\001\000\006\013\054" + + "\014\036\001\001\000\006\013\055\014\036\001\001\000" + + "\002\001\001\000\002\001\001\000\004\016\060\001\001" + + "\000\004\020\061\001\001\000\002\001\001\000\010\011" + + "\074\012\077\015\065\001\001\000\002\001\001\000\002" + + "\001\001\000\004\022\107\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\015\100" + + "\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\015\105\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\004\015\111\001\001\000\002\001" + + "\001\000\010\006\117\007\120\016\115\001\001\000\002" + + "\001\001\000\002\001\001\000\004\030\123\001\001\000" + + "\002\001\001\000\006\007\122\016\115\001\001\000\002" + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + - "\001\000\004\015\104\001\001\000\002\001\001\000\010" + - "\006\112\007\113\016\110\001\001\000\002\001\001\000" + - "\002\001\001\000\004\025\116\001\001\000\002\001\001" + - "\000\006\007\115\016\110\001\001\000\002\001\001\000" + - "\002\001\001\000\002\001\001\000\002\001\001\000\002" + - "\001\001\000\004\026\121\001\001\000\002\001\001\000" + - "\002\001\001\000\002\001\001\000\006\007\115\016\110" + - "\001\001" }); + "\001\000\002\001\001\000\004\031\126\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\006\007" + + "\122\016\115\001\001" }); /** Access to reduce_goto table. */ public short[][] reduce_table() {return _reduce_table;} @@ -691,14 +715,14 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 38: // OPERATION ::= OPERATION TK_or NT$4 OPERATION + case 38: // OPERATION ::= TK_or NT$4 OPERATION OPERATION { Object RESULT =null; // propagate RESULT from NT$4 - RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).value; - int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).left; - int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).right; - String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; + RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; + int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).left; + int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).right; + String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).value; CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } @@ -717,66 +741,99 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 40: // OPERATION ::= OPERATION TK_concat NT$5 OPERATION + case 40: // OPERATION ::= TK_concat NT$5 OPERATION OPERATION { Object RESULT =null; // propagate RESULT from NT$5 - RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).value; - int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).left; - int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).right; - String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; + RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; + int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).left; + int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).right; + String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).value; CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 41: // OPERATION ::= OPERATION TK_kleene + case 41: // NT$6 ::= { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).right; String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.peek()).value; - painter.OPERATOR(opleft,opright); - CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); +painter.OPERATOR(opleft,opright); + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$6",19, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); + } + return CUP$ParserF$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 42: // OPERATION ::= TK_kleene NT$6 OPERATION + { + Object RESULT =null; + // propagate RESULT from NT$6 + RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).value; + int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).left; + int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).right; + String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; + + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 42: // OPERATION ::= OPERATION TK_positive + case 43: // NT$7 ::= { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).right; String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.peek()).value; - painter.OPERATOR(opleft,opright); - CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); +painter.OPERATOR(opleft,opright); + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$7",20, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); + } + return CUP$ParserF$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 44: // OPERATION ::= TK_positive NT$7 OPERATION + { + Object RESULT =null; + // propagate RESULT from NT$7 + RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).value; + int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).left; + int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).right; + String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; + + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 43: // OPERATION ::= OPERATION TK_optional + case 45: // NT$8 ::= { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).right; String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.peek()).value; - painter.OPERATOR(opleft,opright); - CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); +painter.OPERATOR(opleft,opright); + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$8",21, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 44: // OPERATION ::= TK_lpar OPERATION TK_rpar + case 46: // OPERATION ::= TK_optional NT$8 OPERATION { Object RESULT =null; + // propagate RESULT from NT$8 + RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).value; + int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).left; + int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).right; + String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERATION",9, ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 45: // OPERATION ::= OPERAND + case 47: // OPERATION ::= OPERAND { Object RESULT =null; @@ -785,7 +842,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 46: // OPERAND ::= TK_lbr IDS TK_rbr + case 48: // OPERAND ::= TK_lbr IDS TK_rbr { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).left; @@ -797,19 +854,19 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 47: // OPERAND ::= TK_str + case 49: // OPERAND ::= TK_str { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; int opright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).right; String op = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.peek()).value; - painter.STRING(opleft,opright); + painter.STRING(opleft,opright); CUP$ParserF$result = parser.getSymbolFactory().newSymbol("OPERAND",10, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 48: // OPERAND ::= TK_newline + case 50: // OPERAND ::= TK_newline { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; @@ -821,7 +878,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 49: // OPERAND ::= TK_singlequ + case 51: // OPERAND ::= TK_singlequ { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; @@ -833,7 +890,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 50: // OPERAND ::= TK_doublequ + case 52: // OPERAND ::= TK_doublequ { Object RESULT =null; int opleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; @@ -845,7 +902,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 51: // EVALUATIONS ::= EVALUATIONS EVALUATION + case 53: // EVALUATIONS ::= EVALUATIONS EVALUATION { Object RESULT =null; @@ -854,7 +911,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 52: // EVALUATIONS ::= EVALUATION + case 54: // EVALUATIONS ::= EVALUATION { Object RESULT =null; @@ -863,7 +920,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 53: // EVALUATIONS ::= EVALUATIONS error + case 55: // EVALUATIONS ::= EVALUATIONS error { Object RESULT =null; @@ -872,7 +929,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 54: // EVALUATIONS ::= error + case 56: // EVALUATIONS ::= error { Object RESULT =null; @@ -881,19 +938,19 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 55: // NT$6 ::= + case 57: // NT$9 ::= { Object RESULT =null; int idleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; int idright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).right; String id = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.peek()).value; painter.REGEXUSE(idleft,idright); - CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$6",19, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$9",22, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 56: // NT$7 ::= + case 58: // NT$10 ::= { Object RESULT =(Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-2)).value; int idleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-3)).left; @@ -903,15 +960,15 @@ class CUP$ParserF$actions { int strright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).right; String str = (String)((java_cup.runtime.Symbol) CUP$ParserF$stack.peek()).value; painter.STRING(strleft,strright); - CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$7",20, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); + CUP$ParserF$result = parser.getSymbolFactory().newSymbol("NT$10",23, ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()), RESULT); } return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 57: // EVALUATION ::= IDS NT$6 TK_colon TK_str NT$7 TK_semicolon + case 59: // EVALUATION ::= IDS NT$9 TK_colon TK_str NT$10 TK_semicolon { Object RESULT =null; - // propagate RESULT from NT$7 + // propagate RESULT from NT$10 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$ParserF$stack.elementAt(CUP$ParserF$top-1)).value; int idleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-5)).left; int idright = ((java_cup.runtime.Symbol)CUP$ParserF$stack.elementAt(CUP$ParserF$top-5)).right; @@ -925,7 +982,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 58: // IDS ::= TK_id + case 60: // IDS ::= TK_id { String RESULT =null; int idleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left; @@ -937,7 +994,7 @@ class CUP$ParserF$actions { return CUP$ParserF$result; /*. . . . . . . . . . . . . . . . . . . .*/ - case 59: // IDS ::= TK_char + case 61: // IDS ::= TK_char { String RESULT =null; int idleft = ((java_cup.runtime.Symbol)CUP$ParserF$stack.peek()).left;