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

On 29 January 2011 at 14:24 Lennart Kats commented:

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?


On 29 January 2011 at 14:24 Lennart Kats tagged parser


On 29 January 2011 at 15:00 Lennart Kats commented:

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


On 29 January 2011 at 15:04 Lennart Kats commented:

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)


On 29 January 2011 at 16:28 Danny Groenewegen commented:

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)}

On 31 January 2011 at 12:40 Lennart Kats tagged pre-new-terms

On 31 January 2011 at 12:40 Lennart Kats tagged pre-new-terms

On 14 February 2011 at 14:43 Lennart Kats tagged 1.0

On 23 November 2011 at 17:58 Lennart Kats tagged 1.1

On 23 November 2011 at 17:58 Lennart Kats tagged 1.1

On 23 November 2011 at 18:05 Lennart Kats tagged unconfirmed

On 29 November 2011 at 11:55 Lennart Kats removed tag 1.0

On 8 January 2013 at 12:56 Eelco Visser removed tag 1.1

On 8 January 2013 at 12:56 Eelco Visser tagged interesting

On 8 January 2013 at 15:07 Eelco Visser tagged sdf

Log in to post comments