New Eclipse Plugin Release 1/7/2014

“malloys” wrote:
The plugin unofficially allows comment lines in the manifest that begin with “#” or “!” (AFIK, the SDK docs don’t mention any support for comments in the manifest file, so this may go away or change in the future).
Malloys - seems to me both problems (plugin crashing and comments “lost in translation”) will be solved if you drop the invented comments support. Roku likely does not look for any but instead always parses lines on first “=”. Meaning that given this:


' someKey1=something something
   #someKey2=something=else
;someKey3  =42
! someKey4=
' someKey5=

player would assume the keys are ’ someKey1, #someKey2, ;someKey3 , ! someKey4, ’ someKey5 - which won’t hurt it at the least since it does not look for such keys in the dictionary where manifest is mapped to. Parser may or may not trim spaces around a key, i won’t bet either way.

It’s ironic twist but this demonstrates doing less can accomplish more. Un-inventing comments will prevent crashy/strange behavior.

PS. comments starting with “!”… where? Only place i can find is Fortran :shock:
Traditionally in .INI files (which i think Roku registries are based on) comments start with “;”

“SoN9ne” wrote:

This was my issue. I am using the comments as

' My Comment

by removing the comments I was able to generate the translation.xml files. Thanks a lot for that :slightly_smiling_face:

Sure thing.
Sorry the plugin wasn’t catching this potential issue and displaying a clear error message - I’ll be filing a bug on that today so that the fix can prevent others from being tripped up by this.

“SoN9ne” wrote:

“malloys” wrote:

FWIW… I’ve just discovered that if you manually enter the splash_color in an incorrect format once, it will subsequently fail to save even if you correct the value in the manifest editor.
You may be running into that bug (which I’m about to file). If so, here’s a temporary workaround:

Thanks, I actually figure out the work-a-round later in the evening to get that working. I originally set the value omitting the # and that caused the issue.

Good to know.
FYI, I filed the bug on that issue yesterday, but you now confirming the issue will allow me to note that in the bug entry and increase the likelyhood of it being approved to be worked on.

“SoN9ne” wrote:

Thanks for this great plugin. :grinning_face_with_smiling_eyes:

Thanks, glad you like it.
BTW, please continue to post here about bugs you’d like fixed and enhancement requests you’d like to see implemented.
From my own use and observations, I can file these kinds of things all day long… but they’re more likely to be approved by my Roku overlords to be worked on if devs such as yourself explicitly request it.

“SoN9ne” wrote:

One feature request, if possible, would be to allow the plugin to use Eclipse themes. Maybe it’s just be but I use a dark theme for Eclipse and it doesn’t seem to apply any styling to the BrightScript code. Perhaps I am missing something here?

I’d have to do some research into this, since support for eclipse themes has never come up before, but it should be possible.

What themes-related plugins are you using (beside the theme itself) if any?..
There are several out there that extend the new (as of the eclipse 4.0 line) CSS-based standard approach in unusual ways.
Pre 4.0, the mechanism for themes was different, but those mechanisms are still in-use despite the new CSS way of doing things, so you and others may be using one of those.

Aside from the technical details…
How important is this for you?
Open question to other BrightScript plugin users: is this something you’d like to see as well?

“SoN9ne” wrote:

Also, when you delete a file then select update existing translations it doesn’t remove deleted files from the translations.xml

Thanks for the heads up.
It’s been a while since I was in that code, but I thought I had that case covered.
I’ll check into it and get back to you.

Cheers

“EnTerr” wrote:

“malloys” wrote:
The plugin unofficially allows comment lines in the manifest that begin with “#” or “!” (AFIK, the SDK docs don’t mention any support for comments in the manifest file, so this may go away or change in the future).
Malloys - seems to me both problems (plugin crashing and comments “lost in translation”) will be solved if you drop the invented comments support.

Not correct.
The bug and the comments support are 2 entirely different issues, that just happened to coincidentally overlap in this specific example manifest.
The bug actually has to do with how attribute names are matched to validation routines - there’s an implicit limitation in the current code that attribute names can only be valid identifiers (and specifically Java identifiers). The fix is easy, but it’s additional code, and has nothing directly to do with comments.

