부모글 보이기/감추기 AD BLOCK 해제 요청 이 글에는 광고가 많이 들어가 있지 않습니다. adblock을 해제하셔도 글을 읽는데 그다지 부담이 없으니 해제를 부탁드립니다. (연관된 글이 1개 있습니다.) 인터프리터 - 재귀적 하향 구문 분석 C# 예제 역시 이번에도 다음 책의, 만들면서 배우는 인터프리터: 컴파일러 이론으로 만드는 나만의 스크립트 언어 ; http://www.yes24.com/24/goods/7858784?scode=032 108 페이지에 나오는 minicalc.cpp 파일을 C# 버전으로 옮겨 보았습니다. 코드는 이렇게 작성할 수 있고, MiniCalc miniCalc = new MiniCalc(); miniCalc.Run("a=10"); miniCalc.Run("b=20"); miniCalc.Run("c = a + b * 30"); miniCalc.Run("? c"); miniCalc.Run("c=(a+b)*30"); miniCalc.Run("? c"); miniCalc.Run("? 1+2+3+4-5"); 실행하면 다음과 같은 출력 결과를 볼 수 있습니다. 610 900 5 (첨부한 파일은 소스 코드입니다.) [이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.] [다음 글] 기타: 55. ETW man 파일 목록[이전 글] .NET Framework: 553. C# 관리 코드에서 IMetaDataDispenserEx, IMetaDataImport 관련 인터페이스를 얻는 방법 [연관 글] .NET Framework: 562. BBI 인터프리터 C/C++ 코드를 C#으로 변환 [최초 등록일: 2/24/2016] [최종 수정일: 2/24/2016] 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다. by SeongTae Jeong, mailto:techsharer at outlook.com 비밀번호 댓글 작성자 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] ... NoWriterDateCnt.TitleFile(s) 13227정성태1/23/202315144개발 환경 구성: 659. Windows - IP MTU 값을 바꿀 수 있을까요? [1]13226정성태1/23/202313463.NET Framework: 2088. .NET 5부터 지원하는 GetRawSocketOption 사용 시 주의할 점13225정성태1/21/202313363개발 환경 구성: 658. Windows에서 실행 중인 소켓 서버를 다른 PC 또는 WSL에서 접속할 수 없는 경우13224정성태1/21/202313427Windows: 221. Windows - Private/Public/Domain이 아닌 네트워크 어댑터 단위로 방화벽을 on/off하는 방법13223정성태1/20/202313025오류 유형: 838. RDP 연결 오류 - The two computers couldn't connect in the amount of time allotted13222정성태1/20/202313018개발 환경 구성: 657. WSL - DockerDesktop.vhdx 파일 위치를 옮기는 방법13221정성태1/19/202313484Linux: 57. C# - 리눅스 프로세스 메모리 정보113220정성태1/19/202313539오류 유형: 837. NETSDK1045 The current .NET SDK does not support targeting .NET ...13219정성태1/18/202312930Windows: 220. 네트워크의 인터넷 접속 가능 여부에 대한 판단 기준13218정성태1/17/202312798VS.NET IDE: 178. Visual Studio 17.5 (Preview 2) - 포트 터널링을 이용한 웹 응용 프로그램의 외부 접근 허용13217정성태1/13/202313549디버깅 기술: 185. windbg - 64비트 운영체제에서 작업 관리자로 뜬 32비트 프로세스의 덤프를 sos로 디버깅하는 방법13216정성태1/12/202312875디버깅 기술: 184. windbg - 32비트 프로세스의 메모리 덤프인 경우 !peb 명령어로 나타나지 않는 환경 변수13215정성태1/11/202316474Linux: 56. 리눅스 - /proc/pid/stat 정보를 이용해 프로세스의 CPU 사용량 구하는 방법 [1]13214정성태1/10/202315628.NET Framework: 2087. .NET 6부터 SourceGenerator와 통합된 System.Text.Json [1]113213정성태1/9/202313204오류 유형: 836. docker 이미지 빌드 시 "RUN apt install ..." 명령어가 실패하는 이유13212정성태1/8/202315250기타: 85. 단정도/배정도 부동 소수점의 정밀도(Precision)에 따른 형변환 손실13211정성태1/6/202314970웹: 42. (https가 아닌) http 다운로드를 막는 웹 브라우저13210정성태1/5/202313763Windows: 219. 윈도우 x64의 경우 0x00000000`7ffe0000 아래의 주소는 왜 사용하지 않을까요?13209정성태1/4/202312415Windows: 218. 왜 윈도우에서 가상 메모리 공간은 64KB 정렬이 된 걸까요?13208정성태1/3/202313966.NET Framework: 2086. C# - Windows 운영체제의 2MB Large 페이지 크기 할당 방법113207정성태12/26/202214625.NET Framework: 2085. C# - gpedit.msc의 "User Rights Assignment" 특권을 코드로 설정/해제하는 방법 [1]113206정성태12/24/202214715.NET Framework: 2084. C# - GetTokenInformation으로 사용자 SID(Security identifiers) 구하는 방법 [4]113205정성태12/24/202213408.NET Framework: 2083. C# - C++과의 연동을 위한 구조체의 fixed 배열 필드 사용 (2)113204정성태12/22/202212656.NET Framework: 2082. C# - (LSA_UNICODE_STRING 예제로) CustomMarshaler 사용법113203정성태12/22/202212760.NET Framework: 2081. C# Interop 예제 - (LSA_UNICODE_STRING 예제로) 구조체를 C++에 전달하는 방법113202정성태12/21/202214853기타: 84. 직렬화로 설명하는 Little/Big Endian1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] ...