상당히 복잡한 표현식 언어를 구문 분석 할 수있는 Jison을 사용하여 파서를 작성하고 있습니다. 이 언어에서 , 그것은 지원 문법 같은 :Jison에게 불필요한 세부 사항을 무시하도록 요청하십시오.
여기stats_expression
: stats_function '(' eval_expression ')'
| other_stats_aggregation
;
stats_function
: SUM
| AVERAGE
| ...
;
eval_expression (중첩 평가, 논리 표현 등과 같은 기능) 매우 복잡하고, 나는 eval_expression의 내용을 상관하지하지합니까 너무 많은 노력을 들여 파싱하려고합니다. 위의 문법에서 stats_function 이름과 같은 다른 정보 만 얻고 싶습니다.
내 질문은 내가 eval_expression에 대한 전체 렉서/문법 사양을 작성하지 않고 전체 eval_expression과 쉽게 일치하도록 일부 와일드 카드 일치를 수행 할 수있는 Jison의 방법이 있습니까?
참고 : 위의 코드에서 other_stats_aggregation
부분을 구문 분석해야하므로이 작업을 수행하기 위해 Jison 대신 일반 표현식을 사용하는 것과 같은 해결 방법이 작동하지 않습니다. 전체 문법/구문 분석기를 작성합니다.
도움을 주시면 감사하겠습니다.
이전에이 접근법을 생각했지만이 방법으로 모든 토큰에 대해 두 개의 목록을 유지해야하기 때문에이 방법이 나에게 '쉽지 않은'것으로 들리지 않았습니다. 다른 대안이 없다고 생각합니다. 고마워요. – nybon