f# - FsLex - Differ between 2 strings -


i've couple of tokens:

pname , ename - both strings.

now want setup 2 rules in lexer, in order match tokens.

the first rule (pname) should match when string consist of characters a-z, , optional special characters @/().

the second rule (ename) should match when string consist of characters a-z, , optional prefix (#/.).

now how make rule in lexer file match ename - when theres no prefix?

if makes difference, ename have { after it's string like: (prefix)ename { - bracket shouldn't passed parser...

any suggestions?

if question related your previous question (about parsing css) files, should use different approach.

the lexer should identify simple tokens such # , . (token names hash , dot), curly braces (tokens lcurly , rcurly { , } respectively) , identifier ident using regular expression takes sequence of characters a-za-z.

the rest of processing (such identifying css rules .foo { ... }) should done in parser. in previous answer, described how parse list of property names - assumes have navigators syntactic element specifies html elements such #name or #name .class. can write separate parsing rules these:

navigators =    | navigator            { [$1] }   | navigator navigators { $1::$2 } navigator =    | hash ident   { selectbyid($2) }   | dot ident    { selectbyclass($1) } 

for more information wirting parsers & lexers see wikibooks article , chris smith's blog.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -