1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-06-02 00:20:49 +00:00

refactor: prepare preprocessor error improvement (almost finished :-)

https://github.com/plantuml/plantuml/pull/1668
This commit is contained in:
Arnaud Roques 2024-02-22 20:06:59 +01:00
parent 6329d9a8d5
commit a48dd52d9f
130 changed files with 390 additions and 538 deletions

View File

@ -1,4 +1,4 @@
# Warning, "version" should be the same in gradle.properties and Version.java # Warning, "version" should be the same in gradle.properties and Version.java
# Any idea anyone how to magically synchronize those :-) ? # Any idea anyone how to magically synchronize those :-) ?
version = 1.2024.4beta3 version = 1.2024.4beta4
org.gradle.workers.max = 3 org.gradle.workers.max = 3

View File

@ -56,7 +56,7 @@ import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.security.SecurityProfile; import net.sourceforge.plantuml.security.SecurityProfile;
import net.sourceforge.plantuml.security.SecurityUtils; import net.sourceforge.plantuml.security.SecurityUtils;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TMemory; import net.sourceforge.plantuml.tim.TMemory;
import net.sourceforge.plantuml.tim.TVariableScope; import net.sourceforge.plantuml.tim.TVariableScope;
import net.sourceforge.plantuml.utils.Log; import net.sourceforge.plantuml.utils.Log;
@ -82,7 +82,7 @@ public class Defines implements Truth {
return new Defines(); return new Defines();
} }
public void copyTo(TMemory memory, StringLocated location) throws EaterException { public void copyTo(TMemory memory, StringLocated location) throws EaterExceptionLocated {
for (Entry<String, Define> ent : values.entrySet()) { for (Entry<String, Define> ent : values.entrySet()) {
final String name = ent.getKey(); final String name = ent.getKey();
final Define def = ent.getValue(); final Define def = ent.getValue();

View File

@ -42,7 +42,7 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterStartsub; import net.sourceforge.plantuml.tim.EaterStartsub;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TMemory; import net.sourceforge.plantuml.tim.TMemory;
@ -79,7 +79,7 @@ public class Sub {
} }
public static Sub fromFile(ReadLine reader, String blocname, TContext context, TMemory memory) public static Sub fromFile(ReadLine reader, String blocname, TContext context, TMemory memory)
throws IOException, EaterException { throws IOException, EaterExceptionLocated {
Sub result = null; Sub result = null;
StringLocated s = null; StringLocated s = null;
boolean skip = false; boolean skip = false;

View File

@ -53,8 +53,7 @@ import net.sourceforge.plantuml.preproc.StartDiagramExtractReader;
import net.sourceforge.plantuml.preproc.Stdlib; import net.sourceforge.plantuml.preproc.Stdlib;
import net.sourceforge.plantuml.security.SURL; import net.sourceforge.plantuml.security.SURL;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.utils.LineLocation;
import net.sourceforge.plantuml.utils.Log; import net.sourceforge.plantuml.utils.Log;
public class PreprocessorUtils { public class PreprocessorUtils {
@ -134,7 +133,7 @@ public class PreprocessorUtils {
} }
public static ReadLine getReaderIncludeUrl(final SURL url, StringLocated s, String suf, Charset charset) public static ReadLine getReaderIncludeUrl(final SURL url, StringLocated s, String suf, Charset charset)
throws EaterException { throws EaterExceptionLocated {
try { try {
if (StartDiagramExtractReader.containsStartDiagram(url, s, charset)) if (StartDiagramExtractReader.containsStartDiagram(url, s, charset))
return StartDiagramExtractReader.build(url, s, suf, charset); return StartDiagramExtractReader.build(url, s, suf, charset);
@ -142,16 +141,16 @@ public class PreprocessorUtils {
return getReaderInclude(url, s, charset); return getReaderInclude(url, s, charset);
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("Cannot open URL " + e.getMessage(), s); throw EaterExceptionLocated.located("Cannot open URL " + e.getMessage(), s);
} }
} }
public static ReadLine getReaderInclude(SURL url, StringLocated s, Charset charset) public static ReadLine getReaderInclude(SURL url, StringLocated s, Charset charset)
throws EaterException, UnsupportedEncodingException { throws EaterExceptionLocated, UnsupportedEncodingException {
final InputStream is = url.openStream(); final InputStream is = url.openStream();
if (is == null) if (is == null)
throw EaterException.located("Cannot open URL", s); throw EaterExceptionLocated.located("Cannot open URL", s);
return ReadLineReader.create(new InputStreamReader(is, charset), url.toString(), s.getLocation()); return ReadLineReader.create(new InputStreamReader(is, charset), url.toString(), s.getLocation());
} }

View File

@ -64,19 +64,19 @@ public abstract class Eater {
return stringLocated; return stringLocated;
} }
public abstract void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated; public abstract void analyze(TContext context, TMemory memory) throws EaterExceptionLocated;
public int getCurrentPosition() { public int getCurrentPosition() {
return i; return i;
} }
final protected String eatAllToEnd() throws EaterException { final protected String eatAllToEnd() throws EaterExceptionLocated {
final String result = stringLocated.getString().substring(i); final String result = stringLocated.getString().substring(i);
i = stringLocated.length(); i = stringLocated.length();
return result; return result;
} }
final public TValue eatExpression(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { final public TValue eatExpression(TContext context, TMemory memory) throws EaterExceptionLocated {
final char ch = peekChar(); final char ch = peekChar();
if (ch == '{' || ch == '[') { if (ch == '{' || ch == '[') {
final String data = eatAllToEnd(); final String data = eatAllToEnd();
@ -89,23 +89,22 @@ public abstract class Eater {
return tokenStack.getResult(getStringLocated(), context, memory); return tokenStack.getResult(getStringLocated(), context, memory);
} }
final protected TokenStack eatTokenStack() throws EaterException { final protected TokenStack eatTokenStack() throws EaterExceptionLocated {
final TokenStack tokenStack = new TokenStack(); final TokenStack tokenStack = new TokenStack();
addIntoTokenStack(tokenStack, false); addIntoTokenStack(tokenStack, false);
if (tokenStack.size() == 0) if (tokenStack.size() == 0)
throw EaterException.located("Missing expression", stringLocated); throw EaterExceptionLocated.located("Missing expression", stringLocated);
return tokenStack; return tokenStack;
} }
final protected TValue eatExpressionStopAtColon(TContext context, TMemory memory) final protected TValue eatExpressionStopAtColon(TContext context, TMemory memory) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
final TokenStack tokenStack = new TokenStack(); final TokenStack tokenStack = new TokenStack();
addIntoTokenStack(tokenStack, true); addIntoTokenStack(tokenStack, true);
return tokenStack.getResult(getStringLocated(), context, memory); return tokenStack.getResult(getStringLocated(), context, memory);
} }
final protected void addIntoTokenStack(TokenStack tokenStack, boolean stopAtColon) throws EaterException { final protected void addIntoTokenStack(TokenStack tokenStack, boolean stopAtColon) throws EaterExceptionLocated {
Token lastToken = null; Token lastToken = null;
while (true) { while (true) {
final Token token = TokenType.eatOneToken(lastToken, this, stopAtColon); final Token token = TokenType.eatOneToken(lastToken, this, stopAtColon);
@ -118,10 +117,10 @@ public abstract class Eater {
} }
} }
final public String eatAndGetQuotedString() throws EaterException { final public String eatAndGetQuotedString() throws EaterExceptionLocated {
final char separator = peekChar(); final char separator = peekChar();
if (TLineType.isQuote(separator) == false) if (TLineType.isQuote(separator) == false)
throw EaterException.located("quote10", stringLocated); throw EaterExceptionLocated.located("quote10", stringLocated);
checkAndEatChar(separator); checkAndEatChar(separator);
final StringBuilder value = new StringBuilder(); final StringBuilder value = new StringBuilder();
@ -130,7 +129,7 @@ public abstract class Eater {
return value.toString(); return value.toString();
} }
final protected String eatAndGetOptionalQuotedString() throws EaterException { final protected String eatAndGetOptionalQuotedString() throws EaterExceptionLocated {
final char quote = peekChar(); final char quote = peekChar();
if (TLineType.isQuote(quote)) if (TLineType.isQuote(quote))
return eatAndGetQuotedString(); return eatAndGetQuotedString();
@ -142,7 +141,7 @@ public abstract class Eater {
while (true) { while (true) {
char ch = peekChar(); char ch = peekChar();
if (ch == 0) if (ch == 0)
throw EaterException.located("until001", stringLocated); throw EaterExceptionLocated.located("until001", stringLocated);
if (level == 0 && (ch == ',' || ch == ')')) if (level == 0 && (ch == ',' || ch == ')'))
return value.toString().trim(); return value.toString().trim();
@ -160,7 +159,7 @@ public abstract class Eater {
// return value.toString(); // return value.toString();
} }
final public String eatAndGetNumber() throws EaterException { final public String eatAndGetNumber() throws EaterExceptionLocated {
final StringBuilder result = new StringBuilder(); final StringBuilder result = new StringBuilder();
while (true) { while (true) {
final char ch = peekChar(); final char ch = peekChar();
@ -176,7 +175,7 @@ public abstract class Eater {
} }
} }
final public String eatAndGetSpaces() throws EaterException { final public String eatAndGetSpaces() throws EaterExceptionLocated {
final StringBuilder result = new StringBuilder(); final StringBuilder result = new StringBuilder();
while (true) { while (true) {
final char ch = peekChar(); final char ch = peekChar();
@ -187,19 +186,19 @@ public abstract class Eater {
} }
} }
final protected String eatAndGetVarname() throws EaterException { final protected String eatAndGetVarname() throws EaterExceptionLocated {
final StringBuilder varname = new StringBuilder("" + eatOneChar()); final StringBuilder varname = new StringBuilder("" + eatOneChar());
if (TLineType.isLetterOrUnderscoreOrDollar(varname.charAt(0)) == false) if (TLineType.isLetterOrUnderscoreOrDollar(varname.charAt(0)) == false)
throw EaterException.located("a002", stringLocated); throw EaterExceptionLocated.located("a002", stringLocated);
addUpToLastLetterOrUnderscoreOrDigit(varname); addUpToLastLetterOrUnderscoreOrDigit(varname);
return varname.toString(); return varname.toString();
} }
final protected String eatAndGetFunctionName() throws EaterException { final protected String eatAndGetFunctionName() throws EaterExceptionLocated {
final StringBuilder varname = new StringBuilder("" + eatOneChar()); final StringBuilder varname = new StringBuilder("" + eatOneChar());
if (TLineType.isLetterOrUnderscoreOrDollar(varname.charAt(0)) == false) if (TLineType.isLetterOrUnderscoreOrDollar(varname.charAt(0)) == false)
throw EaterException.located("a003", stringLocated); throw EaterExceptionLocated.located("a003", stringLocated);
addUpToLastLetterOrUnderscoreOrDigit(varname); addUpToLastLetterOrUnderscoreOrDigit(varname);
return varname.toString(); return varname.toString();
@ -247,14 +246,14 @@ public abstract class Eater {
return ch; return ch;
} }
final protected void checkAndEatChar(char ch) throws EaterException { final protected void checkAndEatChar(char ch) throws EaterExceptionLocated {
if (i >= stringLocated.length() || stringLocated.charAt(i) != ch) if (i >= stringLocated.length() || stringLocated.charAt(i) != ch)
throw EaterException.located("a001", stringLocated); throw EaterExceptionLocated.located("a001", stringLocated);
i++; i++;
} }
final protected boolean safeCheckAndEatChar(char ch) throws EaterException { final protected boolean safeCheckAndEatChar(char ch) throws EaterExceptionLocated {
if (i >= stringLocated.length() || stringLocated.charAt(i) != ch) if (i >= stringLocated.length() || stringLocated.charAt(i) != ch)
return false; return false;
@ -262,7 +261,7 @@ public abstract class Eater {
return true; return true;
} }
final protected void optionallyEatChar(char ch) throws EaterException { final protected void optionallyEatChar(char ch) throws EaterExceptionLocated {
if (i >= stringLocated.length() || stringLocated.charAt(i) != ch) if (i >= stringLocated.length() || stringLocated.charAt(i) != ch)
return; return;
@ -270,7 +269,7 @@ public abstract class Eater {
i++; i++;
} }
final protected void checkAndEatChar(String s) throws EaterException { final protected void checkAndEatChar(String s) throws EaterExceptionLocated {
for (int j = 0; j < s.length(); j++) for (int j = 0; j < s.length(); j++)
checkAndEatChar(s.charAt(j)); checkAndEatChar(s.charAt(j));
@ -299,8 +298,7 @@ public abstract class Eater {
} }
final protected TFunctionImpl eatDeclareFunction(TContext context, TMemory memory, boolean unquoted, final protected TFunctionImpl eatDeclareFunction(TContext context, TMemory memory, boolean unquoted,
StringLocated location, boolean allowNoParenthesis, TFunctionType type) StringLocated location, boolean allowNoParenthesis, TFunctionType type) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
final List<TFunctionArgument> args = new ArrayList<>(); final List<TFunctionArgument> args = new ArrayList<>();
final String functionName = eatAndGetFunctionName(); final String functionName = eatAndGetFunctionName();
skipSpaces(); skipSpaces();
@ -308,7 +306,7 @@ public abstract class Eater {
if (allowNoParenthesis) if (allowNoParenthesis)
return new TFunctionImpl(functionName, args, unquoted, type); return new TFunctionImpl(functionName, args, unquoted, type);
throw EaterException.located("Missing opening parenthesis", stringLocated); throw EaterExceptionLocated.located("Missing opening parenthesis", stringLocated);
} }
while (true) { while (true) {
skipSpaces(); skipSpaces();
@ -333,7 +331,7 @@ public abstract class Eater {
checkAndEatChar(")"); checkAndEatChar(")");
break; break;
} else { } else {
throw EaterException.located("Error in function definition", stringLocated); throw EaterExceptionLocated.located("Error in function definition", stringLocated);
} }
} }
skipSpaces(); skipSpaces();
@ -341,7 +339,7 @@ public abstract class Eater {
} }
final protected TFunctionImpl eatDeclareReturnFunctionWithOptionalReturn(TContext context, TMemory memory, final protected TFunctionImpl eatDeclareReturnFunctionWithOptionalReturn(TContext context, TMemory memory,
boolean unquoted, StringLocated location) throws EaterException, EaterExceptionLocated { boolean unquoted, StringLocated location) throws EaterExceptionLocated {
final TFunctionImpl result = eatDeclareFunction(context, memory, unquoted, location, false, final TFunctionImpl result = eatDeclareFunction(context, memory, unquoted, location, false,
TFunctionType.RETURN_FUNCTION); TFunctionType.RETURN_FUNCTION);
if (peekChar() == 'r') { if (peekChar() == 'r') {
@ -359,7 +357,7 @@ public abstract class Eater {
} }
final protected TFunctionImpl eatDeclareProcedure(TContext context, TMemory memory, boolean unquoted, final protected TFunctionImpl eatDeclareProcedure(TContext context, TMemory memory, boolean unquoted,
StringLocated location) throws EaterException, EaterExceptionLocated { StringLocated location) throws EaterExceptionLocated {
final TFunctionImpl result = eatDeclareFunction(context, memory, unquoted, location, false, final TFunctionImpl result = eatDeclareFunction(context, memory, unquoted, location, false,
TFunctionType.PROCEDURE); TFunctionType.PROCEDURE);
return result; return result;

View File

@ -44,7 +44,7 @@ public class EaterAffectation extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!"); checkAndEatChar("!");
skipSpaces(); skipSpaces();

View File

@ -44,7 +44,7 @@ public class EaterAffectationDefine extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!define"); checkAndEatChar("!define");
skipSpaces(); skipSpaces();

View File

@ -44,7 +44,7 @@ public class EaterAssert extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!assert"); checkAndEatChar("!assert");
skipSpaces(); skipSpaces();
@ -55,9 +55,9 @@ public class EaterAssert extends Eater {
if (ch == ':') { if (ch == ':') {
checkAndEatChar(':'); checkAndEatChar(':');
final TValue message = eatExpression(context, memory); final TValue message = eatExpression(context, memory);
throw EaterException.located("Assertion error : " + message.toString(), getStringLocated()); throw EaterExceptionLocated.located("Assertion error : " + message.toString(), getStringLocated());
} }
throw EaterException.located("Assertion error", getStringLocated()); throw EaterExceptionLocated.located("Assertion error", getStringLocated());
} }
} }

View File

@ -48,7 +48,7 @@ public class EaterDeclareProcedure extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!"); checkAndEatChar("!");
boolean unquoted = false; boolean unquoted = false;

View File

@ -48,7 +48,7 @@ public class EaterDeclareReturnFunction extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!"); checkAndEatChar("!");
boolean unquoted = false; boolean unquoted = false;

View File

@ -43,7 +43,7 @@ public class EaterDumpMemory extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!dump_memory"); checkAndEatChar("!dump_memory");
skipSpaces(); skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterElseIf extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!elseif"); checkAndEatChar("!elseif");
skipSpaces(); skipSpaces();

View File

@ -1,63 +0,0 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*/
package net.sourceforge.plantuml.tim;
import net.sourceforge.plantuml.text.StringLocated;
public class EaterException extends Exception {
private final String message;
private EaterException(String message, StringLocated location) {
this.message = message;
}
public static EaterException unlocated(String message, StringLocated location) {
return new EaterException(message, location);
}
public static EaterException located(String message, StringLocated location) {
return unlocated(message, location);
}
public final String getMessage() {
return message;
}
public EaterExceptionLocated withLocation(StringLocated sl) {
return EaterExceptionLocated.located(message, sl);
}
}

View File

@ -52,6 +52,10 @@ public class EaterExceptionLocated extends Exception {
return new EaterExceptionLocated(message, Objects.requireNonNull(location)); return new EaterExceptionLocated(message, Objects.requireNonNull(location));
} }
public static EaterExceptionLocated unlocated(String message, StringLocated location) {
return new EaterExceptionLocated(message, Objects.requireNonNull(location));
}
public final String getMessage() { public final String getMessage() {
return message; return message;
} }

View File

@ -48,7 +48,7 @@ public class EaterForeach extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!foreach"); checkAndEatChar("!foreach");
skipSpaces(); skipSpaces();

View File

@ -58,7 +58,7 @@ public class EaterFunctionCall extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipUntilChar('('); skipUntilChar('(');
checkAndEatChar('('); checkAndEatChar('(');
skipSpaces(); skipSpaces();
@ -119,9 +119,10 @@ public class EaterFunctionCall extends Eater {
break; break;
} }
if (unquoted) { if (unquoted) {
throw EaterException.located("unquoted function/procedure cannot use expression.", getStringLocated()); throw EaterExceptionLocated.located("unquoted function/procedure cannot use expression.",
getStringLocated());
} }
throw EaterException.located("call001", getStringLocated()); throw EaterExceptionLocated.located("call001", getStringLocated());
} }
} }
@ -133,7 +134,7 @@ public class EaterFunctionCall extends Eater {
return Collections.unmodifiableMap(namedArguments); return Collections.unmodifiableMap(namedArguments);
} }
public final String getEndOfLine() throws EaterException { public final String getEndOfLine() throws EaterExceptionLocated {
return this.eatAllToEnd(); return this.eatAllToEnd();
} }

View File

@ -46,7 +46,7 @@ public class EaterIf extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!if"); checkAndEatChar("!if");
skipSpaces(); skipSpaces();

View File

@ -48,7 +48,7 @@ public class EaterIfdef extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!ifdef"); checkAndEatChar("!ifdef");
skipSpaces(); skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterIfndef extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!ifndef"); checkAndEatChar("!ifndef");
skipSpaces(); skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterImport extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!import"); checkAndEatChar("!import");
skipSpaces(); skipSpaces();

View File

@ -47,7 +47,7 @@ public class EaterInclude extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!include"); checkAndEatChar("!include");
final char peekChar = peekChar(); final char peekChar = peekChar();

View File

@ -45,7 +45,7 @@ public class EaterIncludeDef extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!includedef"); checkAndEatChar("!includedef");
skipSpaces(); skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterIncludesub extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!includesub"); checkAndEatChar("!includesub");
skipSpaces(); skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterLegacyDefine extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!define"); checkAndEatChar("!define");
skipSpaces(); skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterLegacyDefineLong extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!definelong"); checkAndEatChar("!definelong");
skipSpaces(); skipSpaces();

View File

@ -44,7 +44,7 @@ public class EaterLog extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!log"); checkAndEatChar("!log");
skipSpaces(); skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterReturn extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!return"); checkAndEatChar("!return");
skipSpaces(); skipSpaces();

View File

@ -45,13 +45,13 @@ public class EaterStartsub extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!startsub"); checkAndEatChar("!startsub");
skipSpaces(); skipSpaces();
this.subname = eatAllToEnd(); this.subname = eatAllToEnd();
if (this.subname.matches("\\w+") == false) if (this.subname.matches("\\w+") == false)
throw EaterException.located("Bad sub name", getStringLocated()); throw EaterExceptionLocated.located("Bad sub name", getStringLocated());
} }

View File

@ -67,7 +67,7 @@ public class EaterTheme extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!theme"); checkAndEatChar("!theme");
skipSpaces(); skipSpaces();
@ -85,7 +85,7 @@ public class EaterTheme extends Eater {
} }
public final ReadLine getTheme() throws EaterException { public final ReadLine getTheme() throws EaterExceptionLocated {
if (from == null) { if (from == null) {
try { try {
final ReadLine reader = ThemeUtils.getReaderTheme(realName); final ReadLine reader = ThemeUtils.getReaderTheme(realName);
@ -101,24 +101,24 @@ public class EaterTheme extends Eater {
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
} }
throw EaterException.located("Cannot load " + realName, getStringLocated()); throw EaterExceptionLocated.located("Cannot load " + realName, getStringLocated());
} }
if (from.startsWith("<") && from.endsWith(">")) { if (from.startsWith("<") && from.endsWith(">")) {
final ReadLine reader = ThemeUtils.getReaderTheme(realName, from); final ReadLine reader = ThemeUtils.getReaderTheme(realName, from);
if (reader == null) if (reader == null)
throw EaterException.located("No such theme " + realName + " in " + from, getStringLocated()); throw EaterExceptionLocated.located("No such theme " + realName + " in " + from, getStringLocated());
return reader; return reader;
} else if (from.startsWith("http://") || from.startsWith("https://")) { } else if (from.startsWith("http://") || from.startsWith("https://")) {
final SURL url = SURL.create(ThemeUtils.getFullPath(from, realName)); final SURL url = SURL.create(ThemeUtils.getFullPath(from, realName));
if (url == null) if (url == null)
throw EaterException.located("Cannot open URL", getStringLocated()); throw EaterExceptionLocated.located("Cannot open URL", getStringLocated());
try { try {
return PreprocessorUtils.getReaderInclude(url, getStringLocated(), UTF_8); return PreprocessorUtils.getReaderInclude(url, getStringLocated(), UTF_8);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("Cannot decode charset", getStringLocated()); throw EaterExceptionLocated.located("Cannot decode charset", getStringLocated());
} }
} }
@ -126,12 +126,12 @@ public class EaterTheme extends Eater {
final FileWithSuffix file = context.getFileWithSuffix(from, realName); final FileWithSuffix file = context.getFileWithSuffix(from, realName);
final Reader tmp = file.getReader(UTF_8); final Reader tmp = file.getReader(UTF_8);
if (tmp == null) if (tmp == null)
throw EaterException.located("No such theme " + realName, getStringLocated()); throw EaterExceptionLocated.located("No such theme " + realName, getStringLocated());
return ReadLineReader.create(tmp, "theme " + realName); return ReadLineReader.create(tmp, "theme " + realName);
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("Cannot load " + realName, getStringLocated()); throw EaterExceptionLocated.located("Cannot load " + realName, getStringLocated());
} }
} }

View File

@ -43,7 +43,7 @@ public class EaterUndef extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!undef"); checkAndEatChar("!undef");
skipSpaces(); skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterWhile extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces(); skipSpaces();
checkAndEatChar("!while"); checkAndEatChar("!while");
skipSpaces(); skipSpaces();

View File

@ -61,7 +61,7 @@ public class ExecutionContextWhile {
} }
public TValue conditionValue(StringLocated location, TContext context, TMemory memory) public TValue conditionValue(StringLocated location, TContext context, TMemory memory)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
return whileExpression.getResult(location, context, memory); return whileExpression.getResult(location, context, memory);
} }

View File

@ -79,12 +79,12 @@ public abstract class ExecutionContexts {
return allForeachs.pollLast(); return allForeachs.pollLast();
} }
public boolean areAllIfOk(TContext context, TMemory memory) throws EaterException { public boolean areAllIfOk(TContext context, TMemory memory) throws EaterExceptionLocated {
for (ExecutionContextIf conditionalContext : allIfs) { for (ExecutionContextIf conditionalContext : allIfs)
if (conditionalContext.conditionIsOkHere() == false) { if (conditionalContext.conditionIsOkHere() == false)
return false; return false;
}
}
return true; return true;
} }

View File

@ -95,9 +95,9 @@ public class FunctionsSet {
} }
public void executeLegacyDefine(TContext context, TMemory memory, StringLocated s) public void executeLegacyDefine(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
if (this.pendingFunction != null) if (this.pendingFunction != null)
throw EaterException.located("already0048", s); throw EaterExceptionLocated.located("already0048", s);
final EaterLegacyDefine legacyDefine = new EaterLegacyDefine(s); final EaterLegacyDefine legacyDefine = new EaterLegacyDefine(s);
legacyDefine.analyze(context, memory); legacyDefine.analyze(context, memory);
@ -107,9 +107,9 @@ public class FunctionsSet {
} }
public void executeLegacyDefineLong(TContext context, TMemory memory, StringLocated s) public void executeLegacyDefineLong(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
if (this.pendingFunction != null) if (this.pendingFunction != null)
throw EaterException.located("already0068", s); throw EaterExceptionLocated.located("already0068", s);
final EaterLegacyDefineLong legacyDefineLong = new EaterLegacyDefineLong(s); final EaterLegacyDefineLong legacyDefineLong = new EaterLegacyDefineLong(s);
legacyDefineLong.analyze(context, memory); legacyDefineLong.analyze(context, memory);
@ -117,9 +117,9 @@ public class FunctionsSet {
} }
public void executeDeclareReturnFunction(TContext context, TMemory memory, StringLocated s) public void executeDeclareReturnFunction(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
if (this.pendingFunction != null) if (this.pendingFunction != null)
throw EaterException.located("already0068", s); throw EaterExceptionLocated.located("already0068", s);
final EaterDeclareReturnFunction declareFunction = new EaterDeclareReturnFunction(s); final EaterDeclareReturnFunction declareFunction = new EaterDeclareReturnFunction(s);
declareFunction.analyze(context, memory); declareFunction.analyze(context, memory);
@ -127,7 +127,7 @@ public class FunctionsSet {
final TFunctionSignature declaredSignature = declareFunction.getFunction().getSignature(); final TFunctionSignature declaredSignature = declareFunction.getFunction().getSignature();
final TFunction previous = this.functions.get(declaredSignature); final TFunction previous = this.functions.get(declaredSignature);
if (previous != null && (finalFlag || this.functionsFinal.contains(declaredSignature))) if (previous != null && (finalFlag || this.functionsFinal.contains(declaredSignature)))
throw EaterException.located("This function is already defined", s); throw EaterExceptionLocated.located("This function is already defined", s);
if (finalFlag) if (finalFlag)
this.functionsFinal.add(declaredSignature); this.functionsFinal.add(declaredSignature);
@ -140,9 +140,9 @@ public class FunctionsSet {
} }
public void executeDeclareProcedure(TContext context, TMemory memory, StringLocated s) public void executeDeclareProcedure(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
if (this.pendingFunction != null) if (this.pendingFunction != null)
throw EaterException.located("already0068", s); throw EaterExceptionLocated.located("already0068", s);
final EaterDeclareProcedure declareFunction = new EaterDeclareProcedure(s); final EaterDeclareProcedure declareFunction = new EaterDeclareProcedure(s);
declareFunction.analyze(context, memory); declareFunction.analyze(context, memory);
@ -150,7 +150,7 @@ public class FunctionsSet {
final TFunctionSignature declaredSignature = declareFunction.getFunction().getSignature(); final TFunctionSignature declaredSignature = declareFunction.getFunction().getSignature();
final TFunction previous = this.functions.get(declaredSignature); final TFunction previous = this.functions.get(declaredSignature);
if (previous != null && (finalFlag || this.functionsFinal.contains(declaredSignature))) if (previous != null && (finalFlag || this.functionsFinal.contains(declaredSignature)))
throw EaterException.located("This function is already defined", s); throw EaterExceptionLocated.located("This function is already defined", s);
if (finalFlag) if (finalFlag)
this.functionsFinal.add(declaredSignature); this.functionsFinal.add(declaredSignature);

View File

@ -43,7 +43,7 @@ public class StringEater extends Eater {
} }
@Override @Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated { public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }

View File

@ -236,7 +236,7 @@ public class TContext {
public Knowledge asKnowledge(final TMemory memory, final LineLocation location) { public Knowledge asKnowledge(final TMemory memory, final LineLocation location) {
return new Knowledge() { return new Knowledge() {
public TValue getVariable(String name) throws EaterException, EaterExceptionLocated { public TValue getVariable(String name) throws EaterExceptionLocated {
if (name.contains(".") || name.contains("[")) { if (name.contains(".") || name.contains("[")) {
final TValue result = fromJson(memory, name, location); final TValue result = fromJson(memory, name, location);
return result; return result;
@ -250,8 +250,7 @@ public class TContext {
}; };
} }
private TValue fromJson(TMemory memory, String name, LineLocation location) private TValue fromJson(TMemory memory, String name, LineLocation location) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
final String result = applyFunctionsAndVariables(memory, new StringLocated(name, location)); final String result = applyFunctionsAndVariables(memory, new StringLocated(name, location));
try { try {
final JsonValue json = Json.parse(result); final JsonValue json = Json.parse(result);
@ -284,7 +283,6 @@ public class TContext {
final CodeIterator it = buildCodeIterator(memory, body); final CodeIterator it = buildCodeIterator(memory, body);
StringLocated s = null; StringLocated s = null;
try {
while ((s = it.peek()) != null) { while ((s = it.peek()) != null) {
final TValue result = executeOneLineSafe(memory, s, ftype, modeSpecial); final TValue result = executeOneLineSafe(memory, s, ftype, modeSpecial);
if (result != null) if (result != null)
@ -293,14 +291,11 @@ public class TContext {
it.next(); it.next();
} }
return null; return null;
} catch (EaterException e) {
throw e.withLocation(s);
}
} }
private void executeLinesInternal(TMemory memory, List<StringLocated> body, TFunctionType ftype) private void executeLinesInternal(TMemory memory, List<StringLocated> body, TFunctionType ftype)
throws EaterExceptionLocated, EaterException { throws EaterExceptionLocated {
final CodeIterator it = buildCodeIterator(memory, body); final CodeIterator it = buildCodeIterator(memory, body);
StringLocated s = null; StringLocated s = null;
@ -312,22 +307,20 @@ public class TContext {
} }
private TValue executeOneLineSafe(TMemory memory, StringLocated s, TFunctionType ftype, boolean modeSpecial) private TValue executeOneLineSafe(TMemory memory, StringLocated s, TFunctionType ftype, boolean modeSpecial)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
try { try {
this.debug.add(s); this.debug.add(s);
return executeOneLineNotSafe(memory, s, ftype, modeSpecial); return executeOneLineNotSafe(memory, s, ftype, modeSpecial);
} catch (Exception e) { } catch (Exception e) {
if (e instanceof EaterException)
throw (EaterException) e;
if (e instanceof EaterExceptionLocated) if (e instanceof EaterExceptionLocated)
throw (EaterExceptionLocated) e; throw (EaterExceptionLocated) e;
Logme.error(e); Logme.error(e);
throw EaterException.located("Fatal parsing error", s); throw EaterExceptionLocated.located("Fatal parsing error", s);
} }
} }
private TValue executeOneLineNotSafe(TMemory memory, StringLocated s, TFunctionType ftype, boolean modeSpecial) private TValue executeOneLineNotSafe(TMemory memory, StringLocated s, TFunctionType ftype, boolean modeSpecial)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
final TLineType type = s.getType(); final TLineType type = s.getType();
if (type == TLineType.INCLUDESUB) { if (type == TLineType.INCLUDESUB) {
@ -382,11 +375,11 @@ public class TContext {
} else if (s.getString().matches("^\\s+$")) { } else if (s.getString().matches("^\\s+$")) {
return null; return null;
} else { } else {
throw EaterException.located("Compile Error " + ftype + " " + type, s); throw EaterExceptionLocated.located("Compile Error " + ftype + " " + type, s);
} }
} }
private void addPlain(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void addPlain(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final StringLocated tmp[] = applyFunctionsAndVariablesInternal(memory, s); final StringLocated tmp[] = applyFunctionsAndVariablesInternal(memory, s);
if (tmp != null) { if (tmp != null) {
if (pendingAdd != null) { if (pendingAdd != null) {
@ -399,32 +392,31 @@ public class TContext {
} }
} }
private void simulatePlain(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void simulatePlain(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final StringLocated ignored[] = applyFunctionsAndVariablesInternal(memory, s); final StringLocated ignored[] = applyFunctionsAndVariablesInternal(memory, s);
} }
private void executeAffectationDefine(TMemory memory, StringLocated s) private void executeAffectationDefine(TMemory memory, StringLocated s) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
new EaterAffectationDefine(s).analyze(this, memory); new EaterAffectationDefine(s).analyze(this, memory);
} }
private void executeDumpMemory(TMemory memory, StringLocated s) throws EaterException { private void executeDumpMemory(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterDumpMemory condition = new EaterDumpMemory(s); final EaterDumpMemory condition = new EaterDumpMemory(s);
condition.analyze(this, memory); condition.analyze(this, memory);
} }
private void executeAssert(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeAssert(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterAssert condition = new EaterAssert(s); final EaterAssert condition = new EaterAssert(s);
condition.analyze(this, memory); condition.analyze(this, memory);
} }
private void executeUndef(TMemory memory, StringLocated s) throws EaterException { private void executeUndef(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterUndef undef = new EaterUndef(s); final EaterUndef undef = new EaterUndef(s);
undef.analyze(this, memory); undef.analyze(this, memory);
} }
private StringLocated[] applyFunctionsAndVariablesInternal(TMemory memory, StringLocated located) private StringLocated[] applyFunctionsAndVariablesInternal(TMemory memory, StringLocated located)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
if (memory.isEmpty() && functionsSet.size() == 0) if (memory.isEmpty() && functionsSet.size() == 0)
return new StringLocated[] { located }; return new StringLocated[] { located };
@ -442,8 +434,7 @@ public class TContext {
private String pendingAdd = null; private String pendingAdd = null;
public String applyFunctionsAndVariables(TMemory memory, final StringLocated str) public String applyFunctionsAndVariables(TMemory memory, final StringLocated str) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
// https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore%E2%80%93Horspool_algorithm // https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore%E2%80%93Horspool_algorithm
// https://stackoverflow.com/questions/1326682/java-replacing-multiple-different-substring-in-a-string-at-once-or-in-the-most // https://stackoverflow.com/questions/1326682/java-replacing-multiple-different-substring-in-a-string-at-once-or-in-the-most
// https://en.wikipedia.org/wiki/String-searching_algorithm // https://en.wikipedia.org/wiki/String-searching_algorithm
@ -465,7 +456,7 @@ public class TContext {
call.getNamedArguments().keySet()); call.getNamedArguments().keySet());
final TFunction function = functionsSet.getFunctionSmart(signature); final TFunction function = functionsSet.getFunctionSmart(signature);
if (function == null) if (function == null)
throw EaterException.located("Function not found " + presentFunction, str); throw EaterExceptionLocated.located("Function not found " + presentFunction, str);
if (function.getFunctionType() == TFunctionType.PROCEDURE) { if (function.getFunctionType() == TFunctionType.PROCEDURE) {
this.pendingAdd = result.toString(); this.pendingAdd = result.toString();
@ -503,11 +494,11 @@ public class TContext {
} }
private void executeVoid3(StringLocated location, TMemory memory, TFunction function, EaterFunctionCall call) private void executeVoid3(StringLocated location, TMemory memory, TFunction function, EaterFunctionCall call)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
function.executeProcedureInternal(this, memory, location, call.getValues(), call.getNamedArguments()); function.executeProcedureInternal(this, memory, location, call.getValues(), call.getNamedArguments());
} }
private void executeImport(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeImport(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterImport _import = new EaterImport(s.getTrimmed()); final EaterImport _import = new EaterImport(s.getTrimmed());
_import.analyze(this, memory); _import.analyze(this, memory);
@ -520,13 +511,13 @@ public class TContext {
} }
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("Cannot import " + e.getMessage(), s); throw EaterExceptionLocated.located("Cannot import " + e.getMessage(), s);
} }
throw EaterException.located("Cannot import", s); throw EaterExceptionLocated.located("Cannot import", s);
} }
private void executeLog(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeLog(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterLog log = new EaterLog(s.getTrimmed()); final EaterLog log = new EaterLog(s.getTrimmed());
log.analyze(this, memory); log.analyze(this, memory);
} }
@ -538,7 +529,7 @@ public class TContext {
} }
private void executeIncludesub(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeIncludesub(TMemory memory, StringLocated s) throws EaterExceptionLocated {
ImportedFiles saveImportedFiles = null; ImportedFiles saveImportedFiles = null;
try { try {
final EaterIncludesub include = new EaterIncludesub(s.getTrimmed()); final EaterIncludesub include = new EaterIncludesub(s.getTrimmed());
@ -556,7 +547,7 @@ public class TContext {
this.importedFiles = this.importedFiles.withCurrentDir(f2.getParentFile()); this.importedFiles = this.importedFiles.withCurrentDir(f2.getParentFile());
final Reader reader = f2.getReader(charset); final Reader reader = f2.getReader(charset);
if (reader == null) if (reader == null)
throw EaterException.located("cannot include " + what, s); throw EaterExceptionLocated.located("cannot include " + what, s);
try { try {
ReadLine readerline = ReadLineReader.create(reader, what, s.getLocation()); ReadLine readerline = ReadLineReader.create(reader, what, s.getLocation());
@ -568,14 +559,14 @@ public class TContext {
} }
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("cannot include " + what, s); throw EaterExceptionLocated.located("cannot include " + what, s);
} }
} }
if (sub == null) if (sub == null)
sub = subs.get(what); sub = subs.get(what);
if (sub == null) if (sub == null)
throw EaterException.located("cannot include " + what, s); throw EaterExceptionLocated.located("cannot include " + what, s);
executeLinesInternal(memory, sub.lines(), null); executeLinesInternal(memory, sub.lines(), null);
} finally { } finally {
@ -585,7 +576,7 @@ public class TContext {
} }
} }
private void executeIncludeDef(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeIncludeDef(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIncludeDef include = new EaterIncludeDef(s.getTrimmed()); final EaterIncludeDef include = new EaterIncludeDef(s.getTrimmed());
include.analyze(this, memory); include.analyze(this, memory);
final String definitionName = include.getLocation(); final String definitionName = include.getLocation();
@ -604,7 +595,7 @@ public class TContext {
} while (true); } while (true);
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("" + e, s); throw EaterExceptionLocated.located("" + e, s);
} finally { } finally {
try { try {
reader2.close(); reader2.close();
@ -614,12 +605,12 @@ public class TContext {
} }
} }
private void executeTheme(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeTheme(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterTheme eater = new EaterTheme(s.getTrimmed(), importedFiles); final EaterTheme eater = new EaterTheme(s.getTrimmed(), importedFiles);
eater.analyze(this, memory); eater.analyze(this, memory);
final ReadLine reader = eater.getTheme(); final ReadLine reader = eater.getTheme();
if (reader == null) if (reader == null)
throw EaterException.located("No such theme " + eater.getName(), s); throw EaterExceptionLocated.located("No such theme " + eater.getName(), s);
try { try {
final List<StringLocated> body = new ArrayList<>(); final List<StringLocated> body = new ArrayList<>();
@ -633,7 +624,7 @@ public class TContext {
} while (true); } while (true);
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("Error reading theme " + e, s); throw EaterExceptionLocated.located("Error reading theme " + e, s);
} finally { } finally {
try { try {
reader.close(); reader.close();
@ -643,7 +634,7 @@ public class TContext {
} }
} }
private void executeInclude(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeInclude(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterInclude include = new EaterInclude(s.getTrimmed()); final EaterInclude include = new EaterInclude(s.getTrimmed());
include.analyze(this, memory); include.analyze(this, memory);
String location = include.getWhat(); String location = include.getWhat();
@ -661,7 +652,7 @@ public class TContext {
if (location.startsWith("http://") || location.startsWith("https://")) { if (location.startsWith("http://") || location.startsWith("https://")) {
final SURL url = SURL.create(location); final SURL url = SURL.create(location);
if (url == null) if (url == null)
throw EaterException.located("Cannot open URL", s); throw EaterExceptionLocated.located("Cannot open URL", s);
reader = PreprocessorUtils.getReaderIncludeUrl(url, s, suf, charset); reader = PreprocessorUtils.getReaderIncludeUrl(url, s, suf, charset);
} else if (location.startsWith("<") && location.endsWith(">")) { } else if (location.startsWith("<") && location.endsWith(">")) {
@ -677,14 +668,14 @@ public class TContext {
return; return;
if (strategy == PreprocessorIncludeStrategy.ONCE && filesUsedCurrent.contains(f2)) if (strategy == PreprocessorIncludeStrategy.ONCE && filesUsedCurrent.contains(f2))
throw EaterException.located("This file has already been included", s); throw EaterExceptionLocated.located("This file has already been included", s);
if (StartDiagramExtractReader.containsStartDiagram(f2, s, charset)) { if (StartDiagramExtractReader.containsStartDiagram(f2, s, charset)) {
reader = StartDiagramExtractReader.build(f2, s, charset); reader = StartDiagramExtractReader.build(f2, s, charset);
} else { } else {
final Reader tmp = f2.getReader(charset); final Reader tmp = f2.getReader(charset);
if (tmp == null) if (tmp == null)
throw EaterException.located("Cannot include file", s); throw EaterExceptionLocated.located("Cannot include file", s);
reader = ReadLineReader.create(tmp, location, s.getLocation()); reader = ReadLineReader.create(tmp, location, s.getLocation());
} }
@ -713,7 +704,7 @@ public class TContext {
} }
} catch (IOException e) { } catch (IOException e) {
Logme.error(e); Logme.error(e);
throw EaterException.located("cannot include " + e, s); throw EaterExceptionLocated.located("cannot include " + e, s);
} finally { } finally {
if (reader != null) { if (reader != null) {
try { try {
@ -724,7 +715,7 @@ public class TContext {
} }
} }
throw EaterException.located("cannot include " + location, s); throw EaterExceptionLocated.located("cannot include " + location, s);
} }
public boolean isLegacyDefine(String functionName) { public boolean isLegacyDefine(String functionName) {

View File

@ -50,10 +50,10 @@ public interface TFunction {
public TFunctionType getFunctionType(); public TFunctionType getFunctionType();
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> args, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated; Map<String, TValue> named) throws EaterExceptionLocated;
public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args, public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated; Map<String, TValue> named) throws EaterExceptionLocated;
public boolean isUnquoted(); public boolean isUnquoted();

View File

@ -133,7 +133,7 @@ public class TFunctionImpl implements TFunction {
@Override @Override
public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args, public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
if (functionType != TFunctionType.PROCEDURE && functionType != TFunctionType.LEGACY_DEFINELONG) if (functionType != TFunctionType.PROCEDURE && functionType != TFunctionType.LEGACY_DEFINELONG)
throw new IllegalStateException(); throw new IllegalStateException();
@ -143,23 +143,24 @@ public class TFunctionImpl implements TFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> args, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
if (functionType == TFunctionType.LEGACY_DEFINE) if (functionType == TFunctionType.LEGACY_DEFINE)
return executeReturnLegacyDefine(location.getLocation(), context, memory, args); return executeReturnLegacyDefine(location.getLocation(), context, memory, args);
if (functionType != TFunctionType.RETURN_FUNCTION) if (functionType != TFunctionType.RETURN_FUNCTION)
throw EaterException.unlocated("Illegal call here. Is there a return directive in your function?", location); throw EaterExceptionLocated.unlocated("Illegal call here. Is there a return directive in your function?",
location);
final TMemory copy = getNewMemory(memory, args, named); final TMemory copy = getNewMemory(memory, args, named);
final TValue result = context.executeLines(copy, body, TFunctionType.RETURN_FUNCTION, true); final TValue result = context.executeLines(copy, body, TFunctionType.RETURN_FUNCTION, true);
if (result == null) if (result == null)
throw EaterException.unlocated("No return directive found in your function", location); throw EaterExceptionLocated.unlocated("No return directive found in your function", location);
return result; return result;
} }
private TValue executeReturnLegacyDefine(LineLocation location, TContext context, TMemory memory, List<TValue> args) private TValue executeReturnLegacyDefine(LineLocation location, TContext context, TMemory memory, List<TValue> args)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
if (legacyDefinition == null) if (legacyDefinition == null)
throw new IllegalStateException(); throw new IllegalStateException();

View File

@ -45,7 +45,7 @@ public interface TMemory {
public TValue getVariable(String varname); public TValue getVariable(String varname);
public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location) public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location)
throws EaterException; throws EaterExceptionLocated;
public void removeVariable(String varname); public void removeVariable(String varname);
@ -59,7 +59,7 @@ public interface TMemory {
public ExecutionContextIf peekIf(); public ExecutionContextIf peekIf();
public boolean areAllIfOk(TContext context, TMemory memory) throws EaterException; public boolean areAllIfOk(TContext context, TMemory memory) throws EaterExceptionLocated;
public void addIf(ExecutionContextIf context); public void addIf(ExecutionContextIf context);

View File

@ -73,10 +73,10 @@ public class TMemoryGlobal extends ExecutionContexts implements TMemory {
@Override @Override
public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location) public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location)
throws EaterException { throws EaterExceptionLocated {
Log.info("[MemGlobal] Setting " + varname); Log.info("[MemGlobal] Setting " + varname);
if (scope == TVariableScope.LOCAL) if (scope == TVariableScope.LOCAL)
throw EaterException.unlocated("Cannot use local variable here", location); throw EaterExceptionLocated.unlocated("Cannot use local variable here", location);
this.globalVariables.put(varname, value); this.globalVariables.put(varname, value);
this.variables.add(varname); this.variables.add(varname);

View File

@ -79,7 +79,7 @@ public class TMemoryLocal extends ExecutionContexts implements TMemory {
@Override @Override
public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location) public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location)
throws EaterException { throws EaterExceptionLocated {
if (scope == TVariableScope.GLOBAL) { if (scope == TVariableScope.GLOBAL) {
memoryGlobal.putVariable(varname, value, scope, location); memoryGlobal.putVariable(varname, value, scope, location);
return; return;

View File

@ -57,7 +57,7 @@ public class TimLoader {
this.context = new TContext(importedFiles, defines, charset, definitionsContainer); this.context = new TContext(importedFiles, defines, charset, definitionsContainer);
try { try {
defines.copyTo(global, location); defines.copyTo(global, location);
} catch (EaterException e) { } catch (EaterExceptionLocated e) {
Logme.error(e); Logme.error(e);
} }
} }

View File

@ -40,7 +40,6 @@ import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.expression.TValue; import net.sourceforge.plantuml.tim.expression.TValue;
import net.sourceforge.plantuml.utils.LineLocation;
public class VariableManager { public class VariableManager {
@ -54,7 +53,7 @@ public class VariableManager {
this.location = location; this.location = location;
} }
public int replaceVariables(String str, int i, StringBuilder result) throws EaterException, EaterExceptionLocated { public int replaceVariables(String str, int i, StringBuilder result) throws EaterExceptionLocated {
final String presentVariable = getVarnameAt(str, i); final String presentVariable = getVarnameAt(str, i);
if (result.toString().endsWith("##")) if (result.toString().endsWith("##"))
result.setLength(result.length() - 2); result.setLength(result.length() - 2);
@ -81,8 +80,7 @@ public class VariableManager {
return i; return i;
} }
private int replaceJson(JsonValue jsonValue, String str, int i, StringBuilder result) private int replaceJson(JsonValue jsonValue, String str, int i, StringBuilder result) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
while (i < str.length()) { while (i < str.length()) {
final char n = str.charAt(i); final char n = str.charAt(i);
if (n == '.') { if (n == '.') {
@ -120,11 +118,11 @@ public class VariableManager {
} else if (jsonValue instanceof JsonObject) { } else if (jsonValue instanceof JsonObject) {
jsonValue = ((JsonObject) jsonValue).get(nbString); jsonValue = ((JsonObject) jsonValue).get(nbString);
} else { } else {
throw EaterException.unlocated("Major parsing error", location); throw EaterExceptionLocated.unlocated("Major parsing error", location);
} }
if (jsonValue == null) if (jsonValue == null)
throw EaterException.unlocated("Data parsing error", location); throw EaterExceptionLocated.unlocated("Data parsing error", location);
i++; i++;
} else { } else {

View File

@ -34,14 +34,13 @@
*/ */
package net.sourceforge.plantuml.tim.expression; package net.sourceforge.plantuml.tim.expression;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TFunction; import net.sourceforge.plantuml.tim.TFunction;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
public interface Knowledge { public interface Knowledge {
public TValue getVariable(String name) throws EaterException, EaterExceptionLocated; public TValue getVariable(String name) throws EaterExceptionLocated;
public TFunction getFunction(TFunctionSignature signature); public TFunction getFunction(TFunctionSignature signature);

View File

@ -41,7 +41,6 @@ import java.util.Deque;
import java.util.List; import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunction; import net.sourceforge.plantuml.tim.TFunction;
@ -54,7 +53,7 @@ public class ReversePolishInterpretor {
private final boolean trace = false; private final boolean trace = false;
public ReversePolishInterpretor(StringLocated location, TokenStack queue, Knowledge knowledge, TMemory memory, public ReversePolishInterpretor(StringLocated location, TokenStack queue, Knowledge knowledge, TMemory memory,
TContext context) throws EaterException, EaterExceptionLocated { TContext context) throws EaterExceptionLocated {
final Deque<TValue> stack = new ArrayDeque<>(); final Deque<TValue> stack = new ArrayDeque<>();
if (trace) if (trace)
@ -74,7 +73,7 @@ public class ReversePolishInterpretor {
final TValue v1 = stack.removeFirst(); final TValue v1 = stack.removeFirst();
final TokenOperator op = token.getTokenOperator(); final TokenOperator op = token.getTokenOperator();
if (op == null) if (op == null)
throw EaterException.unlocated("bad op", location); throw EaterExceptionLocated.unlocated("bad op", location);
final TValue tmp = op.operate(v1, v2); final TValue tmp = op.operate(v1, v2);
stack.addFirst(tmp); stack.addFirst(tmp);
@ -82,7 +81,7 @@ public class ReversePolishInterpretor {
final int nb = Integer.parseInt(token.getSurface()); final int nb = Integer.parseInt(token.getSurface());
final Token token2 = it.nextToken(); final Token token2 = it.nextToken();
if (token2.getTokenType() != TokenType.FUNCTION_NAME) if (token2.getTokenType() != TokenType.FUNCTION_NAME)
throw EaterException.unlocated("rpn43", location); throw EaterExceptionLocated.unlocated("rpn43", location);
if (trace) if (trace)
System.err.println("token2=" + token2); System.err.println("token2=" + token2);
@ -90,10 +89,10 @@ public class ReversePolishInterpretor {
if (trace) if (trace)
System.err.println("function=" + function); System.err.println("function=" + function);
if (function == null) if (function == null)
throw EaterException.unlocated("Unknown built-in function " + token2.getSurface(), location); throw EaterExceptionLocated.unlocated("Unknown built-in function " + token2.getSurface(), location);
if (function.canCover(nb, Collections.<String>emptySet()) == false) if (function.canCover(nb, Collections.<String>emptySet()) == false)
throw EaterException.unlocated( throw EaterExceptionLocated.unlocated(
"Bad number of arguments for " + function.getSignature().getFunctionName(), location); "Bad number of arguments for " + function.getSignature().getFunctionName(), location);
final List<TValue> args = new ArrayList<>(); final List<TValue> args = new ArrayList<>();
@ -103,7 +102,7 @@ public class ReversePolishInterpretor {
if (trace) if (trace)
System.err.println("args=" + args); System.err.println("args=" + args);
if (location == null) if (location == null)
throw EaterException.unlocated("rpn44", location); throw EaterExceptionLocated.unlocated("rpn44", location);
final TValue r = function.executeReturnFunction(context, memory, location, args, final TValue r = function.executeReturnFunction(context, memory, location, args,
Collections.<String, TValue>emptyMap()); Collections.<String, TValue>emptyMap());
@ -111,7 +110,7 @@ public class ReversePolishInterpretor {
System.err.println("r=" + r); System.err.println("r=" + r);
stack.addFirst(r); stack.addFirst(r);
} else { } else {
throw EaterException.unlocated("rpn41", location); throw EaterExceptionLocated.unlocated("rpn41", location);
} }
} }
result = stack.removeFirst(); result = stack.removeFirst();

View File

@ -38,7 +38,6 @@ import java.util.ArrayDeque;
import java.util.Deque; import java.util.Deque;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
// https://en.wikipedia.org/wiki/Shunting-yard_algorithm // https://en.wikipedia.org/wiki/Shunting-yard_algorithm
@ -59,8 +58,7 @@ public class ShuntingYard {
System.err.println(""); System.err.println("");
} }
public ShuntingYard(TokenIterator it, Knowledge knowledge, StringLocated location) public ShuntingYard(TokenIterator it, Knowledge knowledge, StringLocated location) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
while (it.hasMoreTokens()) { while (it.hasMoreTokens()) {
final Token token = it.nextToken(); final Token token = it.nextToken();
@ -76,7 +74,7 @@ public class ShuntingYard {
final TValue variable = knowledge.getVariable(name); final TValue variable = knowledge.getVariable(name);
if (variable == null) { if (variable == null) {
if (isVariableName(name) == false) if (isVariableName(name) == false)
throw EaterException.unlocated("Parsing syntax error about " + name, location); throw EaterExceptionLocated.unlocated("Parsing syntax error about " + name, location);
ouputQueue.add(new Token(name, TokenType.QUOTED_STRING, null)); ouputQueue.add(new Token(name, TokenType.QUOTED_STRING, null));
} else { } else {

View File

@ -44,7 +44,6 @@ import java.util.Map;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.Eater; import net.sourceforge.plantuml.tim.Eater;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TMemory; import net.sourceforge.plantuml.tim.TMemory;
@ -87,7 +86,7 @@ public class TokenStack {
return result; return result;
} }
static public TokenStack eatUntilCloseParenthesisOrComma(Eater eater) throws EaterException { static public TokenStack eatUntilCloseParenthesisOrComma(Eater eater) throws EaterExceptionLocated {
final TokenStack result = new TokenStack(); final TokenStack result = new TokenStack();
int level = 0; int level = 0;
Token lastToken = null; Token lastToken = null;
@ -95,7 +94,7 @@ public class TokenStack {
eater.skipSpaces(); eater.skipSpaces();
final char ch = eater.peekChar(); final char ch = eater.peekChar();
if (ch == 0) if (ch == 0)
throw EaterException.unlocated("until001", eater.getStringLocated()); throw EaterExceptionLocated.unlocated("until001", eater.getStringLocated());
if (level == 0 && (ch == ',' || ch == ')')) if (level == 0 && (ch == ',' || ch == ')'))
return result; return result;
@ -113,12 +112,13 @@ public class TokenStack {
} }
} }
static public void eatUntilCloseParenthesisOrComma(TokenIterator it, StringLocated location) throws EaterException { static public void eatUntilCloseParenthesisOrComma(TokenIterator it, StringLocated location)
throws EaterExceptionLocated {
int level = 0; int level = 0;
while (true) { while (true) {
final Token ch = it.peekToken(); final Token ch = it.peekToken();
if (ch == null) if (ch == null)
throw EaterException.unlocated("until002", location); throw EaterExceptionLocated.unlocated("until002", location);
final TokenType typech = ch.getTokenType(); final TokenType typech = ch.getTokenType();
if (level == 0 && (typech == TokenType.COMMA || typech == TokenType.CLOSE_PAREN_MATH) if (level == 0 && (typech == TokenType.COMMA || typech == TokenType.CLOSE_PAREN_MATH)
@ -135,7 +135,7 @@ public class TokenStack {
} }
} }
private int countFunctionArg(TokenIterator it, StringLocated location) throws EaterException { private int countFunctionArg(TokenIterator it, StringLocated location) throws EaterExceptionLocated {
// return 42; // return 42;
final TokenType type1 = it.peekToken().getTokenType(); final TokenType type1 = it.peekToken().getTokenType();
if (type1 == TokenType.CLOSE_PAREN_MATH || type1 == TokenType.CLOSE_PAREN_FUNC) if (type1 == TokenType.CLOSE_PAREN_MATH || type1 == TokenType.CLOSE_PAREN_FUNC)
@ -151,13 +151,13 @@ public class TokenStack {
else if (type == TokenType.COMMA) else if (type == TokenType.COMMA)
result++; result++;
else else
throw EaterException.unlocated("count13", location); throw EaterExceptionLocated.unlocated("count13", location);
} }
throw EaterException.unlocated("count12", location); throw EaterExceptionLocated.unlocated("count12", location);
} }
public void guessFunctions(StringLocated location) throws EaterException { public void guessFunctions(StringLocated location) throws EaterExceptionLocated {
final Deque<Integer> open = new ArrayDeque<>(); final Deque<Integer> open = new ArrayDeque<>();
final Map<Integer, Integer> parens = new HashMap<Integer, Integer>(); final Map<Integer, Integer> parens = new HashMap<Integer, Integer>();
for (int i = 0; i < tokens.size(); i++) { for (int i = 0; i < tokens.size(); i++) {
@ -210,8 +210,7 @@ public class TokenStack {
return new InternalIterator(); return new InternalIterator();
} }
public TValue getResult(StringLocated location, TContext context, TMemory memory) public TValue getResult(StringLocated location, TContext context, TMemory memory) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
final Knowledge knowledge = context.asKnowledge(memory, location.getLocation()); final Knowledge knowledge = context.asKnowledge(memory, location.getLocation());
final TokenStack tmp = withoutSpace(); final TokenStack tmp = withoutSpace();
tmp.guessFunctions(location); tmp.guessFunctions(location);

View File

@ -36,7 +36,7 @@ package net.sourceforge.plantuml.tim.expression;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.Eater; import net.sourceforge.plantuml.tim.Eater;
import net.sourceforge.plantuml.tim.EaterException; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public enum TokenType { public enum TokenType {
// ::remove folder when __HAXE__ // ::remove folder when __HAXE__
@ -77,7 +77,8 @@ public enum TokenType {
return result; return result;
} }
final static public Token eatOneToken(Token lastToken, Eater eater, boolean manageColon) throws EaterException { final static public Token eatOneToken(Token lastToken, Eater eater, boolean manageColon)
throws EaterExceptionLocated {
char ch = eater.peekChar(); char ch = eater.peekChar();
if (ch == 0) if (ch == 0)
return null; return null;
@ -121,7 +122,7 @@ public enum TokenType {
return true; return true;
} }
static private String eatAndGetTokenPlainText(Eater eater) throws EaterException { static private String eatAndGetTokenPlainText(Eater eater) throws EaterExceptionLocated {
final StringBuilder result = new StringBuilder(); final StringBuilder result = new StringBuilder();
while (true) { while (true) {
final char ch = eater.peekChar(); final char ch = eater.peekChar();

View File

@ -35,7 +35,6 @@
package net.sourceforge.plantuml.tim.iterator; package net.sourceforge.plantuml.tim.iterator;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public abstract class AbstractCodeIterator implements CodeIterator { public abstract class AbstractCodeIterator implements CodeIterator {
@ -47,7 +46,7 @@ public abstract class AbstractCodeIterator implements CodeIterator {
} }
@Override @Override
public void next() throws EaterException, EaterExceptionLocated { public void next() throws EaterExceptionLocated {
source.next(); source.next();
} }
@ -57,7 +56,8 @@ public abstract class AbstractCodeIterator implements CodeIterator {
} }
@Override @Override
final public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterException { final public void jumpToCodePosition(CodePosition newPosition, StringLocated location)
throws EaterExceptionLocated {
source.jumpToCodePosition(newPosition, location); source.jumpToCodePosition(newPosition, location);
} }

View File

@ -35,18 +35,17 @@
package net.sourceforge.plantuml.tim.iterator; package net.sourceforge.plantuml.tim.iterator;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public interface CodeIterator { public interface CodeIterator {
// ::remove folder when __HAXE__ // ::remove folder when __HAXE__
public StringLocated peek() throws EaterException, EaterExceptionLocated; public StringLocated peek() throws EaterExceptionLocated;
public void next() throws EaterException, EaterExceptionLocated; public void next() throws EaterExceptionLocated;
public CodePosition getCodePosition(); public CodePosition getCodePosition();
public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterException; public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterExceptionLocated;
} }

View File

@ -40,7 +40,6 @@ import net.sourceforge.plantuml.json.ParseException;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterAffectation; import net.sourceforge.plantuml.tim.EaterAffectation;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TMemory; import net.sourceforge.plantuml.tim.TMemory;
@ -59,7 +58,7 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
} }
@Override @Override
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {
@ -75,7 +74,7 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
} }
} }
private void doAffectation(StringLocated result) throws EaterException, EaterExceptionLocated { private void doAffectation(StringLocated result) throws EaterExceptionLocated {
int lastLocation = -1; int lastLocation = -1;
for (int i = 0; i < 9999; i++) for (int i = 0; i < 9999; i++)
try { try {
@ -83,7 +82,7 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
return; return;
} catch (ParseException e) { } catch (ParseException e) {
if (e.getColumn() <= lastLocation) if (e.getColumn() <= lastLocation)
throw EaterException.located("Error in JSON format", result); throw EaterExceptionLocated.located("Error in JSON format", result);
lastLocation = e.getColumn(); lastLocation = e.getColumn();
next(); next();
@ -93,7 +92,7 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
} }
private void executeAffectation(TContext context, TMemory memory, StringLocated s) private void executeAffectation(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated { throws EaterExceptionLocated {
new EaterAffectation(s).analyze(context, memory); new EaterAffectation(s).analyze(context, memory);
} }

View File

@ -39,7 +39,6 @@ import java.util.List;
import net.sourceforge.plantuml.json.JsonValue; import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterForeach; import net.sourceforge.plantuml.tim.EaterForeach;
import net.sourceforge.plantuml.tim.ExecutionContextForeach; import net.sourceforge.plantuml.tim.ExecutionContextForeach;
@ -61,7 +60,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
this.logs = logs; this.logs = logs;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
int level = 0; int level = 0;
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
@ -91,7 +90,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
} else if (result.getType() == TLineType.ENDFOREACH) { } else if (result.getType() == TLineType.ENDFOREACH) {
logs.add(result); logs.add(result);
if (foreach == null) if (foreach == null)
throw EaterException.located("No foreach related to this endforeach", result); throw EaterExceptionLocated.located("No foreach related to this endforeach", result);
foreach.inc(); foreach.inc();
if (foreach.isSkipMe()) { if (foreach.isSkipMe()) {
@ -108,7 +107,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
} }
} }
private void executeForeach(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeForeach(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterForeach condition = new EaterForeach(s); final EaterForeach condition = new EaterForeach(s);
condition.analyze(context, memory); condition.analyze(context, memory);
final ExecutionContextForeach foreach = ExecutionContextForeach.fromValue(condition.getVarname(), final ExecutionContextForeach foreach = ExecutionContextForeach.fromValue(condition.getVarname(),
@ -122,7 +121,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
} }
private void setLoopVariable(TMemory memory, ExecutionContextForeach foreach, StringLocated position) private void setLoopVariable(TMemory memory, ExecutionContextForeach foreach, StringLocated position)
throws EaterException { throws EaterExceptionLocated {
final JsonValue first = foreach.getJsonArray().get(foreach.currentIndex()); final JsonValue first = foreach.getJsonArray().get(foreach.currentIndex());
memory.putVariable(foreach.getVarname(), TValue.fromJson(first), TVariableScope.GLOBAL, position); memory.putVariable(foreach.getVarname(), TValue.fromJson(first), TVariableScope.GLOBAL, position);
} }

View File

@ -39,7 +39,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterElseIf; import net.sourceforge.plantuml.tim.EaterElseIf;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterIf; import net.sourceforge.plantuml.tim.EaterIf;
import net.sourceforge.plantuml.tim.EaterIfdef; import net.sourceforge.plantuml.tim.EaterIfdef;
@ -61,7 +60,7 @@ public class CodeIteratorIf extends AbstractCodeIterator {
this.logs = logs; this.logs = logs;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {
@ -107,19 +106,17 @@ public class CodeIteratorIf extends AbstractCodeIterator {
} }
} }
private void executeIf(TContext context, TMemory memory, StringLocated s) private void executeIf(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
final EaterIf condition = new EaterIf(s); final EaterIf condition = new EaterIf(s);
condition.analyze(context, memory); condition.analyze(context, memory);
final boolean isTrue = condition.isTrue(); final boolean isTrue = condition.isTrue();
memory.addIf(ExecutionContextIf.fromValue(isTrue)); memory.addIf(ExecutionContextIf.fromValue(isTrue));
} }
private void executeElseIf(TContext context, TMemory memory, StringLocated s) private void executeElseIf(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
throws EaterException, EaterExceptionLocated {
final ExecutionContextIf poll = (ExecutionContextIf) memory.peekIf(); final ExecutionContextIf poll = (ExecutionContextIf) memory.peekIf();
if (poll == null) if (poll == null)
throw EaterException.located("No if related to this else", s); throw EaterExceptionLocated.located("No if related to this else", s);
poll.enteringElseIf(); poll.enteringElseIf();
if (poll.hasBeenBurn() == false) { if (poll.hasBeenBurn() == false) {
@ -132,32 +129,32 @@ public class CodeIteratorIf extends AbstractCodeIterator {
} }
} }
private void executeIfdef(TContext context, TMemory memory, StringLocated s) throws EaterException { private void executeIfdef(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIfdef condition = new EaterIfdef(s); final EaterIfdef condition = new EaterIfdef(s);
condition.analyze(context, memory); condition.analyze(context, memory);
final boolean isTrue = condition.isTrue(context, memory); final boolean isTrue = condition.isTrue(context, memory);
memory.addIf(ExecutionContextIf.fromValue(isTrue)); memory.addIf(ExecutionContextIf.fromValue(isTrue));
} }
private void executeIfndef(TContext context, TMemory memory, StringLocated s) throws EaterException { private void executeIfndef(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIfndef condition = new EaterIfndef(s); final EaterIfndef condition = new EaterIfndef(s);
condition.analyze(context, memory); condition.analyze(context, memory);
final boolean isTrue = condition.isTrue(context, memory); final boolean isTrue = condition.isTrue(context, memory);
memory.addIf(ExecutionContextIf.fromValue(isTrue)); memory.addIf(ExecutionContextIf.fromValue(isTrue));
} }
private void executeElse(TContext context, TMemory memory, StringLocated s) throws EaterException { private void executeElse(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final ExecutionContextIf poll = (ExecutionContextIf) memory.peekIf(); final ExecutionContextIf poll = (ExecutionContextIf) memory.peekIf();
if (poll == null) if (poll == null)
throw EaterException.located("No if related to this else", s); throw EaterExceptionLocated.located("No if related to this else", s);
poll.nowInElse(); poll.nowInElse();
} }
private void executeEndif(TContext context, TMemory memory, StringLocated s) throws EaterException { private void executeEndif(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final ExecutionContextIf poll = (ExecutionContextIf) memory.pollIf(); final ExecutionContextIf poll = (ExecutionContextIf) memory.pollIf();
if (poll == null) if (poll == null)
throw EaterException.located("No if related to this endif", s); throw EaterExceptionLocated.located("No if related to this endif", s);
} }

View File

@ -37,7 +37,7 @@ package net.sourceforge.plantuml.tim.iterator;
import java.util.List; import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorImpl implements CodeIterator { public class CodeIteratorImpl implements CodeIterator {
@ -89,10 +89,10 @@ public class CodeIteratorImpl implements CodeIterator {
} }
@Override @Override
public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterException { public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterExceptionLocated {
this.countJump++; this.countJump++;
if (this.countJump > 999) if (this.countJump > 999)
throw EaterException.unlocated("Infinite loop?", location); throw EaterExceptionLocated.unlocated("Infinite loop?", location);
final Position pos = (Position) newPosition; final Position pos = (Position) newPosition;
this.current = pos.pos; this.current = pos.pos;

View File

@ -35,7 +35,6 @@
package net.sourceforge.plantuml.tim.iterator; package net.sourceforge.plantuml.tim.iterator;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorInnerComment extends AbstractCodeIterator { public class CodeIteratorInnerComment extends AbstractCodeIterator {
@ -44,7 +43,7 @@ public class CodeIteratorInnerComment extends AbstractCodeIterator {
super(source); super(source);
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {
return null; return null;

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.FunctionsSet; import net.sourceforge.plantuml.tim.FunctionsSet;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
@ -61,7 +60,7 @@ public class CodeIteratorLegacyDefine extends AbstractCodeIterator {
this.memory = memory; this.memory = memory;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorLongComment extends AbstractCodeIterator { public class CodeIteratorLongComment extends AbstractCodeIterator {
@ -50,7 +49,7 @@ public class CodeIteratorLongComment extends AbstractCodeIterator {
this.logs = logs; this.logs = logs;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
if (source.peek() == null) { if (source.peek() == null) {
return null; return null;

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.FunctionsSet; import net.sourceforge.plantuml.tim.FunctionsSet;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
@ -62,7 +61,7 @@ public class CodeIteratorProcedure extends AbstractCodeIterator {
this.memory = memory; this.memory = memory;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.FunctionsSet; import net.sourceforge.plantuml.tim.FunctionsSet;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
@ -62,7 +61,7 @@ public class CodeIteratorReturnFunction extends AbstractCodeIterator {
this.memory = memory; this.memory = memory;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorShortComment extends AbstractCodeIterator { public class CodeIteratorShortComment extends AbstractCodeIterator {
@ -50,7 +49,7 @@ public class CodeIteratorShortComment extends AbstractCodeIterator {
this.logs = logs; this.logs = logs;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
if (result == null) { if (result == null) {

View File

@ -40,7 +40,6 @@ import java.util.Map;
import net.sourceforge.plantuml.preproc.Sub; import net.sourceforge.plantuml.preproc.Sub;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterStartsub; import net.sourceforge.plantuml.tim.EaterStartsub;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
@ -66,7 +65,7 @@ public class CodeIteratorSub extends AbstractCodeIterator {
return Collections.unmodifiableMap(subs); return Collections.unmodifiableMap(subs);
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
if (readingInProgress != null) if (readingInProgress != null)
return readingInProgress.peek(); return readingInProgress.peek();
@ -83,7 +82,7 @@ public class CodeIteratorSub extends AbstractCodeIterator {
StringLocated s = null; StringLocated s = null;
while ((s = source.peek()) != null) { while ((s = source.peek()) != null) {
if (s.getType() == TLineType.STARTSUB) { if (s.getType() == TLineType.STARTSUB) {
throw EaterException.located("Cannot nest sub", result); throw EaterExceptionLocated.located("Cannot nest sub", result);
} else if (s.getType() == TLineType.ENDSUB) { } else if (s.getType() == TLineType.ENDSUB) {
source.next(); source.next();
readingInProgress = new CodeIteratorImpl(created.lines()); readingInProgress = new CodeIteratorImpl(created.lines());
@ -101,7 +100,7 @@ public class CodeIteratorSub extends AbstractCodeIterator {
} }
@Override @Override
public void next() throws EaterException, EaterExceptionLocated { public void next() throws EaterExceptionLocated {
if (readingInProgress == null) { if (readingInProgress == null) {
source.next(); source.next();
return; return;

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType; import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterWhile; import net.sourceforge.plantuml.tim.EaterWhile;
import net.sourceforge.plantuml.tim.ExecutionContextWhile; import net.sourceforge.plantuml.tim.ExecutionContextWhile;
@ -60,7 +59,7 @@ public class CodeIteratorWhile extends AbstractCodeIterator {
this.logs = logs; this.logs = logs;
} }
public StringLocated peek() throws EaterException, EaterExceptionLocated { public StringLocated peek() throws EaterExceptionLocated {
int level = 0; int level = 0;
while (true) { while (true) {
final StringLocated result = source.peek(); final StringLocated result = source.peek();
@ -90,7 +89,7 @@ public class CodeIteratorWhile extends AbstractCodeIterator {
} else if (result.getType() == TLineType.ENDWHILE) { } else if (result.getType() == TLineType.ENDWHILE) {
logs.add(result); logs.add(result);
if (currentWhile == null) if (currentWhile == null)
throw EaterException.located("No while related to this endwhile", result); throw EaterExceptionLocated.located("No while related to this endwhile", result);
final TValue value = currentWhile.conditionValue(result, context, memory); final TValue value = currentWhile.conditionValue(result, context, memory);
if (value.toBoolean()) if (value.toBoolean())
@ -106,7 +105,7 @@ public class CodeIteratorWhile extends AbstractCodeIterator {
} }
} }
private void executeWhile(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated { private void executeWhile(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterWhile condition = new EaterWhile(s); final EaterWhile condition = new EaterWhile(s);
condition.analyze(context, memory); condition.analyze(context, memory);
final TokenStack whileExpression = condition.getWhileExpression(); final TokenStack whileExpression = condition.getWhileExpression();

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class AlwaysFalse extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
return TValue.fromBoolean(false); return TValue.fromBoolean(false);
} }
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class AlwaysTrue extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
return TValue.fromBoolean(true); return TValue.fromBoolean(true);
} }
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunction; import net.sourceforge.plantuml.tim.TFunction;
@ -60,13 +59,13 @@ public class CallUserFunction extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String fname = values.get(0).toString(); final String fname = values.get(0).toString();
final List<TValue> args = values.subList(1, values.size()); final List<TValue> args = values.subList(1, values.size());
final TFunctionSignature signature = new TFunctionSignature(fname, args.size()); final TFunctionSignature signature = new TFunctionSignature(fname, args.size());
final TFunction func = context.getFunctionSmart(signature); final TFunction func = context.getFunctionSmart(signature);
if (func == null) if (func == null)
throw EaterException.unlocated("Cannot find void function " + fname, location); throw EaterExceptionLocated.unlocated("Cannot find void function " + fname, location);
return func.executeReturnFunction(context, memory, location, args, named); return func.executeReturnFunction(context, memory, location, args, named);
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Chr extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
try { try {
final String value = String.valueOf(Character.toChars(values.get(0).toInt())); final String value = String.valueOf(Character.toChars(values.get(0).toInt()));
return TValue.fromString(value); return TValue.fromString(value);

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet; import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException; import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,7 +62,7 @@ public class Darken extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString(); final String colorString = values.get(0).toString();
final int ratio = values.get(1).toInt(); final int ratio = values.get(1).toInt();
try { try {
@ -71,7 +70,7 @@ public class Darken extends SimpleReturnFunction {
color = color.darken(ratio); color = color.darken(ratio);
return TValue.fromString(color.asString()); return TValue.fromString(color.asString());
} catch (NoSuchColorException e) { } catch (NoSuchColorException e) {
throw EaterException.located("No such color", location); throw EaterExceptionLocated.located("No such color", location);
} }
} }
} }

View File

@ -41,7 +41,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -61,7 +60,7 @@ public class DateFunction extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
if (values.size() == 0) if (values.size() == 0)
return TValue.fromString(new Date().toString()); return TValue.fromString(new Date().toString());
@ -75,7 +74,7 @@ public class DateFunction extends SimpleReturnFunction {
try { try {
return TValue.fromString(new SimpleDateFormat(format).format(now)); return TValue.fromString(new SimpleDateFormat(format).format(now));
} catch (Exception e) { } catch (Exception e) {
throw EaterException.unlocated("Bad date pattern", location); throw EaterExceptionLocated.unlocated("Bad date pattern", location);
} }
} }
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Dec2hex extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
try { try {
return TValue.fromString("" + Integer.toHexString(values.get(0).toInt())); return TValue.fromString("" + Integer.toHexString(values.get(0).toInt()));
} catch (Throwable t) { } catch (Throwable t) {

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.preproc.Defines; import net.sourceforge.plantuml.preproc.Defines;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -66,7 +65,7 @@ public class Dirpath extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
if (value == null) if (value == null)
return TValue.fromString(""); return TValue.fromString("");

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.StringEater; import net.sourceforge.plantuml.tim.StringEater;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
@ -60,7 +59,7 @@ public class Eval extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String exp = values.get(0).toString(); final String exp = values.get(0).toString();
final StringEater eater = new StringEater(exp); final StringEater eater = new StringEater(exp);
final TValue value = eater.eatExpression(context, memory); final TValue value = eater.eatExpression(context, memory);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Feature extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String arg = values.get(0).toString(); final String arg = values.get(0).toString();
if ("style".equalsIgnoreCase(arg)) if ("style".equalsIgnoreCase(arg))
return TValue.fromInt(1); return TValue.fromInt(1);

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.security.SFile; import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class FileExists extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
// ::comment when __CORE__ // ::comment when __CORE__
final String path = values.get(0).toString(); final String path = values.get(0).toString();
return TValue.fromBoolean(new SFile(path).exists()); return TValue.fromBoolean(new SFile(path).exists());

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.preproc.Defines; import net.sourceforge.plantuml.preproc.Defines;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -66,7 +65,7 @@ public class Filename extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
if (value == null) { if (value == null) {
return TValue.fromString(""); return TValue.fromString("");
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class FunctionExists extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String name = values.get(0).toString(); final String name = values.get(0).toString();
return TValue.fromBoolean(context.doesFunctionExist(name)); return TValue.fromBoolean(context.doesFunctionExist(name));
} }

View File

@ -45,7 +45,6 @@ import net.sourceforge.plantuml.json.JsonObject;
import net.sourceforge.plantuml.log.Logme; import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.preproc.Stdlib; import net.sourceforge.plantuml.preproc.Stdlib;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -65,7 +64,7 @@ public class GetAllStdlib extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
switch (values.size()) { switch (values.size()) {
case 0: case 0:
@ -100,7 +99,7 @@ public class GetAllStdlib extends SimpleReturnFunction {
default: default:
assert false; // Should not append because of canCover() assert false; // Should not append because of canCover()
throw EaterException.located("Error on get_all_stdlib: Too many arguments", location); throw EaterExceptionLocated.located("Error on get_all_stdlib: Too many arguments", location);
} }
} }
} }

View File

@ -43,7 +43,6 @@ import net.sourceforge.plantuml.json.JsonArray;
import net.sourceforge.plantuml.log.Logme; import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.theme.ThemeUtils; import net.sourceforge.plantuml.theme.ThemeUtils;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,7 +62,7 @@ public class GetAllTheme extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final JsonArray result = new JsonArray(); final JsonArray result = new JsonArray();
try { try {
for (String theme : ThemeUtils.getAllThemeNames()) { for (String theme : ThemeUtils.getAllThemeNames()) {

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.json.JsonArray;
import net.sourceforge.plantuml.json.JsonObject; import net.sourceforge.plantuml.json.JsonObject;
import net.sourceforge.plantuml.json.JsonValue; import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -62,10 +61,10 @@ public class GetJsonKey extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final TValue data = values.get(0); final TValue data = values.get(0);
if (data.isJson() == false) if (data.isJson() == false)
throw EaterException.unlocated("Not JSON data", location); throw EaterExceptionLocated.unlocated("Not JSON data", location);
final JsonValue json = data.toJson(); final JsonValue json = data.toJson();
if (json.isObject()) { if (json.isObject()) {
@ -88,7 +87,7 @@ public class GetJsonKey extends SimpleReturnFunction {
return TValue.fromJson(result); return TValue.fromJson(result);
} }
throw EaterException.unlocated("Bad JSON type", location); throw EaterExceptionLocated.unlocated("Bad JSON type", location);
} }

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.json.JsonValue; import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class GetJsonType extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final TValue data = values.get(0); final TValue data = values.get(0);
if (data.isString()) if (data.isString())
return TValue.fromString("string"); return TValue.fromString("string");

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class GetVariableValue extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String name = values.get(0).toString(); final String name = values.get(0).toString();
final TValue variable = memory.getVariable(name); final TValue variable = memory.getVariable(name);
if (variable == null) if (variable == null)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class GetVersion extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
return TValue.fromString(Version.versionString()); return TValue.fromString(Version.versionString());
} }
} }

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.security.SecurityUtils; import net.sourceforge.plantuml.security.SecurityUtils;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class Getenv extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
// ::comment when __CORE__ // ::comment when __CORE__
final String value = getenv(values.get(0).toString()); final String value = getenv(values.get(0).toString());
if (value == null) if (value == null)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Hex2dec extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
try { try {
return TValue.fromInt(Integer.parseInt(values.get(0).toString(), 16)); return TValue.fromInt(Integer.parseInt(values.get(0).toString(), 16));
} catch (Throwable t) { } catch (Throwable t) {

View File

@ -42,7 +42,6 @@ import java.util.Set;
import net.sourceforge.plantuml.klimt.color.HColors; import net.sourceforge.plantuml.klimt.color.HColors;
import net.sourceforge.plantuml.klimt.color.HSLColor; import net.sourceforge.plantuml.klimt.color.HSLColor;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -62,7 +61,7 @@ public class HslColor extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final int h = values.get(0).toInt(); final int h = values.get(0).toInt();
final int s = values.get(1).toInt(); final int s = values.get(1).toInt();
final int l = values.get(2).toInt(); final int l = values.get(2).toInt();

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class IntVal extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String s = values.get(0).toString(); final String s = values.get(0).toString();
try { try {
return TValue.fromInt(Integer.parseInt(s)); return TValue.fromInt(Integer.parseInt(s));

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunction; import net.sourceforge.plantuml.tim.TFunction;
@ -65,13 +64,13 @@ public class InvokeProcedure implements TFunction {
@Override @Override
public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args, public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String fname = args.get(0).toString(); final String fname = args.get(0).toString();
final List<TValue> sublist = args.subList(1, args.size()); final List<TValue> sublist = args.subList(1, args.size());
final TFunctionSignature signature = new TFunctionSignature(fname, sublist.size()); final TFunctionSignature signature = new TFunctionSignature(fname, sublist.size());
final TFunction func = context.getFunctionSmart(signature); final TFunction func = context.getFunctionSmart(signature);
if (func == null) if (func == null)
throw EaterException.located("Cannot find void function " + fname, location); throw EaterExceptionLocated.located("Cannot find void function " + fname, location);
func.executeProcedureInternal(context, memory, location, sublist, named); func.executeProcedureInternal(context, memory, location, sublist, named);
} }

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet; import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException; import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,13 +62,13 @@ public class IsDark extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString(); final String colorString = values.get(0).toString();
try { try {
final HColor color = HColorSet.instance().getColorLEGACY(colorString); final HColor color = HColorSet.instance().getColorLEGACY(colorString);
return TValue.fromBoolean(color.isDark()); return TValue.fromBoolean(color.isDark());
} catch (NoSuchColorException e) { } catch (NoSuchColorException e) {
throw EaterException.located("No such color", location); throw EaterExceptionLocated.located("No such color", location);
} }
} }
} }

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet; import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException; import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,13 +62,13 @@ public class IsLight extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString(); final String colorString = values.get(0).toString();
try { try {
final HColor color = HColorSet.instance().getColorLEGACY(colorString); final HColor color = HColorSet.instance().getColorLEGACY(colorString);
return TValue.fromBoolean(!color.isDark()); return TValue.fromBoolean(!color.isDark());
} catch (NoSuchColorException e) { } catch (NoSuchColorException e) {
throw EaterException.located("No such color", location); throw EaterExceptionLocated.located("No such color", location);
} }
} }
} }

View File

@ -41,7 +41,6 @@ import java.util.Set;
import net.sourceforge.plantuml.json.JsonObject; import net.sourceforge.plantuml.json.JsonObject;
import net.sourceforge.plantuml.json.JsonValue; import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -61,7 +60,7 @@ public class JsonKeyExists extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final TValue arg0 = values.get(0); final TValue arg0 = values.get(0);
if (arg0.isJson() == false) if (arg0.isJson() == false)
return TValue.fromBoolean(false); return TValue.fromBoolean(false);

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet; import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException; import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,7 +62,7 @@ public class Lighten extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString(); final String colorString = values.get(0).toString();
final int ratio = values.get(1).toInt(); final int ratio = values.get(1).toInt();
try { try {
@ -71,7 +70,7 @@ public class Lighten extends SimpleReturnFunction {
color = color.lighten(ratio); color = color.lighten(ratio);
return TValue.fromString(color.asString()); return TValue.fromString(color.asString());
} catch (NoSuchColorException e) { } catch (NoSuchColorException e) {
throw EaterException.located("No such color", location); throw EaterExceptionLocated.located("No such color", location);
} }
} }
} }

View File

@ -50,7 +50,6 @@ import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.security.SFile; import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.security.SURL; import net.sourceforge.plantuml.security.SURL;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -109,7 +108,7 @@ public class LoadJson extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final String path = values.get(0).toString(); final String path = values.get(0).toString();
try { try {
String data = loadStringData(path, getCharset(values)); String data = loadStringData(path, getCharset(values));
@ -120,11 +119,12 @@ public class LoadJson extends SimpleReturnFunction {
return TValue.fromJson(jsonValue); return TValue.fromJson(jsonValue);
} catch (ParseException pe) { } catch (ParseException pe) {
Logme.error(pe); Logme.error(pe);
throw EaterException.unlocated("JSON parse issue in source " + path + " on location " + pe.getLocation(), throw EaterExceptionLocated
location); .unlocated("JSON parse issue in source " + path + " on location " + pe.getLocation(), location);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
Logme.error(e); Logme.error(e);
throw EaterException.unlocated("JSON encoding issue in source " + path + ": " + e.getMessage(), location); throw EaterExceptionLocated.unlocated("JSON encoding issue in source " + path + ": " + e.getMessage(),
location);
} }
} }
@ -163,7 +163,8 @@ public class LoadJson extends SimpleReturnFunction {
* @return the decoded String from the data source * @return the decoded String from the data source
* @throws EaterException if something went wrong on reading data * @throws EaterException if something went wrong on reading data
*/ */
private String loadStringData(String path, String charset) throws EaterException, UnsupportedEncodingException { private String loadStringData(String path, String charset)
throws EaterExceptionLocated, UnsupportedEncodingException {
byte[] byteData = null; byte[] byteData = null;
if (path.startsWith("http://") || path.startsWith("https://")) { if (path.startsWith("http://") || path.startsWith("https://")) {

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalAnd extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values) for (TValue v : values)
if (v.toBoolean() == false) if (v.toBoolean() == false)
return TValue.fromBoolean(false); return TValue.fromBoolean(false);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNand extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values) for (TValue v : values)
if (v.toBoolean() == false) if (v.toBoolean() == false)
return TValue.fromBoolean(!false); return TValue.fromBoolean(!false);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNor extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values) for (TValue v : values)
if (v.toBoolean() == true) if (v.toBoolean() == true)
return TValue.fromBoolean(!true); return TValue.fromBoolean(!true);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNot extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final boolean arg = values.get(0).toBoolean(); final boolean arg = values.get(0).toBoolean();
return TValue.fromBoolean(!arg); return TValue.fromBoolean(!arg);
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNxor extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
int cpt = 0; int cpt = 0;
for (TValue v : values) for (TValue v : values)
if (v.toBoolean() == true) if (v.toBoolean() == true)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalOr extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values) for (TValue v : values)
if (v.toBoolean() == true) if (v.toBoolean() == true)
return TValue.fromBoolean(true); return TValue.fromBoolean(true);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalXor extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
int cpt = 0; int cpt = 0;
for (TValue v : values) for (TValue v : values)
if (v.toBoolean() == true) if (v.toBoolean() == true)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Now extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
final long now = System.currentTimeMillis() / 1000L; final long now = System.currentTimeMillis() / 1000L;
return TValue.fromInt((int) now); return TValue.fromInt((int) now);
} }

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated; import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated; import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext; import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature; import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Ord extends SimpleReturnFunction {
@Override @Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values, public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated { Map<String, TValue> named) throws EaterExceptionLocated {
try { try {
final int codePoint = values.get(0).toString().codePointAt(0); final int codePoint = values.get(0).toString().codePointAt(0);
return TValue.fromInt(codePoint); return TValue.fromInt(codePoint);

Some files were not shown because too many files have changed in this diff Show More