2014-09-04 2 views
0

구문 분석하려고하는 함수 호출을 나타내는 String이 있습니다. 각 인수는 다른 함수 호출이거나 단일 단어 일 수 있습니다. 이름을 검색 할 알고리즘을 작성하고 args를 분할하고 싶습니다.함수 호출에 대한 인수를 분할하는 방법

class FunctionCall{ 
    String name; 
    String[] args; 
} 

function parseFunction(String func){ 
    FunctionCall fc = new FunctionCall(); 
    fc.name = func.subString(0,func.indexOf("(")) 
    fc.args = ??? 
} 

함수 호출은 func1(func2(arg1, arg2),func3(func4(arg3)),arg4)처럼 볼 수 있었다, 나는 String[] argsfunc2(arg1, arg2), func3(func4(arg3))arg4를 포함하고 싶습니다.

함수 호출의 재귀 적 특성으로 인해 정규 표현식을 사용할 수 없다고 생각합니다.

Java로 코드를 작성했지만 다른 언어로 작성하는 것이 좋습니다.

답변

0

내가 대답은 내가 하나 하나의 문자를 구문 분석하고 괄호를 열고 수를 계산해야하는

here을 설명 발견 한 것 같다. 괄호가 열리지 않을 때 콤마를 발견하면 그 점을 나눠야합니다.

0
(?:^[^\(\)]*?\()?(?:(.*?\)),|(.*?)\)$) 

시도해 볼 수 있습니다. 현재 입력과 일치합니다. 테스트 할 입력 패턴이 더 필요할 수 있습니다.

데모보기

http://regex101.com/r/pP3pN1/31

관련 문제