Дизайн компилятора: как вы различаете «число op_Minus» и «номер-негатива»? - PullRequest
2 голосов
/ 02 марта 2011

Как вы различаете последовательность токенов "op_Minus" "число" и простое отрицательное число?

1 Ответ

1 голос
/ 02 марта 2011

Я думаю, что это зависит от контекста и зависит от количества операндов, с которыми вы сталкиваетесь при синтаксическом анализе исходного кода.

В зависимости от типа синтаксиса, который вы выбираете / встречаете, у вас либо будет что-то подобное, когда вы 'Вы имеете дело с вычитанием:

operand1 - operand2

или если ваш язык использует префиксную нотацию, вы получите что-то вроде этого:

- operand1 operand2
(- operand1 operand2)

В обоих случаях вы сможетевыведите из предыдущего токена (в случае инфиксной записи) или из предисловия к следующему токену / следующим двум токенам), если вы имеете дело с вычитанием или отрицательным числом, учитывая, что последний будет иметь только один операнд.

...