[{"data":1,"prerenderedAt":301},["ShallowReactive",2],{"project-17644115":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":71,"maker_in_thread":146,"shape":154,"grid":158,"attempts":263,"same_week":264,"maker_shows":43,"maker_hidden":293,"reader_version":294,"card":295},"17644115","Owl","A new kind of parser generator","title","Show HN: Owl, a new kind of parser generator","https:\u002F\u002Fgithub.com\u002Fianh\u002Fowl","github.com","panic",1532955938,2018,156,42,257,2155,12,"notable","languages","parser generator","library",[21,24,25,26,27],"parsing algorithm","ambiguity detection","context-free grammar","regular expressions","curious",0.061,{"positive":31,"neutral":32,"mixed":33,"critical":34},7,13,0,3,23,{"idea":37,"performance":40,"design":41,"docs":42,"execution":44},{"positive":38,"critical":39},4,2,{"positive":33,"critical":33},{"positive":39,"critical":33},{"positive":43,"critical":33},1,{"positive":33,"critical":43},[46,33,33,46,34,33,34,34,33,46,46,33,33,33,33,33,34,33,46,46,34,33,34,33,46,43,33,34,33,43,34,33,43,34,33,34,33,33,34,34],5,null,{"problem":49,"audience":59,"pricing":47,"motivation":47,"time_to_build":47,"stack":68,"openness":69,"stage":70,"team_size":70},{"value":50,"source":51,"evidence":52},"Parsing text into trees without requiring users to understand LL or LR techniques, and showing grammar ambiguities.","maker",[53,56],{"id":54,"by":11,"text":55},"17649749","Yeah, they both solve the same problem -- turning text into a structured \"parse tree\". At the core of each parsing tool is a particular parsing algorithm. The details of this…",{"id":57,"by":11,"text":58},"17650465","Thanks! The two biggest uses of Owl right now are Owl itself (see grammar.owl in the root directory) and the \"egg\" programming language which is included as an example:…",{"value":60,"source":61,"evidence":62},"Developers writing parsers for casual parsing, data extraction, or languages.","inferred",[63,67],{"id":64,"by":65,"text":66},"17650877","ulrikrasmussen","This looks really great! For casual parsing and data extraction in particular, having a parser generator which does not restrict its users to a particular non-compositional…",{"id":57,"by":11,"text":58},[],"open_source","unknown",{"praise":72,"objections":85,"requests":99,"questions":114,"alternatives":129},[73,81],{"value":74,"source":75,"evidence":76},"Impressive design and syntax highlighting in the try-it page","commenter",[77],{"id":78,"by":79,"text":80},"17650339","sbjs","Hi, I see that this is your tool, just wanted to say it looks amazing! Also I did not realize how much of a difference syntax highlighting makes for this kind of thing until I…",{"value":82,"source":75,"evidence":83},"Useful ambiguity detection compared with ANTLR",[84],{"id":54,"by":11,"text":55},[86,92],{"value":87,"source":51,"evidence":88},"Restricted to grammars where recursion is bounded by explicit begin and end tokens",[89],{"id":90,"by":11,"text":91},"17649098","> Can you provide some intuition on which languages can be parsed by this algorithm, and which can't? The restriction is that any recursion in the grammar has to be inside…",{"value":93,"source":75,"evidence":94},"Arithmetic expressions without operator support can be split into separate statements",[95],{"id":96,"by":97,"text":98},"17650770","hyperpallium","Handling arithmetic expressions in a simple parser is difficult. The approach here seems limited in the usual way. e.g the following is parsed as two statements (separated by the…",[100,107],{"value":101,"source":75,"evidence":102},"Support for incremental DFA construction",[103],{"id":104,"by":105,"text":106},"17651117","blarg1","\"Owl uses precomputed DFAs and action tables, which can blow up in size as grammars get more complex. In the future, it would be nice to build the DFAs incrementally.\" Don't know…",{"value":108,"source":75,"evidence":109},"Runtime conflict resolution for operator precedence",[110],{"id":111,"by":112,"text":113},"17651599","Taniwha","I don't see the trick I really like to use - which is for some conflicts (mostly shift\u002Freduce ones) decide to resolve them on the fly at run time (it lets you do things like…",[115,122],{"value":116,"source":75,"evidence":117},"How does it compare to ANTLR and how does it differ in algorithm",[118],{"id":119,"by":120,"text":121},"17649528","chucky_z","Is Owl similar to ANTLR? Could you explain the differences between the two languages, and what makes a parser unique if they're similar? I'm curious because I've quickly run…",{"value":123,"source":75,"evidence":124},"Which languages can it parse and which cannot",[125],{"id":126,"by":127,"text":128},"17648858","erezsh","Looks interesting. Can you provide some intuition on which languages can be parsed by this algorithm, and which can't? Btw, why did you choose the name Owl?",[130,138],{"value":131,"source":75,"evidence":132},"ANTLR",[133,134],{"id":119,"by":120,"text":121},{"id":135,"by":136,"text":137},"17652063","bmn__","Owl is much more limited. That's not a problem because the documentation tells outright what it can and can't do and what it's for; experts can get things done better if we have…",{"value":139,"source":75,"evidence":140},"Marpa",[141,145],{"id":142,"by":143,"text":144},"17651497","nmca","Hey- does anyone know how this compares to Marpa? Also, more examples of errors would be great :)",{"id":135,"by":136,"text":137},{"comments":31,"answered":147,"key":148},6,[149,152,153],{"id":150,"text":151},"17655395","Thanks! This is something I want to fix eventually. These papers will be very helpful.",{"id":54,"text":55},{"id":90,"text":91},{"commenters":155,"max_depth":31,"maker_replies":31,"first_comment_mins":156,"lifespan_hours":157},25,579,67,[159,161,163,167,169,172,174,176,177,179,182,186,188,191,194,196,198,199,201,202,203,205,208,210,212,214,216,218,220,222,225,229,232,235,236,240,242,245,249,253,257,260],[64,33,46,160,65,33],"project\u002Fpositive\u002Fidea",[150,33,33,162,11,43],"maker\u002Fpositive\u002Fnone",[164,43,33,165,166,33],"17649368","other\u002Fneutral\u002Fnone","Vanit",[168,43,46,160,79,33],"17650327",[170,43,34,171,97,33],"17650738","project\u002Fneutral\u002Fidea",[173,43,33,165,97,33],"17650667",[104,39,34,175,105,33],"project\u002Fneutral\u002Fperformance",[119,34,34,171,120,33],[54,34,33,178,11,43],"maker\u002Fneutral\u002Fnone",[180,34,46,181,79,33],"17650413","project\u002Fpositive\u002Fdesign",[183,34,46,184,185,33],"17650642","maker\u002Fpositive\u002Fdocs","adito",[135,34,33,187,136,33],"commenter\u002Fneutral\u002Fnone",[189,34,33,187,190,33],"17653750","parrt",[192,34,33,187,193,33],"17654402","ThePhysicist",[195,34,33,187,190,33],"17656599",[197,34,33,187,136,33],"17657024",[126,38,34,171,127,33],[90,38,33,200,11,43],"maker\u002Fneutral\u002Fidea",[78,38,46,181,79,33],[57,38,33,178,11,43],[204,38,46,160,79,33],"17650477",[206,38,34,207,97,33],"17650719","project\u002Fneutral\u002Fdocs",[209,38,33,171,11,43],"17655419",[211,38,34,171,97,33],"17661067",[213,38,33,200,11,43],"17669574",[215,38,46,160,97,33],"17669973",[96,38,43,217,97,33],"project\u002Fcritical\u002Fexecution",[219,38,33,165,97,33],"17661077",[142,46,34,221,143,33],"project\u002Fneutral\u002Fnone",[223,46,33,165,224,33],"17651673","shoo",[226,46,43,227,228,33],"17652737","project\u002Fcritical\u002Fidea","taejo",[230,147,34,171,231,33],"17651013","wodenokoto",[233,147,33,165,234,33],"17651853","jacoblambda",[111,31,43,227,112,33],[237,238,34,171,239,33],"17649416",8,"zaptheimpaler",[241,238,33,200,11,43],"17649443",[243,238,34,171,244,33],"17649564","disconcision",[246,238,33,247,248,33],"17653665","other\u002Fneutral\u002Fidea","curun1r",[250,251,33,165,252,33],"17650186",9,"bsurmanski",[254,255,34,221,256,33],"17650612",10,"grapehut",[258,255,34,221,259,33],"17650686","lifthrasiir",[261,255,34,221,262,33],"17651969","kitd",[],[265,270,275,279,284,289],{"id":266,"name":267,"points":268,"category":269},"17618059","Layoutit",437,"dev_tools",{"id":271,"name":272,"points":273,"category":274},"17652593","canvas-sketch",295,"productivity",{"id":276,"name":277,"points":278,"category":20},"17616839","Percy",234,{"id":280,"name":281,"points":282,"category":283},"17661451","Toy",180,"games",{"id":285,"name":286,"points":287,"category":288},"17625308","Kontext",138,"learning_science",{"id":290,"name":291,"points":292,"category":269},"17662068","StyleURL",94,false,"v2",{"id":296,"name":5,"line":6,"ai":293,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":297,"top":18,"kw":298,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":299,"url":9,"mix":300,"praise":74,"objection":87,"sub":21},17644115,0.06,[21,24,25,26,27],"5005303305500000305530305103013013030033",[31,32,33,34],1794036568192]