JSGLR Unexpected reject annotation
I added a reject rule which works in the C-based SGLR, but JSGLR gives an ‘Unexpected reject annotation’
ambiguous fragment:
placeholder target {} form { ....... }
parse result without reject rule:
amb( [ Placeholder("target", []){At("../ajaxaction.app", 8, 3)} , TemplateCallBody( "form" , ....... ){At("../ajaxaction.app", 9, 3)} ] , [ PlaceholderWithAjaxCall( ObjectCreation(SimpleSort("target"), []){At("../ajaxaction.app", 8, 15)} , TemplateCallBody( "form" , ....... ){At("../ajaxaction.app", 9, 3)} ){At("../ajaxaction.app", 8, 3)} ] ){At("../ajaxaction.app", 6, 3)}
relevant SDF fragments:
WebDSL-Action.sdf: Sort "{" ObjectPropertyAssignment* "}" -> ObjectCreation {cons("ObjectCreation")} Sort "{" { ObjectPropertyAssignment "," }* "}" -> ObjectCreation {cons("ObjectCreation"), prefer} ObjectCreation -> Exp WebDSL-Ajax.sdf: "placeholder" Id "{" TemplateElement* "}" -> TemplateElement{cons("Placeholder"), prefer} "placeholder" Exp "{" TemplateElement* "}"-> TemplateElement{cons("Placeholder")} "placeholder" Id TemplateCall -> TemplateElement{cons("PlaceholderWithAjaxCall"), prefer} "placeholder" Exp TemplateCall -> TemplateElement{cons("PlaceholderWithAjaxCall")} %% reject ambiguous placeholder target{} next{} where target{} is parsed as object creation, %% which is never the case since the expression must produce a String "placeholder" ObjectCreation TemplateCall -> TemplateElement {reject}
output from JSGLR when trying to run the test application:
[ Main | info ] stage 1: parsing ajaxaction.app[ Main | error ] ../ajaxaction.app: Unexpected reject annotation in appl(prod([lit(“placeholder”),cf(opt(layout)),cf(sort(“ObjectCreation”)),cf(opt(layout)),cf(sort(“TemplateCall”))],cf(sort(“TemplateElement”)),attrs([reject])),[appl(prod([char-class([112]),char-class([108]),char-class([97]),char-class([99]),char-class([101]),char-class([104]),char-class([111]),char-class([108]),char-class([100]),char-class([101]),char-class([114])],lit(“placeholder”),no-attrs),[112,108,97,99,101,104,111,108,100,101,114]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),amb([appl(prod([cf(sort(“Sort”)),cf(opt(layout)),lit(“{”),cf(opt(layout)),cf(iter-star(sort(“ObjectPropertyAssignment”))),cf(opt(layout)),lit(“}”)],cf(sort(“ObjectCreation”)),attrs([term(cons(“ObjectCreation”))])),[appl(prod([cf(sort(“SimpleSort”))],cf(sort(“Sort”)),no-attrs),[appl(prod([cf(sort(“Id”))],cf(sort(“SimpleSort”)),attrs([term(cons(“SimpleSort”))])),[appl(prod([lex(sort(“Id”))],cf(sort(“Id”)),no-attrs),[appl(prod([char-class([range(65,90),range(97,122)]),lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(sort(“Id”)),no-attrs),[116,appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[97]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[114])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[103])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[101])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[116])])])])])])]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),appl(prod([char-class([123])],lit(“{”),no-attrs),[123]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([],cf(iter-star(sort(“ObjectPropertyAssignment”))),no-attrs),[]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([125])],lit(“}”),no-attrs),[125])]),appl(prod([cf(sort(“Sort”)),cf(opt(layout)),lit(“{”),cf(opt(layout)),cf(iter-star-sep(sort(“ObjectPropertyAssignment”),lit(“,”))),cf(opt(layout)),lit(“}”)],cf(sort(“ObjectCreation”)),attrs([term(cons(“ObjectCreation”)),prefer])),[appl(prod([cf(sort(“SimpleSort”))],cf(sort(“Sort”)),no-attrs),[appl(prod([cf(sort(“Id”))],cf(sort(“SimpleSort”)),attrs([term(cons(“SimpleSort”))])),[appl(prod([lex(sort(“Id”))],cf(sort(“Id”)),no-attrs),[appl(prod([char-class([range(65,90),range(97,122)]),lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(sort(“Id”)),no-attrs),[116,appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[97]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[114])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[103])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[101])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[116])])])])])])]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),appl(prod([char-class([123])],lit(“{”),no-attrs),[123]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([],cf(iter-star-sep(sort(“ObjectPropertyAssignment”),lit(“,”))),no-attrs),[]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([125])],lit(“}”),no-attrs),[125])])]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([cf(layout),cf(layout)],cf(layout),attrs([assoc(left)])),[appl(prod([cf(layout),cf(layout)],cf(layout),attrs([assoc(left)])),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[10])]),appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])])]),appl(prod([cf(sort(“TemplateCallId”)),cf(opt(layout)),cf(sort(“TemplateBody”))],cf(sort(“TemplateCall”)),attrs([term(cons(“TemplateCallBody”))])),[appl(prod([lex(sort(“TemplateCallId”))],cf(sort(“TemplateCallId”)),no-attrs),[appl(prod([lex(sort(“Id”))],lex(sort(“TemplateCallId”)),no-attrs),[appl(prod([char-class([range(65,90),range(97,122)]),lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(sort(“Id”)),no-attrs),[102,appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[111]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[114])]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[109])])])])])]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),appl(prod([lit(“{”),cf(opt(layout)),cf(iter-star(sort(“TemplateElement”))),cf(opt(layout)),lit(“}”)],cf(sort(“TemplateBody”)),attrs([term(cons(“TemplateBody”))])),[appl(prod([char-class([123])],lit(“{”),no-attrs),[123]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),appl(prod([cf(iter(sort(“TemplateElement”)))],cf(iter-star(sort(“TemplateElement”))),no-attrs),[appl(prod([cf(sort(“TemplateElement”))],cf(iter(sort(“TemplateElement”))),no-attrs),[appl(prod([lit(“action”),cf(opt(layout)),lit(“(”),cf(opt(layout)),cf(sort(“Exp”)),cf(opt(layout)),lit(“,”),cf(opt(layout)),cf(sort(“ActionCallOrInline”)),cf(opt(layout)),lit(“)”),cf(opt(layout)),lit(“[“),cf(opt(layout)),cf(iter-star-sep(sort(“PropertyAssignment”),lit(”,“))),cf(opt(layout)),lit(”]”)],cf(sort(“TemplateElement”)),attrs([term(cons(“Submit”)),prefer])),[appl(prod([char-class([97]),char-class([99]),char-class([116]),char-class([105]),char-class([111]),char-class([110])],lit(“action”),no-attrs),[97,99,116,105,111,110]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([40])],lit(“(”),no-attrs),[40]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([cf(sort(“ConstValue”))],cf(sort(“Exp”)),no-attrs),[appl(prod([cf(sort(“String”))],cf(sort(“ConstValue”)),attrs([term(cons(“String”))])),[appl(prod([lex(sort(“String”))],cf(sort(“String”)),no-attrs),[appl(prod([lit(“"”),lex(iter-star(sort(“StringChar”))),lit(“"”)],lex(sort(“String”)),no-attrs),[appl(prod([char-class([34])],lit(“"”),no-attrs),[34]),appl(prod([lex(iter(sort(“StringChar”)))],lex(iter-star(sort(“StringChar”))),no-attrs),[appl(prod([lex(iter(sort(“StringChar”))),lex(iter(sort(“StringChar”)))],lex(iter(sort(“StringChar”))),attrs([assoc(left)])),[appl(prod([lex(sort(“StringChar”))],lex(iter(sort(“StringChar”))),no-attrs),[appl(prod([char-class([range(0,9),range(11,33),range(35,255)])],lex(sort(“StringChar”)),no-attrs),[100])]),appl(prod([lex(sort(“StringChar”))],lex(iter(sort(“StringChar”))),no-attrs),[appl(prod([char-class([range(0,9),range(11,33),range(35,255)])],lex(sort(“StringChar”)),no-attrs),[111])])])]),appl(prod([char-class([34])],lit(“"”),no-attrs),[34])])])])]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([44])],lit(“,”),no-attrs),[44]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([cf(sort(“ActionCall”))],cf(sort(“ActionCallOrInline”)),no-attrs),[appl(prod([cf(sort(“Id”)),cf(opt(layout)),lit(“(”),cf(opt(layout)),cf(iter-star-sep(sort(“Exp”),lit(“,”))),cf(opt(layout)),lit(“)”)],cf(sort(“ActionCall”)),attrs([term(cons(“ActionCall”))])),[appl(prod([lex(sort(“Id”))],cf(sort(“Id”)),no-attrs),[appl(prod([char-class([range(65,90),range(97,122)]),lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(sort(“Id”)),no-attrs),[100,appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter-star(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[appl(prod([lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)])))],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),attrs([assoc(left)])),[appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[111]),appl(prod([char-class([range(48,57),range(65,90),95,range(97,122)])],lex(iter(char-class([range(48,57),range(65,90),95,range(97,122)]))),no-attrs),[50])])])])]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([40])],lit(“(”),no-attrs),[40]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([],cf(iter-star-sep(sort(“Exp”),lit(“,”))),no-attrs),[]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([41])],lit(“)”),no-attrs),[41])])]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([41])],lit(“)”),no-attrs),[41]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([91])],lit(“[”),no-attrs),[91]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([cf(iter-sep(sort(“PropertyAssignment”),lit(“,”)))],cf(iter-star-sep(sort(“PropertyAssignment”),lit(“,”))),no-attrs),[appl(prod([cf(sort(“PropertyAssignment”))],cf(iter-sep(sort(“PropertyAssignment”),lit(“,”))),no-attrs),[appl(prod([lit(“ajax”)],cf(sort(“PropertyAssignment”)),attrs([term(cons(“TemplateCallPropertyAjax”)),prefer])),[appl(prod([char-class([97]),char-class([106]),char-class([97]),char-class([120])],lit(“ajax”),no-attrs),[97,106,97,120])])])]),appl(prod([],cf(opt(layout)),no-attrs),[]),appl(prod([char-class([93])],lit(“]”),no-attrs),[93])])])]),appl(prod([cf(layout)],cf(opt(layout)),no-attrs),[appl(prod([lex(layout)],cf(layout),no-attrs),[appl(prod([char-class([range(9,10),13,32])],lex(layout),no-attrs),[32])])]),appl(prod([char-class([125])],lit(“}”),no-attrs),[125])])])]) at line 0, column 0
Submitted by Danny Groenewegen on 29 January 2011 at 13:53
Issue Log
This happens when the disambiguator encounters a parse tree with a
reject
annotation as the only possible interpretation, indicating a syntax error.If I do
asfix-yield
on the parse tree fragment, I get:
placeholder()and at the start it says that it parsed this fragment using the reject rule:
prod(
[ lit(“placeholder”)
, cf(opt(layout()))
, cf(sort(“ObjectCreation”))
, cf(opt(layout()))
, cf(sort(“TemplateCall”))
]
, cf(sort(“TemplateElement”))
, attrs([reject()])
)it seems odd that this rule would match that input. So what was the complete input? Maybe JSGLR is right about it?
Test application: https://svn.strategoxt.org/repos/WebDSL/webdsls/trunk/test/succeed/ajaxaction.app
My bad. This is the actual output of
asfix-yield
:
placeholder target {}
form { action(“do”,do2())[ajax] }So all it’s saying is that that fragment is not a
TemplateElement
. In that case, this bug may be another instance of Spoofax/154…
BTW, the parse result without the reject rule, I suppose you got that from the C parser? What happens if you only remove the
{reject}
annotation, add a constructor, and try with the Java parser? Do you get all three interpretations then? (might give some more insight into Spoofax/154)
All three interpretations:
"placeholder" ObjectCreation TemplateCall -> TemplateElement {cons("RejectThis")}
result:
Define( [Page(){At("../ajaxaction.app", 5, 8)}] , "root" , [] , None(){At("../ajaxaction.app", 5, 20)} , Conc( amb( [ VarDeclInit("s", SimpleSort("String"), String("\"hoi2\""){At("../ajaxaction.app", 6, 20)}){At("../ajaxaction.app", 6, 3)} , Placeholder("target", []){At("../ajaxaction.app", 8, 3)} , TemplateCallBody( "form" , TemplateBody( [Submit(String("\"do\""){At("../ajaxaction.app", 9, 17)}, ActionCall("do2", []){At("../ajaxaction.app", 9, 22)}, [TemplateCallPropertyAjax(){At("../ajaxaction.app", 9, 29)}]){At("../ajaxaction.app", 9, 10)}] ){At("../ajaxaction.app", 9, 8)} ){At("../ajaxaction.app", 9, 3)} ] , [ VarDeclInit("s", SimpleSort("String"), String("\"hoi2\""){At("../ajaxaction.app", 6, 20)}){At("../ajaxaction.app", 6, 3)} , amb( PlaceholderWithAjaxCall( ObjectCreation(SimpleSort("target"), []){At("../ajaxaction.app", 8, 15)} , TemplateCallBody( "form" , TemplateBody( [Submit(String("\"do\""){At("../ajaxaction.app", 9, 17)}, ActionCall("do2", []){At("../ajaxaction.app", 9, 22)}, [TemplateCallPropertyAjax(){At("../ajaxaction.app", 9, 29)}]){At("../ajaxaction.app", 9, 10)}] ){At("../ajaxaction.app", 9, 8)} ){At("../ajaxaction.app", 9, 3)} ){At("../ajaxaction.app", 8, 3)} , RejectThis( ObjectCreation(SimpleSort("target"), []){At("../ajaxaction.app", 8, 15)} , TemplateCallBody( "form" , TemplateBody( [Submit(String("\"do\""){At("../ajaxaction.app", 9, 17)}, ActionCall("do2", []){At("../ajaxaction.app", 9, 22)}, [TemplateCallPropertyAjax(){At("../ajaxaction.app", 9, 29)}]){At("../ajaxaction.app", 9, 10)}] ){At("../ajaxaction.app", 9, 8)} ){At("../ajaxaction.app", 9, 3)} ){At("../ajaxaction.app", 8, 3)} ){At("../ajaxaction.app", 8, 3)} ] ){At("../ajaxaction.app", 6, 3)} , [ Action( "do2" , [] , Block( [ AjaxStatement(AjaxReplace("target", TemplateCallNoBody("templ", [Var("s"){At("../ajaxaction.app", 11, 28)}]){At("../ajaxaction.app", 11, 22)}){At("../ajaxaction.app", 11, 5)}){At("../ajaxaction.app", 11, 5)} , AjaxStatement(AjaxAppend("target", TemplateCallNoBody("templ", [Var("s"){At("../ajaxaction.app", 12, 28)}]){At("../ajaxaction.app", 12, 22)}){At("../ajaxaction.app", 12, 5)}){At("../ajaxaction.app", 12, 5)} , AjaxStatement(AjaxRelocate(PageCall("apage", [Var("s"){At("../ajaxaction.app", 14, 21)}]){At("../ajaxaction.app", 14, 15)}){At("../ajaxaction.app", 14, 5)}){At("../ajaxaction.app", 14, 5)} , AjaxStatement(AjaxVisibility("target", Hide(){At("../ajaxaction.app", 16, 25)}){At("../ajaxaction.app", 16, 5)}){At("../ajaxaction.app", 16, 5)} , AjaxStatement(AjaxVisibility("target", Show(){At("../ajaxaction.app", 17, 25)}){At("../ajaxaction.app", 17, 5)}){At("../ajaxaction.app", 17, 5)} , AjaxStatement(AjaxVisibility("target", Toggle(){At("../ajaxaction.app", 18, 25)}){At("../ajaxaction.app", 18, 5)}){At("../ajaxaction.app", 18, 5)} , AjaxStatement(AjaxRestyle("target", String("\"aclass\""){At("../ajaxaction.app", 20, 22)}){At("../ajaxaction.app", 20, 5)}){At("../ajaxaction.app", 20, 5)} , AjaxStatement(AjaxClear("target"){At("../ajaxaction.app", 21, 5)}){At("../ajaxaction.app", 21, 5)} ] ){At("../ajaxaction.app", 10, 17)} ){At("../ajaxaction.app", 10, 3)} ] ) ){At("../ajaxaction.app", 5, 1), At("../ajaxaction.app", 5, 1)}
Log in to post comments