2015-01-14 1 views
0

C/C++ 소스 파일에서 "#"또는 "%"의 잘못된 사용을 식별하는 의사 코드로 프로그램을 작성하고 싶습니다. 간단하게 들리지만, "pseudo code"에 기호가 나타나는 위치를 쓰거나 기술하는 방법에 대해 확신 할 수 없습니다. 예를 들어, 변수 이름 앞뒤에 있는지 여부는 알 수 없습니다. 정말 가성 이러한 특정 상황을 설명하는 방법을 알아낼 수 없습니다 오류 처리를위한 의사 코드 프로그램

....

If "#" after var_a 
     then "Error!" 
    elseif before ";" 
     .... and so on 

또는 내가 #_ASCII_code의 is_after "기호"와 같은 것을 사용한다 :

내가 좋아하는 뭔가를 사용해야 암호.

는 내가 인터넷에서 의사 코드에 대해 읽어 언급해야합니다.

가 사전에 감사합니다 (내가 검색 버튼을 사용했다).

+0

C에서 의사 코드? 매크로를 사용하여 코드의 일부 내용을 컴파일하지 않는다는 것을 의미합니까? – Gopi

+0

c 및 C++ 소스는 구문 분석하기가 매우 다릅니다. –

+1

아니요. 오류가있는 C 소스 (C++가 아니라 C++ 만 가능) 파일이 있다고 가정 해 봅니다. 의사 코드 프로그램의 개념은 컴파일러가 이러한 오류를 어떻게 인식하고 어떻게 처리해야하는지 설명하는 것입니다. – utiliopt

답변

2

too simple이기 때문에 접근 방식이 작동하지 않습니다. 이 솔루션라는 여러 단계의 과정입니다 당신이 AST로 끝날 때까지 "parsing는"

  • 첫째, 토큰 (b = a ++ ->ID ASSIGN ID INCREMENT)에 소스 파일의 문자 스트림을 변환해야합니다.
  • 그런 다음 상위 수준 규칙으로 변환하려면 LL parser이 필요합니다. 전체 원본 파일에 대한 규칙은 일반적으로 AST - Abstract Syntax Tree이라고합니다.

나무는 이제 의사 코드를 작성할 수 있다는 :

For all AST nodes with the text representation "#" 
    if the previous sibling is a variable 
     ... 
    else if the next sibling is ";" 
     ... 
+0

나는 당신의 인용문을 정말 좋아합니다! 그러나 OP가 그가 원하는 것을 말하기 전까지는, 그가 정말로 완전한 파서를 필요로하는지 확신하지 못합니다. 특히 교사 양성 과정이기 때문에 ... –

0

의사 코드 사양의 한 형태입니다. 의사 코드로이 명세를 작성하는 것이 너무 어렵다면, "모든 변수는 '#'에 의해 정해져 야합니다."와 같이 자연 언어로 먼저 작성하십시오. " '#'이 앞에 붙어 있지 않은 변수는 자동으로 오류가 발생합니다.

사양을 작성하면 문제를 잘 설명 할 수 있습니다. 그런 다음 의사 코드로 시작하면 설계의 형태가되며 실제 프로그래밍을 끝내면 모든 언어 또는 메커니즘을 사용할 수 있습니다. 예를 들어, yacc 스크립트에 적합한 솔루션을 결정하거나 C 또는 C++에서 직접 코드를 작성할 수있을만큼 간단합니다.

의사 코드가 잘 정의되어 있지 않으므로이 의사 구현에서는 요구 사항이 잘못 설명 될 수 있습니다. 가난한 의사 구현에서 실제 구현으로 이동하면 구현이 잘못됩니다 (버그 참조).

아마도 의사 코드를 전혀 사용하지 않는 것이 가장 좋습니다.