хочу разработать специальный калькулятор ..
и я пришел к такой проблеме:
Х = 1 + (12 * 4 + 2)
мне нужно сначала получить количество операндов
как здесь у меня есть два операнда 1 и (12 * 4 + 2)
как я могу отличить внешний + от внутреннего?
спасибо
какое удивительное сообщество здесь ..
разные ответы от самых простых до самых сложных ..
Гайз, моя проблема не в калькуляторе и не в чем-либо еще, связанном с математикой.
Я только что спросил о внешнем и внутреннем плюсе, чтобы применить стратегию совершенно по-другому.
Я реализую алгоритм объединения в Java (точно так же, как делает интерпретатор Prolog, когда вы даете ему два выражения)
вот алгоритм:
function unify(E1, E2);
begin
case
both E1 and E2 are constants or the empty list:
if E1 = E2 then return {}
else return FAIL;
E1 is a variable:
if E1 occurs in E2 then return FAIL
else return {E2/E1}
E2 is a variable
if E2 occurs in E1 then FAIL
else return {E1/E2}
either E1 or E2 are empty then return FAIL
otherwise:
begin
HE1 := first element of E1;
HE2 := first element of E2;
SUBS1 := unify(HE1, HE2);
if SUBS1 := FAIL then return FAIL;
TE1 := apply(SUBS1, rest of E1);
TE2 := apply(SUBS1, rest of E2);
SUBS2 := unify(TE1, TE2);
if SUBS2 = FAIL then return FAIL;
else return composition(SUBS1, SUBS2)
end
end
Теперь мой вопрос: есть ли у меня такой вклад:
а (X, Y) = A (B (C, Y), Z), ..
как я могу извлечь количество (и значения) элементов (т. Е. X и Y для первого выражения)
Я пришел к различным новым методам для меня, когда я прочитал и попытался решить эту проблему ..
как Lexical Analysis, Parsing, я понятия не имею о Lexical Alanysis, хотя я знаю синтаксический анализ и токены (в строковой манере), более того, я думаю, что это не решит мою проблему ..
Сейчас я пытаюсь реализовать то, что сказал Джои Адамс. Думаю, это полезно для моей проблемы.
Сори за этот очерк, парень ... спасибо за помощь