2019년 11월 13일 수요일

[파싱] 프로그램 스크립트 작성 및 실행 시행착오중


https://blog.naver.com/ihaneter/221707025476


안녕하세요 오타쟁이 한이터 백승기 입니다.
소스코드와 실행코드를 나누고 실행문장의 프로그램을 시작합니다.
얼마나 많은 시행착오를 고칠지 모르지만 잘못되면 모든것을 허물고 다시 지을겁니다.
다음은 정리된 소스 문장입니다.
<<Source List>>
[0000] var main start
[0001] int A=1122
[0002] str B='1122'
[0003] str C
[0004] var main end
[0005] program main start
[0006] set A=1222+5
[0007] set B=100+(20*2)+55
[0008] putln A,B
[0009] program main end
다음은 실행 문을 정리하고 있습니다.
<<Program Run List>>
add var int -> [A] int A=1122
add var str -> [B] str B='1122'
add var str -> [C] str C
[set][A][=][1222][+][5]
[set][B][=][100][+][(][20][*][2][)][+][55]
[putln][A][,][B]
프로그램에서의 소스 코드는 다음과 같습니다.
NCalcCd_var("var main start");
NCalcCd_var("int A=1122"); //-> OK
NCalcCd_var("str B='1122'"); //-> OK
NCalcCd_var("str C"); //-> OK
NCalcCd_var("var main end");
NCalcCd_var("program main start");
NCalcCd_var("set A=1222+5"); //-> OK
NCalcCd_var("set B=100+(20*2)+55"); //-> OK
NCalcCd_var("putln A,B");
NCalcCd_var("program main end");
각각의 함수가 하는 일은 상상에 맡기고
이상 오타쟁이 한이터 백승기 입니다.
바바

2019년 6월 26일 수요일

최근의 글들은 여기에 있습니다.

최근의 글들은 여기에 있습니다.

https://blog.naver.com/ihaneter

가장최근의 글은 다음 유니티 WWW Download 에 관한 글입니다.

2018년 8월 1일 수요일

2018-08-02 스크립트언어 데모

2018-08-02 스크립트언어 데모
AI Text 대화 프로그램을 개발하기 위한 중간단계의 개발의 결과물입니다. 다음 프로그램은 데모일 뿐이며 실행시 에러가 발생할수 있습니다. 더이상 추가 개발을 하지 않습니다.
https://blog.naver.com/ihaneter/221331073772
위 링크에서 down load 하여 테스트 할 수 있습니다.


2018년 7월 25일 수요일

2018-07-25 스크립트언어를 위한 LOOP문

2018-07-25 스크립트언어를 위한 LOOP문
기본 스크립트 언어의 구성의 마지막 단계가 for(;;) 문이므로 이 단계는 마지막 단계인셈이다.
이프로그램은 에 다른 모듈과 결합되어 어떤 기능으로 구현될 것이며 아직은 미정이다. 대화형 챗봇이 최종 목표가 될것이다.


2018년 7월 22일 일요일

2018-07-23 스크립트언어를 위한 비교 처리프로그램 (5)

개발중인 스크립트 언어에서  비교문은 산술식과 결합된다.결과를 만드는 프로그램은 이미 완료된 상태지만 아직 IF 의 결과에 따른 처리문 은 이제 개발 할 예정이다.  다양한 많은 프로그램의 결과는 간단할지도 모르지만 숨겨진 과정은 어마어마 하다.(단순히 남의 코드를 복사하는 사람은 당연히 그 결과 이상을 개발 할수 없다. 이유는 결과이외엔 아는 것이 없기때문이다.)

2018년 7월 18일 수요일

2018-07-17 스크립트언어를 위한산술식 처리프로그램 (4)

스크립트 언어에서 사칙연산 을 포함한 문자열수식 계산함수는 필수로 요구된다.다음은 그 구현 원리를 간단하게 소개합니다.( 오늘2018-07-18 개발 및 적용된 예입니다. )

2018년 7월 16일 월요일

2018-07-13 AI를 위한 컴파일러 개발(3)

