반복되는 정규표현식을 정리할 수 있는 방법이 없을까요?
https://github.com/recu3125/malC_lang
제가 만들고 있는 한국어로 코딩할 수 있는 곳인데
main.js 가보시면
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) 더하기 ([0-9\+\-\*/_korvar\[\]\(\)]+) /g, '$1+$2 ')
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) 빼기 ([0-9\+\-\*/_korvar\[\]\(\)]+) /g, '$1-$2 ')
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) 곱하기 ([0-9\+\-\*/_korvar\[\]\(\)]+) /g, '$1*$2 ')
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) 나누기 ([0-9\+\-\*/_korvar\[\]\(\)]+) /g, '$1/$2 ')
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) (와|과|에)(서|)(다가|)(다|) ([0-9\+\-\*/_korvar\[\]\(\)]+) (을|를) 더한 (거|것)/g, '($1+$6)')
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) (와|과|에)(서|)(다가|)(다|) ([0-9\+\-\*/_korvar\[\]\(\)]+) 의 합/g, '($1+$6)')
input = input.replace(/([0-9\+\-\*/_korvar\[\]\(\)]+) (와|과|에)(서|)(다가|)(다|) ([0-9\+\-\*/_korvar\[\]\(\)]+) (을|를) 뺀 (거|것)/g, '($1+$6)')
이런 식으로 반복되는 부분이 너무 많습니다. 실행 속도에 큰 차이 없이 코드를 관리하기 쉽게 정리할 수 있는 방법이 없을까요?
해당 내용들은 regular expression
해당 내용들은 regular expression 보다는 context free grammar 로 파싱하는게 더 정의하고 관리하기 편하지 않을까 생각합니다. 만약 그렇게까지 고도화시키고 싶지 않은 코드라면 보통 verbose regex flag 를 사용해서 스페이스를 무시하도록 하기도 하는데, 자바스크립트에는 해당 기능이 네이티브로 지원되는지는 모르겠습니다.
댓글 달기