Как сопоставить только часть выражения со строкой в ​​ocamllex

У меня есть простая программа 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" в виде строки diff (скажем, inb), за которой следует "X" в качестве строки diff (скажем, inc) n, за которым следует "7" как строка сравнения (скажем, ind), так что я могу поиграться с этими строками inb, inc, & ind, вместо того, чтобы застрять с целой строкой ine, как указано в моей программе. Как это сделать? Надеюсь мой вопрос понятен

0 ответов

Другие вопросы по тегам