“EnTerr” wrote:

It’s ironic twist but this demonstrates doing less can accomplish more. Un-inventing comments will prevent crashy/strange behavior.

Meta-ironically… no :slightly_smiling_face:

I have to write more code, not remove code, to fix the bug… and separately, I also have to write more code to support the persistence of non-attrib/val lines, line ordering preservation, etc…
“Un-inventing comments” would also require writing more code (since it’s not mine, I’d have to re-invent the base class, sans comment support) and in the end wouldn’t solve any of the issues mentioned.

All of the current behavior is due to currently basing the implementation on 2 standard Java library classes that contain certain restrictions and limitations (by design in Java).
Those standard library classes allowed me to write a lot less code and get the manifest functionality in the plugin faster, but at the cost of a few edge-case bugs (since BrightScript manifest files are more permissive in their format).
But… there’s been enough evidence now that this was a penny-wise, pound foolish approach. I’m probably going to file an enhancement request or 2 today to bring the manifest code in-line with firmware parsing (i.e. line persistence/ignoring during parse for non-attribute lines, line ordering preservation for all lines, etc.).

“EnTerr” wrote:

PS. comments starting with “!”… where? Only place i can find is Fortran :shock:

Java properties files ( hence, of one of the standard Java lib classes mentioned above ).

Cheers

Any Release notes on Build 1.0.0.201406201331
Really like the new ability to open and edit files containing errors (at line-number) right from the debug console

Any clue on this one? I’m using indigo with Java 8 version 5 (build 1.8.0_05-b13)

This was the line that caused it:


            propstring = "prop".trim() + (stri(i)).trim()

Which, on further dissection


"prop".trim()

Seemed to be the issue.

It compiles and runs like a charm though.


