.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 text
s. 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