.net - Simple FormatString language using Irony -
.net - Simple FormatString language using Irony -
i'm trying define simplistic language using irony. language usecases are
dear {name},    it free text therein references fields enclosed in curly braces. double curly brace escapes field declaration. came next spec:
var ortext = new freetextliteral("text", freetextoptions.alloweof | freetextoptions.allowempty); var orfieldname = new freetextliteral("fieldname");  //nonterminals var orfield = new nonterminal("field"); var orvalue = new nonterminal("value");  //rules orfield.rule = "{" + orfieldname + "}"; orvalue.rule = ortext | orfield;  root = orvalue;    however, irony grammarexplorer parses value has text element. field not recognized. missing here?
i don't know much irony, think need create next changes:
set terminatorfreetextliteral. otherwise, parser won't know when end parsing text or field name. set root non-terminal lets write sequence of values, not single one. get rid of allowempty. after  create  alter #2, mean irony think input  total of empty texts.   with these changes, grammar looks this:
var ortext = new freetextliteral("text", freetextoptions.alloweof, "{"); var orfieldname = new freetextliteral("fieldname", "}");  //nonterminals var orfield = new nonterminal("field"); var orvalue = new nonterminal("value");  var orfile = new nonterminal("file");  //rules orfield.rule = "{" + orfieldname + "}"; orvalue.rule = ortext | orfield;  orfile.rule = makestarrule(orfile, orvalue);  root = orfile;    which parses input like:
        file          |  /-------+-------\  |       |       | text   value    text  |       |       | dear fieldname   ,          |         name        .net parsing programming-languages irony 
 
  
Comments
Post a Comment