Add correct tokenizers for vm, pom, wsdl and xsl

This commit is contained in:
Andreas Dangel
2023-08-26 18:09:33 +02:00
parent c1109b48fa
commit 1aefe472c3
8 changed files with 136 additions and 0 deletions

View File

@@ -4,8 +4,11 @@
package net.sourceforge.pmd.lang.vm;
import net.sourceforge.pmd.cpd.Tokenizer;
import net.sourceforge.pmd.lang.LanguagePropertyBundle;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase;
import net.sourceforge.pmd.lang.vm.cpd.VmTokenizer;
/**
* Created by christoferdutz on 20.09.14.
@@ -28,4 +31,8 @@ public class VmLanguageModule extends SimpleLanguageModuleBase {
return (VmLanguageModule) LanguageRegistry.PMD.getLanguageById(ID);
}
@Override
public Tokenizer createCpdTokenizer(LanguagePropertyBundle bundle) {
return new VmTokenizer();
}
}

View File

@@ -0,0 +1,21 @@
/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.vm.cpd;
import java.io.IOException;
import net.sourceforge.pmd.cpd.impl.JavaCCTokenizer;
import net.sourceforge.pmd.lang.TokenManager;
import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken;
import net.sourceforge.pmd.lang.document.TextDocument;
import net.sourceforge.pmd.lang.vm.ast.VmTokenKinds;
public class VmTokenizer extends JavaCCTokenizer {
@Override
protected TokenManager<JavaccToken> makeLexerImpl(TextDocument doc) throws IOException {
return VmTokenKinds.newTokenManager(CharStream.create(doc));
}
}

View File

@@ -0,0 +1,21 @@
/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.vm.cpd;
import org.junit.jupiter.api.Test;
import net.sourceforge.pmd.cpd.test.CpdTextComparisonTest;
import net.sourceforge.pmd.lang.vm.VmLanguageModule;
class VmTokenizerTest extends CpdTextComparisonTest {
VmTokenizerTest() {
super(VmLanguageModule.getInstance(), ".vm");
}
@Test
void sampleTest() {
doTest("sample_vm");
}
}

View File

@@ -0,0 +1,54 @@
[Image] or [Truncated image[ Bcol Ecol
L1
[#if] 1 4
[(] 4 5
[ ] 5 6
[$XHTML] 6 12
[ ] 12 13
[)\n] 13 15
L2
[ #set(] 1 10
[ ] 10 11
[$br] 11 14
[ ] 14 15
[=] 15 16
[ ] 16 17
["<br />"] 17 25
[ ] 25 26
[)\n] 26 28
L3
[ ] 1 5
[#if] 5 8
[ ] 8 9
[(] 9 10
[$someValue] 10 20
[)\n] 20 22
L4
[ ] 1 9
[#if] 9 12
[ ] 12 13
[(] 13 14
[$otherValue] 14 25
[)\n] 25 27
L5
[ do stuff\n ] 1 9
L6
[#end\n] 9 14
L7
[ ] 1 5
[#end\n] 5 10
L8
[#else\n] 1 7
L9
[ #set(] 1 10
[ ] 10 11
[$br] 11 14
[ ] 14 15
[=] 15 16
[ ] 16 17
["<br>"] 17 23
[ ] 23 24
[)\n] 24 26
L10
[#end\n] 1 6
EOF

View File

@@ -0,0 +1,10 @@
#if( $XHTML )
#set( $br = "<br />" )
#if ($someValue)
#if ($otherValue)
do stuff
#end
#end
#else
#set( $br = "<br>" )
#end