package org.python.pydev.parser.fastparser.grammar_fstrings_common;
import java.util.ArrayList;
import java.util.List;
import org.python.pydev.parser.jython.ParseException;
import org.python.pydev.parser.jython.Token;
public class AbstractFStringsGrammar {
protected void jjtreeOpenNodeScope(SimpleNode node) {
}
protected void jjtreeCloseNodeScope(SimpleNode node) {
}
/**
* List with the errors we handled during the parsing
*/
private final List<ParseException> parseErrors = new ArrayList<ParseException>();
/**
* @return a list with the parse errors. Note that the returned value is not a copy, but the actual
* internal list used to store the errors.
*/
public List<ParseException> getParseErrors() {
return parseErrors;
}
/**
* Adds some parse exception to the list of parse exceptions found.
*/
protected void addParseError(ParseException e) {
parseErrors.add(e);
}
protected void addParseError(Token t, String msg) {
addParseError(new ParseException(msg, t));
}
protected void addParseError(ParseException e, String msg) {
if (e.currentToken != null) {
parseErrors.add(new ParseException(msg, e.currentToken.beginLine, e.currentToken.beginColumn));
} else {
parseErrors.add(new ParseException(msg));
}
}
protected void errorBackSlashInvalidInFStrings(Token t) {
addParseError(new ParseException("Backslash (\\) not valid inside f-string expressions.", t));
}
protected void errorIfTextIsNotASR(Token t) {
if (!t.image.equals("a") && !t.image.equals("s") && !t.image.equals("r")) {
addParseError(new ParseException("Expecting '!a', '!s' or '!r'. Found: " + t.image, t));
}
}
protected void errorPyExprEmpty(SimpleNode node) {
addParseError(new ParseException("Empty expression not allowed in f-string", node.beginLine, node.beginColumn));
}
protected void errorTypeConversionEmpty(SimpleNode node) {
addParseError(new ParseException("Only '!a', '!s' or '!r' accepted.", node.beginLine, node.beginColumn));
}
}