[Laszlo-dev] script compiler parser bug with trailing ", " in array
Donald Anderson
dda at ddanderson.com
Wed Jan 9 11:34:01 PST 2008
We want to fix just in SWF9?
On Jan 9, 2008, at 11:07 AM, P T Withington wrote:
> This was an error in es3 but is now allowed in es4, so you should
> file a bug for Don to fix.
>
> On Jan 9, 2008, at 10:40, "Henry Minsky" <henry.minsky at gmail.com>
> wrote:
>
>> I get a parser error thrown bwhen I make an array with a trailing
>> comma after the last element, like
>>
>> var forceload = [LzText,
>> // LzInputText.
>> LzView,
>> LzNode,
>> LzAnimator,
>> LzAnimatorGroup,
>> LzLayout,
>> LzScript,
>>
>> ];
>>
>> I thought this was legal in JS, or maybe that's Python I'm thinking
>> of?
>>
>> [echo] Compiling C:\users\hqm\openlaszlo\devildog/lps/includes/
>> lfc/LFC9.lzl
>> [java] No prec for ASTEmptyExpression in
>> [java] org.openlaszlo.sc.CompilerException
>> [java] at
>> org
>> .openlaszlo
>> .sc.ParseTreePrinter.maybeAddParens(ParseTreePrinter.java:624)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visitArrayLiteral
>> (ParseTreePrinter.java:569)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:279)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit( ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit( ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit( ParseTreePrinter.java:160)
>> [java] at
>> org
>> .openlaszlo
>> .sc.ParseTreePrinter.makeTranslationUnits(ParseTreePrinter.java:833)
>> [java] at
>> org
>> .openlaszlo
>> .sc.SWF9Generator.makeTranslationUnits(SWF9Generator.java :743)
>> [java] at org.openlaszlo.sc.Compiler.compile(Compiler.java:
>> 349)
>> [java] at org.openlaszlo.sc.lzsc.compile(lzsc.java:110)
>> [java] at org.openlaszlo.sc.lzsc.compile(lzsc.java:322)
>> [java] at org.openlaszlo.sc.Main.main(Main.java:10)
>> [java] No prec for ASTEmptyExpression in
>> [java] org.openlaszlo.sc.CompilerException
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.maybeAddParens
>> (ParseTreePrinter.java:624)
>> [java] at
>> org
>> .openlaszlo
>> .sc.ParseTreePrinter.visitArrayLiteral(ParseTreePrinter.java:569)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:279)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>> [java] at org.openlaszlo.sc.ParseTreePrinter.visit
>> (ParseTreePrinter.java:160)
>> [java] at
>> org.openlaszlo.sc.ParseTreePrinter.visit(ParseTreePrinter.java:160)
>>
>>
>> On Jan 9, 2008 10:35 AM, Henry Minsky < henry.minsky at gmail.com>
>> wrote:
>> I guess I can have a statement at the start of the LzApplication
>> main class, that just makes a list of all the
>> LFC classes that have LZX tag names, and that will force them to be
>> loaded.
>>
>>
>> On Jan 9, 2008 10:33 AM, Henry Minsky <henry.minsky at gmail.com> wrote:
>> Interesting... LzNode looks at the ConstructorMap *before* it
>> creates an LzText, so that would
>> explain why it isn't there yet. Given this behavior, anyone have
>> any suggestions as to how to build
>> the constructormap table in the distributed way we're doing it
>> currently?.
>>
>> For now, I'm just going to hardcode the whole table into the
>> Laszlo application startup class I'm building.
>>
>>
>>
>>
>> On Jan 9, 2008 10:29 AM, Donald Anderson < dda at ddanderson.com> wrote:
>> Henry,
>>
>> At the time you have looked at ConstructorMap, have you
>> already created a LzText object? If not, maybe it's doing
>> lazy creation of the classes - I know that Java does this -
>> static initializers and blocks don't occur until the class is
>> loaded, and a class may not be loaded until some code executes
>> that either creates an object of that type or references a static
>> method/var.
>>
>> On Jan 9, 2008, at 9:59 AM, Henry Minsky wrote:
>>
>>>
>>> In one of the LFC files I declare a global
>>>
>>> var ConstructorMap = {};
>>>
>>> which gets turned into it's own declaration file by the script
>>> compiler
>>>
>>> ConstructorMap.as:
>>>
>>> package {
>>> public var ConstructorMap = {};
>>> }
>>>
>>>
>>> In each LFC file I have a statement to add a tag to this global
>>>
>>>
>>> dynamic class LzView extends LzNode {
>>> static var tagname = 'view';
>>> ConstructorMap[tagname] = LzView;
>>>
>>>
>>> dynamic class LzAnimator extends LzAnimatorGroup {
>>> static var tagname = 'animator';
>>> ConstructorMap[tagname] = LzAnimator;
>>>
>>>
>>> dynamic class LzText extends LzView {
>>> static var tagname = 'text';
>>> ConstructorMap[tagname] = LzText;
>>>
>>> But when the system is running, there is no entry in
>>> ConstructorMap['text'], in fact
>>> the only entries in the ConstructorMap are
>>>
>>> view: [class LzView], node: [class LzNode], canvas: [class
>>> LzCanvas],
>>>
>>> missing are animator, layout, animatorgroup, text
>>>
>>> So I'm wondering is there some arbitrary ordering issue where some
>>> of the
>>> classes are executing the "ConstructorMap[foo] = bar" before
>>> ConstructorMap
>>> actually gets initialized, and silently failing, or what? I can't
>>> figure
>>> out if this is a compiler bug in Flex or if I'm doing something
>>> wrong. According to
>>> the AS3 docs, statements at the top level of a class declaration
>>> get executed once
>>> when the class is defined. But I am wondering how that interacts
>>> with global var initializations,
>>> maybe the order is arbitrary?
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Henry Minsky
>>> Software Architect
>>> hminsky at laszlosystems.com
>>>
>>
>>
>> --
>>
>> Don Anderson
>> Java/C/C++, Berkeley DB, systems consultant
>>
>> voice: 617-547-7881
>> email: dda at ddanderson.com
>> www: http://www.ddanderson.com
>>
>>
>>
>>
>>
>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> hminsky at laszlosystems.com
>>
>>
>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> hminsky at laszlosystems.com
>>
>>
>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> hminsky at laszlosystems.com
>>
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-547-7881
email: dda at ddanderson.com
www: http://www.ddanderson.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.openlaszlo.org/pipermail/laszlo-dev/attachments/20080109/6a73c8ad/attachment-0001.html
More information about the Laszlo-dev
mailing list