h
Size: a a a
h
h
Underscore и UnderscoreNoWSРС
h
aaa bbb, если вы на уровне лексера сделаете три токена Letter{'a'} и три токена Letter{'b'}, то на уровне парсера у вас будет 6 токенов Letter и получится просто `Variable{'aaabbb'}LetterNoWS{'a'} потом один Letter{'a'}. И когда вы будете парсить Variable, надо будет проверять, что внутри Variable только LetterNoWS, а в конце может быть либо Letter либо любой другой токен, который вообще не может быть в Variable.РС
РС
h
asadasdasdas1232132131 — это идентификаторasdasd eiwubfewu — это два идентификаторыasdasd{} — это идентификатор, потом токен {, потом токен }h
_ или буквы, а дальше к этому добавляются ещё и цифры. Но вы продолжаете собирать символы для идентификатора пока не встретите токен, который не может быть частью идентификаторы (и пробел в их числе).РС
h
h
DP
K
S = Add
Add = Add + Factor | Factor
Factor = Factor * Term | Term
Term = "(" Add ")" | int
K
h
h
K
h
K
K