2012-03-29 2 views
1

javaccript 코드를 추출하여 document.createElement('script');과 같은 동적 태그 생성이 있는지 확인하고 싶습니다. 정규 표현식을 사용하여이 작업을 시도했지만 정규 표현식을 사용하면 일부 형식 만 가져올 수 있다고 제한합니다. 자바 스크립트 코드에서 모든 키워드, 문자열 및 함수를 추출하는 자바 스크립트 파서 작성.자바 스크립트 코드 용 파서 작성

+0

그래서 글쓰기에 문제가 정확히 무엇입니까? –

+0

요소를 만드는 함수를 호출하지 않는다는 것을 어떻게 알 수 있습니까? 예를 들어, jQuery는 DOM에 새 요소를 추가 할 수도 있으며 접근 방식으로는이를 감지하지 못합니다. –

+0

나는 그것을 시작하는 방법을 모르겠다 – user1275375

답변

0

어쩌면 당신은 이제까지 실행 코드의 특정 라인, 당신은 halting problem를 해결하기 위해 필요하면 알 수있는 방법이 없다 일반적으로

2

Burrito를 사용하여 시도해야합니다. 함수 호출의 발생을 찾기 위해 분석을 제한하면 많은 진전을 이루지 못합니다. 순진한 방법은 여전히 ​​쉽게 트릭 될 수 있습니다. 만약 document.createElement와의 정규식을 일치 시킨다면, document["create" + "Element"]과 같은 간단한 것을 찾을 수 없을 것입니다. 일반적으로 코드를 구문 분석 할뿐만 아니라이를 해결하기 위해 코드를 평가해야합니다. 그리고 코드를 평가할 수 있는지 확인하려면 다시 중단 문제를 해결해야합니다.

0

음, 첫 번째 규칙은 이처럼 큰 항목이나 DOM 또는 ...에 대해서는 결코 정규식을 사용하지 않습니다. 토큰으로 구문을 분석해야합니다. 좋은 소식은 당신이 직접 작성하지 않아도된다는 것입니다. 몇 가지 JS에서 JS 파서가 있습니다. narcissus

  • Esprima
  • ZeParser
  • 그들은 열심히 비트가 작업을 할 수있다 UglifyJS

    • . 그러나 그들과 함께 일하는 것이 낫다. burrito 또는 code surgeon과 같은 이들을 사용하는 다른 프로젝트가 있습니다. 따라서 소스 코드를보고 어떻게 사용하는지 볼 수 있습니다.

      하지만 사람들이 다른 사람들보다 여전히 현명 할 수있는 나쁜 소식이 있습니다. 파서와 작성한 코드는 말할 것도없고. 적어도 실행 시간 변수를 사용하여 코드를 평가하고 DOM에 액세스할지 여부를 확인해야합니다.