You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@groovy.apache.org by Rahul Somasunderam <rs...@transcendinsights.com> on 2016/05/22 18:52:48 UTC
GroovyLexer and newlines in comments
Hi!
I've got this code
```
@Grab('org.fusesource.jansi:jansi:1.12')
import static org.fusesource.jansi.Ansi.Color.RED
import static org.fusesource.jansi.Ansi.ansi
import groovyjarjarantlr.Token
import org.codehaus.groovy.antlr.parser.GroovyLexer
import org.fusesource.jansi.AnsiConsole
AnsiConsole.systemInstall()
/**
* Some class
*/
class Foo {
/**
*
* @param a
* @param b
* @param c
* @return
*/
String doSomething(String a, int b, double c) {
''
}
}
def lexer = new GroovyLexer(new File('gpa.groovy').newInputStream())
lexer.setWhitespaceIncluded(true)
def lastLine = 0
while (true) {
def t = lexer.nextToken()
if (!t || t.type == Token.EOF_TYPE) {
break
}
if (lastLine != t.line) {
println ''
def lineNum = t.line.toString().padLeft(4)
print ansi().fg(RED).a(lineNum).a('| ').reset()
lastLine = t.line
}
print t.text
}
println ''```
When I run it, it parses itself, and prints itself out with line numbers.
There are 2 weird things I see.
1. The comments and javadoc get squished into one line. Is there a way to
get them unmodified?
2. The last statement doesn't retain the last token which is a constant of
an empty string when the file ends on the same line. This problem goes away
if i add a newline at the end of the file. Is there some way to convince the
lexer to not do that?
Thanks!
R,
rahul
--
View this message in context: http://groovy.329449.n5.nabble.com/GroovyLexer-and-newlines-in-comments-tp5732960.html
Sent from the Groovy Users mailing list archive at Nabble.com.