java.lang.NullPointerException
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptDotExpression.toString(BrightScriptDotExpression.java:284)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptDotExpression.getStringRepresentation(BrightScriptDotExpression.java:268)
	at com.roku.brightscript.ide.eclipse.core.model.ast.BrightScriptASTTranslator.processFnCallFnRefOrVarRef(BrightScriptASTTranslator.java:2267)
	at com.roku.brightscript.ide.eclipse.core.model.ast.BrightScriptASTTranslator.exitFnexprtail(BrightScriptASTTranslator.java:2178)
	at com.roku.brightscript.parser.BrightScriptAnalyzer.exit(BrightScriptAnalyzer.java:1329)
	at net.percederberg.grammatica.parser.Parser.exitNode(Parser.java:540)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:300)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:267)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseElement(RecursiveDescentParser.java:333)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseAlternative(RecursiveDescentParser.java:298)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parsePattern(RecursiveDescentParser.java:218)
	at net.percederberg.grammatica.parser.RecursiveDescentParser.parseStart(RecursiveDescentParser.java:177)
	at net.percederberg.grammatica.parser.Parser.parse(Parser.java:389)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceParser.parse(BrightScriptSourceParser.java:79)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.parseSourceModule(BrightScriptSourceElementParser.java:75)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.buildStructure(AbstractSourceModule.java:507)
	at org.eclipse.dltk.internal.core.Openable.generateInfos(Openable.java:188)
	at org.eclipse.dltk.internal.core.ModelElement.openWhenClosed(ModelElement.java:184)
	at org.eclipse.dltk.internal.core.ModelElement.getElementInfo(ModelElement.java:171)
	at org.eclipse.dltk.internal.core.ModelElement.getChildren(ModelElement.java:356)
	at org.eclipse.dltk.internal.core.ModelElement.getChildren(ModelElement.java:351)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:727)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at com.roku.brightscript.ide.eclipse.core.model.BrightScriptModelUtils.findModelElementByScopeAndTypeAndName(BrightScriptModelUtils.java:694)
	at com.roku.brightscript.ide.eclipse.core.model.BrightScriptModelUtils.getUserMethodByName(BrightScriptModelUtils.java:522)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptProgramMethodDeclaration.getBsMethod(BrightScriptProgramMethodDeclaration.java:110)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptProgramMethodCallExpression.getBsMethod(BrightScriptProgramMethodCallExpression.java:52)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.processMethods(BrightScriptSourceElementParser.java:276)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.parseSourceModule(BrightScriptSourceElementParser.java:112)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.buildStructure(AbstractSourceModule.java:507)
	at org.eclipse.dltk.internal.core.Openable.generateInfos(Openable.java:188)
	at org.eclipse.dltk.internal.core.ModelElement.openWhenClosed(ModelElement.java:184)
	at org.eclipse.dltk.internal.core.ModelElement.getElementInfo(ModelElement.java:171)
	at org.eclipse.dltk.internal.core.ModelElement.getChildren(ModelElement.java:356)
	at org.eclipse.dltk.internal.core.ModelElement.getChildren(ModelElement.java:351)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:727)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at com.roku.brightscript.ide.eclipse.core.model.BrightScriptModelUtils.findModelElementByScopeAndTypeAndName(BrightScriptModelUtils.java:694)
	at com.roku.brightscript.ide.eclipse.core.model.BrightScriptModelUtils.getUserMethodByName(BrightScriptModelUtils.java:522)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptProgramMethodDeclaration.getBsMethod(BrightScriptProgramMethodDeclaration.java:110)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptProgramMethodReference.getBsMethod(BrightScriptProgramMethodReference.java:51)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.processMethods(BrightScriptSourceElementParser.java:315)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.parseSourceModule(BrightScriptSourceElementParser.java:112)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.buildStructure(AbstractSourceModule.java:507)
	at org.eclipse.dltk.internal.core.Openable.generateInfos(Openable.java:188)
	at org.eclipse.dltk.internal.core.ModelElement.openWhenClosed(ModelElement.java:184)
	at org.eclipse.dltk.internal.core.ModelElement.getElementInfo(ModelElement.java:171)
	at org.eclipse.dltk.internal.core.ModelElement.getChildren(ModelElement.java:356)
	at org.eclipse.dltk.internal.core.ModelElement.getChildren(ModelElement.java:351)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:727)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at org.eclipse.dltk.internal.core.ModelElement.accept(ModelElement.java:729)
	at com.roku.brightscript.ide.eclipse.core.model.BrightScriptModelUtils.findModelElementByScopeAndTypeAndName(BrightScriptModelUtils.java:694)
	at com.roku.brightscript.ide.eclipse.core.model.BrightScriptModelUtils.getUserMethodByName(BrightScriptModelUtils.java:522)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptProgramMethodDeclaration.getBsMethod(BrightScriptProgramMethodDeclaration.java:110)
	at com.roku.brightscript.ide.eclipse.core.model.ast.typedexpressions.BrightScriptProgramMethodCallExpression.getBsMethod(BrightScriptProgramMethodCallExpression.java:52)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.processMethods(BrightScriptSourceElementParser.java:276)
	at com.roku.brightscript.ide.eclipse.core.model.parsers.BrightScriptSourceElementParser.parseSourceModule(BrightScriptSourceElementParser.java:112)
	at org.eclipse.dltk.internal.core.AbstractSourceModule.buildStructure(AbstractSourceModule.java:507)
	at org.eclipse.dltk.internal.core.Openable.generateInfos(Openable.java:188)
	at org.eclipse.dltk.internal.core.ModelElement.openWhenClosed(ModelElement.java:184)
	at org.eclipse.dltk.internal.core.BecomeWorkingCopyOperation.executeOperation(BecomeWorkingCopyOperation.java:45)
	at org.eclipse.dltk.internal.core.ModelOperation.run(ModelOperation.java:698)
	at org.eclipse.dltk.internal.core.ModelOperation.runOperation(ModelOperation.java:764)
	at org.eclipse.dltk.internal.core.SourceModule.becomeWorkingCopy(SourceModule.java:68)
	at org.eclipse.dltk.internal.ui.editor.SourceModuleDocumentProvider.createFileInfo(SourceModuleDocumentProvider.java:1254)
	at org.eclipse.ui.editors.text.TextFileDocumentProvider.connect(TextFileDocumentProvider.java:478)
	at org.eclipse.dltk.internal.ui.editor.SourceModuleDocumentProvider.connect(SourceModuleDocumentProvider.java:1487)
	at org.eclipse.ui.texteditor.AbstractTextEditor.doSetInput(AbstractTextEditor.java:4213)
	at org.eclipse.ui.texteditor.StatusTextEditor.doSetInput(StatusTextEditor.java:237)
	at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.doSetInput(AbstractDecoratedTextEditor.java:1451)
	at org.eclipse.dltk.internal.ui.editor.ScriptEditor.internalDoSetInput(ScriptEditor.java:799)
	at org.eclipse.dltk.internal.ui.editor.ScriptEditor.doSetInput(ScriptEditor.java:1276)
	at com.roku.brightscript.ide.eclipse.core.editors.brs.BrightScriptEditor.doSetInput(BrightScriptEditor.java:53)
	at org.eclipse.ui.texteditor.AbstractTextEditor$19.run(AbstractTextEditor.java:3200)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:759)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:756)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2649)
	at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3218)
	at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3245)
	at org.eclipse.ui.internal.EditorManager.createSite(EditorManager.java:828)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:647)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
	at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313)
	at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
	at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1245)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1198)
	at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1597)
	at org.eclipse.ui.internal.PartStack.add(PartStack.java:493)
	at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
	at org.eclipse.ui.internal.PartStack.add(PartStack.java:479)
	at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
	at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
	at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:225)
	at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:213)
	at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:808)
	at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:707)
	at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:666)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2942)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2850)
	at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2842)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2793)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2789)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2773)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2764)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:651)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:610)
	at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:355)
	at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:164)
	at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:249)
	at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:228)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:275)
	at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:251)
	at org.eclipse.jdt.internal.ui.navigator.OpenAndExpand.run(OpenAndExpand.java:50)
	at org.eclipse.ui.actions.RetargetAction.run(RetargetAction.java:221)
	at org.eclipse.ui.navigator.CommonNavigatorManager$3.open(CommonNavigatorManager.java:185)
	at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
	at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:866)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:864)
	at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1152)
	at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:462)
	at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1256)
	at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)
	at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:269)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

