Задача №1. Реализуйте поддержку унарного минуса - два варианта
Primary tabs
Задача: https://fkn.ktu10.com/?q=node/16471
Сделала так же обработку формул вида 4+5+
Решение 1
https://github.com/kro-star/pascal.js-intro/tree/minBranch
Этот вариант работает только на лексическом анализаторе.
Пришлось повозиться с вызовом функций nextCh() и написанной мной prevCh(). Так как при вызове nextCh() идёт что следующий символ мы тебе покажем потом, а сейчас бери этот символ. А при следующем вызове prevCh() - о, нам нужно было брать следующий символ, поэтому бери этот, а предыдущий мы тебе потом покажем. Короче я запуталась, пришлось распутываться и ставить функции в нужные места, чтобы в итоге обработка строки была правильной.
Решение 2
https://github.com/kro-star/pascal.js-intro/tree/unminus
Изменила файлы sintaxAnalyzer.js и lexicalAnalyzer.js
Для обоих решений:
<Digit> ::= [0-9] <UnsignedInteger> ::= "0" | (( "-" [1-9] <Digit>* | [1-9] <Digit>*) <Multiplier> ::= <UnsignedInteger> <Multiplication> ::= ( <Multiplier> | <Multiplication> | <Division> ) "*" <Multiplier> <Division> ::= ( <Multiplier> | <Multiplication> | <Division> ) "/" <Multiplier> <Term> ::= <Multiplier> | <Multiplication> | <Division> <Addition> ::= ( <Term> | <Addition> | <Subtraction> ) "+" <Term> <Subtraction> ::= ( <Term> | <Addition> | <Subtraction> ) "-" <Term> <Expression> ::= <Term> | <Addition> | <Subtraction>
- Log in to post comments
- 837 reads
vedro-compota
Tue, 03/12/2024 - 11:59
Permalink
Сделала так же обработку
что это за такой вид? по-идее плюс в конце не является корректной строкой
_____________
матфак вгу и остальная классика =)
kro-star
Tue, 03/12/2024 - 17:35
Permalink
обработка
Да, не является корректной строкой. Поэтому и выдаёт ошибку - неожиданное окончание строки.