2011-04-05 6 views
0

소규모 인터프리터를 구축 중입니다. 지금까지 나는 변수와 여러 함수 (예 : MOD, MAX 등 ...)를 포함한 수학 표현식을 계산할 수있는 기능이 있습니다.연산자 오버로딩 및 인라인 함수 구현

온라인 연산자 오버로딩 연산자 오버로드가 에 이 기존의 기능, 예를 들어 너무

중 하나의 기능이 새로운 사업자의 생성을 의미하는 용어입니다 : 나는 두 가지 기능을 추가 할 필요가 과부하 을 입력 한 후 # *의 POW, 3 * 2 초래할 것이다 9

, 또한 연산자 오버로딩 것 외에 에서

인라인 함수 생성 SU해야 pport 인라인 기능 만들기 4. 인라인 _FUNC {@ ARG1, @ ARG2, ...}

그래서, 내가 시작하는 아무 생각이 : 즉, 다음 구문을 사용하여 새 기능, ​​ 의 생성을 지원합니다. 누구든지 나를 연결할 수 있다면 알려진 기술이나 기존 자바 도구를 읽을 수 있습니다. 저에게 도움이 될만한 정보는 매우 유용 할 것입니다. 나는 무엇을 찾을 지조차 모른다. 감사! 당신의 렉서어휘 분석을 수행하는 동안

+5

당신은 전에 질문 한 13 가지 중 하나만 받아들이지 않았습니다. – dacwe

+0

이 숙제입니까? 그렇다면 "숙제"태그로 질문에 태그를 답니다. –

+1

나는 내가 받아 들여야한다는 것을 몰랐다. 나는 그것을 지금 보게 될 것이다. – yotamoo

답변

0

는 새 키워드를 처리해야합니다.

예를 들어 사용자가 overload *# POW을 입력하면 렉서가 "overload", "* #"및 "POW"의 3 가지 토큰을 식별 할 수 있어야합니다. 비슷하게, 함수 생성을 위해 렉서는 중괄호를 토큰 화해야합니다 (중괄호 사이의 공백/줄 바꿈 량은 중요하지 않습니다).

다음으로 파서을 수정하고 구문 트리을 작성해야합니다. 예를 들어, 구문 분석3 *# 2에 수행 한 후에는 구문 트리가 연산자와 피연산자를 식별 할 수 있어야합니다.

최종 단계는 구문 트리를 실행하고 결과를 해석/평가하는 것입니다.

도구의 경우 렉서 분석기 및 파서 생성기이 있습니다. 렉서와 파서에 대한 기존 코드가 이미 있다면이 도구를 사용하지 말고 기존 코드를 수정하십시오.