2014-12-10 2 views
1

Привет Я новичок в Jison и пытаюсь ее изучить. Я пробую онлайн-калькулятор калькулятора jison на http://techtonik.github.io/jison/try/. Он работает отлично для выраженияРазбор новой строки в Jison

5*PI^2. 

Но когда я добавил новое выражение на строки, синтаксический анализатор не будет принимать строку и попытаться разобрать еще одно выражение, как будто он находится на той же линии.

Input : 
     5*PI^2 
     23+56 

Parser принимает его как:

5*PI^223+56 

Это не удается, поэтому я хочу знать, как разобрать строку в jison parsor.

ответ

3

Проблема заключается в том, что синтаксический анализатор Jison ожидает, что одно выражение будет анализироваться, и оно попытается оценить, действителен ли текст ENTIRE в целом. То, что вы дали ему в этом случае, - это ДВА отдельных выражений, которые не корректно оцениваются вместе, поэтому он терпит неудачу. Если, например, вы оцениваете

5*PI^2 
+ 
23+56 

Тогда у него нет проблем. Это связано с тем, что Jison пытается разобрать все значение, которое оно задано, и позволяет вам разбивать сложные выражения на несколько строк.

Однако это не мешает вам оценивать линии индивидуально, если вы хотите. Вместо того, чтобы передавать функцию синтаксического анализа всего текста из поля, просто разделите текст на массив с использованием метода разделения строк JavaScript (разделение на символ новой строки, «\ n»), затем прокрутите и передайте каждую строку содержимого к функции разбора отдельно.