“dcrandall” wrote:
Any clue on this one? I’m using indigo with Java 8 version 5 (build 1.8.0_05-b13)

This was the line that caused it:


            propstring = "prop".trim() + (stri(i)).trim()

Which, on further dissection


"prop".trim()

Seemed to be the issue.

It compiles and runs like a charm though.

That’s an issue with the parser (literal expression as the head of a “dot expression”) that was discovered and fixed several weeks ago.
It’ll be in the next published version of the plugin (whenever RokuRobB can find the time to publish it).

cheers

There is an issue on BrighScript deployment when custom directories or files are added to the package.. The plugin does not save the last configuration for the project.
ie: add “components” directory into project root", every time I deploy the app I have to explicitly select the “components” directory.. and it is painful :x

Other issue related to the parser, when a function is returned and executes itself like this

foo(bar)()
foo (fn) return fn

Eclipse gives unexpected token although the code runs when deployed.

Bests,
Roberto J.

“roberto14” wrote:
There is an issue on BrighScript deployment when custom directories or files are added to the package.. The plugin does not save the last configuration for the project.
ie: add “components” directory into project root", every time I deploy the app I have to explicitly select the “components” directory.. and it is painful :x

I just found out that selecting each file individually works as I wanted.. still, selecting a directory is not working and should be fixed.

The issue where it does not remember the last deployment config is very frustrating. I have to go through the export process each time manually and select the “components” directory.

Any hope to get this fixed?

The Eclipse plugin do not recognize the function VAL() with two parameters, but it does support according the documentation, here is an example I use with success, but it shows as an error:

m.charFood = (fcheck and Val("0x80", 16)) = Val("0x80",16)