mirror of
https://github.com/octoleo/plantuml.git
synced 2024-11-25 06:17:33 +00:00
refactor: prepare preprocessor error improvement (almost finished :-)
https://github.com/plantuml/plantuml/pull/1668
This commit is contained in:
parent
6329d9a8d5
commit
a48dd52d9f
@ -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
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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 {
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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("");
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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());
|
||||||
|
@ -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("");
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()) {
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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");
|
||||||
|
@ -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)
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
@ -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));
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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://")) {
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user