我有一个简单的 ocamllex 程序,其中规则部分看起来像这样-
let digits= ['0'-'9']
let variables= 'X'|'Z'
rule addinlist = parse
|['\n'] {addinlist lexbuf;}
| "Inc" '(' variables+ '(' digits+ ')' ')' as ine { !inputstringarray.(!inputstringarrayi) <-ine;
inputstringarrayi := !inputstringarrayi +1;
addinlist lexbuf}
|_ as c
{ printf "Unrecognized character: %c\n" c;
addinlist lexbuf
}
| eof { () }
我的问题是假设我想匹配 Inc(X(7)) 以便我可以将其转换为我的抽象语法,即“Inc of var of int”。我希望我的词法分析器在读取 Inc(X(7)) 时给我单独的字符串,这样我得到“Inc”作为差异字符串(比如 inb),然后是“X”作为差异字符串(比如 inc)n,然后是"7" 作为一个 diff 字符串(比如 ind),这样我就可以使用这些字符串 inb、inc 和 ind,而不是像我的程序给出的那样被整个字符串 ine 卡住。如何解决这个问题?我希望我的问题很清楚