2018-07-17 AI를 위한 컴파일러 개발(3) by 백승기
*이제 이 스크립트 컴파일러의 이름을 정했습니다.( 임시이름 )  
그리고 변수처리기의 기능을 일부 마무리했고  
간단한 계산기정도의 처리능력을 발휘할 수 있습니다,  
명령어중 pr은 print 기능을 제공합니다.  
그리고 함수 호출기능이 추가되었고 이제 실행됩니다.
* 다음엔 if 와 goto 기능을 구현할까 합니다.
 단 if 문에 goto문은 구현이 되어지므로 따로 goto문을 구현하지는 않을 예정입니다.

MyCalc <가칭> 버전 1.00-> 스크립트 소스
"function main;" 
" A=123;" 
" B='NAME';" 
" pr '----------------------------';" 
" pr 'B=$01',B;" 
" B=1000;" 
" C=A+B;" 
" D=A+B*10;" 
" pr '----------------------------';" 
" pr '$02+$01=$03',A,B,C;" 
" pr 'D=$01',D;" 
" pr '----------------------------';" 
" call sub;" 
"end;" 
"" 
"function sub;" 
" pr '-sub function-';" 
"end;"
MyCalc <가칭> 버전 1.00-> 실행결과
----------------------------
B=NAME
----------------------------
1000+123=1123.00
D=10123.00
----------------------------
-sub function- 


2018년 7월 15일 일요일

스크립트언어를 개발하고 싶다면...

먼저 BASIC언어를 배우거나 테스트해보세요
기초에 불과한 언어일지라도 유용합니다.

BASIC 은 단지 교육용으로 사용하다가 이제 어디서 쓰는지 모르는 언어가 되었지만

기본적인 구조가 다음과 같습니다.
10 rem Basic Language
20 print "Good Morning"
30 goto 20

이것은 영원히 "Good Morning" 을 출력합니다.
10 라인은 rem -> 주석입니다.
20 "Good Morning" 을 출력합니다.
30 goto 20 => 20 번으로 가라는 뜻입니다.

어째서 영원히 "Good Morning" 을 출력할까?
이것은 모든 프로그램은 10-> 20-> 30 -> 순차적으로 흐르도록 되어 있습니다.
최근에는 EVENT 함수가 주를 이루어 순차적이 아니라 생각할지 모르지만
그것도 커널에서 순차적으로 명령을 처리합니다.
즉 위 프로그램은 10 -> 20-> 30-> 20->30-> 20->30-> ... 전원이 꺼질때까지 ...

프로그램의 모든것은 순서를 가지고 있습니다.
이것을 이해한다면 배우기도 편해지고 새로운 프로그램을 만들기도 쉬어 집니다.

2018년 7월 12일 목요일

2018-07-13 AI를 위한 컴파일러 개발(2)

백승기의 2018-07-13 AI를 위한 컴파일러 개발(2)

이번에는 실행과에 대한 설명을 먼저 합니다.
1.시행했을때 컴파일하고 선언하지 않았지만 소스속에서 변수라 예상되는 항목을 찾아내어 변수로 만들고 이름을 등록하고 초기화 해줍니다.2. 실행과정속에서 변수를 사용하는 코드를 분석에서 변경되는 값을 수정해줍니다.3. 이번 컴파일러의 변수는 수치,문자열 속성 구분따위 없앴습니다. (제 맘대로이니까요)4. 마지막에 최종 결과 값이 보입니다. (참고로 A+B의 덧셈연산을 수행한 최종 결과도 확인됩니다.)* 다음은 어디까지 할까요 역시 제 맘대로 입니다.

다음은 스크립트소스와 결과 입니다.

스크립트소스 원본: 개발중인 컴파일러가 이걸 컴파일합니다.// Comfile Code 
g_psr.fnLineSplit( 
"function main;" 
" A=123;" 
" B='NAME';" 
" pr 'B=$01',B;" 
" B=1000;" 
" C=A+B;" 
" pr '$02+$01=$03',A,B,C;" 
" call sub;" 
"end;" 
"" 
"function sub;" 
" pr '-sub function-';" 
"end;" 
); 
// Run Code 
g_psr.fnRunSplit();



다음은 실행결과 입니다.