From be8a523bf1560f7f59820896264d6ab6b3c09a89 Mon Sep 17 00:00:00 2001 From: Guan Inf <2307786059@qq.com> Date: Mon, 2 Jun 2025 18:11:20 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0Tbs=E7=9A=84=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E5=9C=A8Tbs.h=E5=92=8CTbs.cpp=E4=B8=AD=20,=20Tbs?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=90=AB=E6=9C=89=E5=B8=B8=E9=87=8F=E8=A1=A8?= =?UTF-8?q?=E5=92=8C=E6=A0=87=E8=AF=86=E7=AC=A6=E8=A1=A8=E7=9A=84=E4=B8=A4?= =?UTF-8?q?=E4=B8=AAmap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2. 添加Scanner的scan模板 , scan中参数为string源码和Tbs对象 , Tbs对象含有常量表和标识符表的两个map 3. Scanner_test的测试文件将测试扫描后 , Tbs的两个map的情况 --- CMakeLists.txt | 8 ++++++-- include/Scanner.h | 9 +++++++++ include/Tbs.h | 9 +++++++++ src/Scanner.cpp | 18 ++++++++++++++++++ src/Tbs.cpp | 1 + 5 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 include/Scanner.h create mode 100644 include/Tbs.h create mode 100644 src/Scanner.cpp create mode 100644 src/Tbs.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index e593a59..f506b20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,13 +11,17 @@ include_directories(${CMAKE_SOURCE_DIR}/include) file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/src/*.cpp) -add_executable(Hydrogen ${SOURCES}) +add_executable(Hydrogen ${SOURCES} + src/scanner.cpp + src/Tbs.cpp) file(GLOB TEST_SOURCES ${CMAKE_SOURCE_DIR}/unit/*.cpp) foreach(TEST_SOURCE ${TEST_SOURCES}) get_filename_component(TEST_NAME ${TEST_SOURCE} NAME_WE) - add_executable(${TEST_NAME} ${TEST_SOURCE} ${SOURCES}) + add_executable(${TEST_NAME} ${TEST_SOURCE} ${SOURCES} + include/scanner.h + include/Tbs.h) add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) endforeach(TEST_SOURCE ${TEST_SOURCES}) diff --git a/include/Scanner.h b/include/Scanner.h new file mode 100644 index 0000000..9d8988a --- /dev/null +++ b/include/Scanner.h @@ -0,0 +1,9 @@ +# pragma once +#include "stdc++.h" +#include "Token.h" +#include "Tbs.h" +class Scanner { +public: + bool scan(std::string org_s,Tbs& t); + +}; \ No newline at end of file diff --git a/include/Tbs.h b/include/Tbs.h new file mode 100644 index 0000000..90732c2 --- /dev/null +++ b/include/Tbs.h @@ -0,0 +1,9 @@ +# pragma once + +#include "stdc++.h" +using std::unordered_map,std::string; +class Tbs { +public: + unordered_map ConstTable; + unordered_map IdTable; +}; \ No newline at end of file diff --git a/src/Scanner.cpp b/src/Scanner.cpp new file mode 100644 index 0000000..3d1a5c9 --- /dev/null +++ b/src/Scanner.cpp @@ -0,0 +1,18 @@ +#include "Scanner.h" + +using std::vector,std::string; + +bool Scanner::scan(std::string org_s,Tbs& t) { + string tmp; + int cnt = 0; + for (auto e : org_s) { + if (e==' ') { + t.ConstTable[++cnt] =tmp; + tmp = ""; + } + else { + tmp += e; + } + } + return true; +} diff --git a/src/Tbs.cpp b/src/Tbs.cpp new file mode 100644 index 0000000..728e99a --- /dev/null +++ b/src/Tbs.cpp @@ -0,0 +1 @@ +#include "Tbs.h"