ScannerDelegateFactory.java
package org.sterling.source.scanner;
import static java.util.regex.Pattern.quote;
public class ScannerDelegateFactory {
private static ScannerDelegate skipWhitespace(String... values) {
return skipWhitespace(new StaticTokenScanner(values));
}
private static ScannerDelegate skipWhitespace(ScannerDelegate delegate) {
return new WhitespaceSkippingScanner(delegate);
}
public ScannerDelegate getAccessorScanner() {
return skipWhitespace(quote("."));
}
public ScannerDelegate getAddScanner() {
return skipWhitespace(quote("+"));
}
public ScannerDelegate getApplyScanner() {
return skipWhitespace(quote("$"));
}
public ScannerDelegate getArrowScanner() {
return skipWhitespace(quote("->"));
}
public ScannerDelegate getAssignScanner() {
return skipWhitespace(quote("="));
}
public ScannerDelegate getBitwiseAndScanner() {
return skipWhitespace(quote("&"));
}
public ScannerDelegate getBitwiseNotScanner() {
return skipWhitespace(quote("~"));
}
public ScannerDelegate getBitwiseOrScanner() {
return skipWhitespace(quote("|"));
}
public ScannerDelegate getBitwiseXorScanner() {
return skipWhitespace(quote("^"));
}
public ScannerDelegate getBlockCloseScanner() {
return skipWhitespace(quote("}"));
}
public ScannerDelegate getBlockOpenScanner() {
return skipWhitespace(quote("{"));
}
public ScannerDelegate getBooleanScanner() {
return skipWhitespace(new BooleanScanner());
}
public ScannerDelegate getCharacterScanner() {
return skipWhitespace(new CharacterScanner());
}
public ScannerDelegate getCoalesceScanner() {
return skipWhitespace(quote("?"));
}
public ScannerDelegate getDivideScanner() {
return skipWhitespace(quote("/"));
}
public ScannerDelegate getDoubleScanner() {
return skipWhitespace(new DoubleScanner());
}
public ScannerDelegate getEndOfInputScanner() {
return skipWhitespace(new EndOfInputScanner());
}
public ScannerDelegate getEqualsScanner() {
return skipWhitespace(quote("="), "is\\b");
}
public ScannerDelegate getGreaterThanEqualsScanner() {
return skipWhitespace(quote(">="));
}
public ScannerDelegate getGreaterThanScanner() {
return skipWhitespace(quote(">"));
}
public ScannerDelegate getGroupCloseScanner() {
return skipWhitespace(quote(")"));
}
public ScannerDelegate getGroupOpenScanner() {
return skipWhitespace(quote("("));
}
public ScannerDelegate getIdentifierScanner() {
return skipWhitespace(new IdentifierScanner());
}
public ScannerDelegate getIndexerCloseScanner() {
return skipWhitespace(quote("]"));
}
public ScannerDelegate getIndexerOpenScanner() {
return new StaticTokenScanner(quote("["));
}
public ScannerDelegate getIndexerOperatorScanner() {
return skipWhitespace(quote("[]"));
}
public ScannerDelegate getIntegerScanner() {
return skipWhitespace(new IntegerScanner());
}
public ScannerDelegate getKeywordAsScanner() {
return skipWhitespace("as\\b");
}
public ScannerDelegate getKeywordFromScanner() {
return skipWhitespace("from\\b");
}
public ScannerDelegate getKeywordIfScanner() {
return skipWhitespace("if\\b");
}
public ScannerDelegate getKeywordImportScanner() {
return skipWhitespace("import\\b");
}
public ScannerDelegate getKeywordJavaScanner() {
return skipWhitespace("java\\b");
}
public ScannerDelegate getKeywordModuleScanner() {
return skipWhitespace("module\\b");
}
public ScannerDelegate getKeywordNegativeScanner() {
return skipWhitespace("negative\\b");
}
public ScannerDelegate getKeywordObjectScanner() {
return skipWhitespace("object\\b");
}
public ScannerDelegate getKeywordPositiveScanner() {
return skipWhitespace("positive\\b");
}
public ScannerDelegate getLessThanEqualsScanner() {
return skipWhitespace(quote("<="));
}
public ScannerDelegate getLessThanScanner() {
return skipWhitespace(quote("<"));
}
public ScannerDelegate getLogicalAndScanner() {
return skipWhitespace("and\\b");
}
public ScannerDelegate getLogicalNotScanner() {
return skipWhitespace("not\\b");
}
public ScannerDelegate getLogicalOrScanner() {
return skipWhitespace("or\\b");
}
public ScannerDelegate getModuloScanner() {
return skipWhitespace(quote("%"), "mod\\b");
}
public ScannerDelegate getMultiplyScanner() {
return skipWhitespace(quote("*"));
}
public ScannerDelegate getNegativeScanner() {
return skipWhitespace(quote("-"));
}
public ScannerDelegate getNotEqualsScanner() {
return skipWhitespace(quote("<>"), "is\\s+not\\b");
}
public ScannerDelegate getNullScanner() {
return skipWhitespace("Nothing\\b");
}
public ScannerDelegate getPositiveScanner() {
return skipWhitespace(quote("+"));
}
public ScannerDelegate getSeparatorScanner() {
return skipWhitespace(quote(","));
}
public ScannerDelegate getShiftLeftScanner() {
return skipWhitespace(quote("<<"));
}
public ScannerDelegate getShiftRightScanner() {
return skipWhitespace(quote(">>>"));
}
public ScannerDelegate getSignedShiftRightScanner() {
return skipWhitespace(quote(">>"));
}
public ScannerDelegate getStringScanner() {
return skipWhitespace(new StringScanner());
}
public ScannerDelegate getSubtractScanner() {
return skipWhitespace(quote("-"));
}
public ScannerDelegate getTerminatorScanner() {
return new TerminatorScanner();
}
public ScannerDelegate getTernaryFalseScanner() {
return skipWhitespace("else\\b");
}
public ScannerDelegate getTernaryTrueScanner() {
return skipWhitespace("then\\b");
}
public ScannerDelegate getWildcardScanner() {
return skipWhitespace(quote("*"));
}
}