@Override public Set<Detector> getDetectors() { return ImmutableSet.of( new EndWithDetector(0.95, '}', ';', '{'), new KeywordsDetector(0.3, PHPKeyword.getKeywordValues()), new ContainsDetector(0.95, "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|="), new ContainsDetector(0.95, "!=", "!==")); }
@Override public Set<Detector> getDetectors() { return ImmutableSet.of( new EndWithDetector(0.95, '}', ';', '{'), new KeywordsDetector(0.3, PHPKeyword.getKeywordValues()), new ContainsDetector(0.95, "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|="), new ContainsDetector(0.95, "!=", "!==")); }
@Test public void getKeywordValues() { Assertions.assertThat(PHPKeyword.getKeywordValues().length).isEqualTo(67); }
@Override public Set<Detector> getDetectors() { return ImmutableSet.of( new EndWithDetector(0.95, '}', ';', '{'), new KeywordsDetector(0.3, PHPKeyword.getKeywordValues()), new ContainsDetector(0.95, "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|="), new ContainsDetector(0.95, "!=", "!==")); }
private static void keywords(LexerlessGrammarBuilder b) { Object[] rest = new Object[PHPKeyword.values().length - 2]; for (int i = 0; i < PHPKeyword.values().length; i++) { PHPKeyword tokenType = PHPKeyword.values()[i]; // PHP keywords are case insensitive b.rule(tokenType).is(SPACING, b.regexp("(?i)" + tokenType.getValue()), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART))).skip(); if (i > 1) { rest[i - 2] = b.regexp("(?i)" + tokenType.getValue()); } } b.rule(KEYWORDS).is(SPACING, b.firstOf( PHPKeyword.getKeywordValues()[0], PHPKeyword.getKeywordValues()[1], rest), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART)) ); }
private static void keywords(LexerlessGrammarBuilder b) { Object[] rest = new Object[PHPKeyword.values().length - 2]; for (int i = 0; i < PHPKeyword.values().length; i++) { PHPKeyword tokenType = PHPKeyword.values()[i]; // PHP keywords are case insensitive b.rule(tokenType).is(SPACING, b.regexp("(?i)" + tokenType.getValue()), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART))).skip(); if (i > 1) { rest[i - 2] = b.regexp("(?i)" + tokenType.getValue()); } } b.rule(KEYWORDS).is(SPACING, b.firstOf( PHPKeyword.getKeywordValues()[0], PHPKeyword.getKeywordValues()[1], rest), b.nextNot(b.regexp(LexicalConstant.IDENTIFIER_PART)) ); }