Javascript Postfix Notation
Я хотел бы помочь в принятии следующего выражения в постфиксной записи: "4 5.2 + 5.7 / 6.1 5--".
Сначала он должен прочитать выражение, затем проверить операторы, а затем операнды и затем оценить выражение. наконец, "document.write" каждый толчок и поп в отдельных строках. Помогите пожалуйста, так как у меня кончились места, чтобы посмотреть с YouTube на этот сайт. Я даже не знаю, с чего начать, поэтому очень простой пример, который поможет мне начать, поможет. У меня есть некоторые знания JS, но я не очень разбираюсь в этом, и я не смог найти никакой помощи в этом конкретном примере.
1 ответ
Попробуйте разбить проблему на более простые шаги. Например, исходное задание, которое вы дали, чтобы оценить строку
4 5.2 + 5.7 / 6.1 5 - -
слишком сложно сделать все сразу. Лучше разложить проблему на управляемые части. Одно разложение:
Разбейте строку на жетоны.
Разработайте интерпретатор, который работает с токенами.
Эта разбивка является стандартным подходом к решению подобных проблем. В книге, подобной PLAI, рассказывается, как выполнить часть 2. Часть 2 несложная: сохранить набор чисел. Как вы ходите токены:
Если вы видите число, поместите его в стек.
Если вы видите оператор, вытолкните два числа из стека, манипулируйте ими с помощью оператора и поместите результат обратно в стек.
Этот процесс является сердцем калькулятора обратной польской нотации ( RPN).
Первая проблема также не слишком сложна, если вы готовы играть с такими инструментами, как регулярные выражения. Регулярное выражение может обнаружить шаблоны в строках и разделить строки на части. Например, в следующем примере показано, как мы можем разбить строку на последовательность слов вдоль границ пространства:
var s = "hello this is a test";
var pieces = s.split(" ");
Для ваших целей ваша строка не всегда будет правильно разнесена, поэтому вам нужно разделить ее по границам чисел и операторов. Вам нужно поэкспериментировать с шаблонами регулярных выражений, чтобы заставить токенизацию работать так, как вы хотите.
Проблема, которую вы пытаетесь решить, на самом деле НЕ является материалом для начинающих. Это проблема, которая задается студентам второго семестра по информатике, людям, которые уже прошли что-то вроде " Как разрабатывать программы" или другие подобные учебные программы, предполагая, что студент уже знает свой любимый язык программирования с нуля. Если вы не можете писать программы без копирования и вставки примеров от других, у вас еще нет опыта для решения этой проблемы. Сначала делайте более простые задачи, вставьте язык в свои пальцы, а затем вернитесь к этому.