yeah im going back to sleep now... i hate this
This commit is contained in:
parent
bcba3e7414
commit
c071191465
@ -8,7 +8,7 @@ set(FVERSION "-std=f2023")
|
|||||||
|
|
||||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FVERSION}")
|
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FVERSION}")
|
||||||
|
|
||||||
include_directories(BEFORE SYSTEM /usr/include /usr/include/fortran_stdlib/GNU-15.1.1/)
|
include_directories(BEFORE SYSTEM /usr/include /usr/include/fortran_stdlib/GNU-15.1.1/ ${CMAKE_CURRENT_BINARY_DIR}/vector ${CMAKE_CURRENT_BINARY_DIR}/f90getopt)
|
||||||
link_directories(BEFORE $ENV{LD_LIBRARY_PATH} ${CMAKE_BINARY_DIR}/ )
|
link_directories(BEFORE $ENV{LD_LIBRARY_PATH} ${CMAKE_BINARY_DIR}/ )
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
@ -19,14 +19,16 @@ set(MODULES src/tokenizer.f90
|
|||||||
src/fileread.f90
|
src/fileread.f90
|
||||||
CACHE INTERNAL "")
|
CACHE INTERNAL "")
|
||||||
|
|
||||||
add_library(f90getopt SHARED libs/f90getopt/f90getopt.F90)
|
|
||||||
|
|
||||||
add_subdirectory(libs/vector ${CMAKE_CURRENT_BINARY_DIR}/vector)
|
add_subdirectory(libs/vector ${CMAKE_CURRENT_BINARY_DIR}/vector)
|
||||||
|
add_subdirectory(libs/f90getopt ${CMAKE_CURRENT_BINARY_DIR}/f90getopt)
|
||||||
|
|
||||||
add_library(${PROJECT_NAME}-lib SHARED ${MODULES})
|
add_library(${PROJECT_NAME}-lib SHARED ${MODULES})
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} src/main.f90)
|
add_executable(${PROJECT_NAME} src/main.f90)
|
||||||
|
|
||||||
|
add_dependencies(${PROJECT_NAME}-lib fortran-vector f90getopt)
|
||||||
|
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-lib)
|
||||||
|
|
||||||
find_package("fortran_stdlib" REQUIRED)
|
find_package("fortran_stdlib" REQUIRED)
|
||||||
find_package(BLAS)
|
find_package(BLAS)
|
||||||
find_package(LAPACK)
|
find_package(LAPACK)
|
||||||
@ -34,9 +36,10 @@ find_package(LAPACK)
|
|||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
${PROJECT_NAME}
|
${PROJECT_NAME}
|
||||||
PUBLIC
|
PUBLIC
|
||||||
f90getopt
|
|
||||||
${PROJECT_NAME}-lib
|
${PROJECT_NAME}-lib
|
||||||
PRIVATE
|
PRIVATE
|
||||||
fortran-vector
|
f90getopt
|
||||||
fortran_stdlib::fortran_stdlib
|
fortran_stdlib::fortran_stdlib
|
||||||
|
fortran-vector
|
||||||
|
PUBLIC
|
||||||
)
|
)
|
||||||
@ -11,3 +11,4 @@ im not explaining that sentence...
|
|||||||
- gfortran
|
- gfortran
|
||||||
- CMake
|
- CMake
|
||||||
- BLAS (Needed for STDLIBS)
|
- BLAS (Needed for STDLIBS)
|
||||||
|
- LAPACK (Needed for STDLIBS)
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 872848f265bef0c20d3618be966d7a4302d20973
|
Subproject commit 0af628d03018f04465c367c1d33f39b42a2af7a8
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 32c8b2e3c0c02b14d9f75816d53a40b00316d6be
|
Subproject commit 0f1670c70afc91c32170ba26b1aa84957c2ca53a
|
||||||
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
module tokenizer
|
module tokenizer
|
||||||
use stdlib_strings
|
use stdlib_strings
|
||||||
|
use vector
|
||||||
|
use, intrinsic :: iso_c_binding
|
||||||
implicit none
|
implicit none
|
||||||
contains
|
contains
|
||||||
|
|
||||||
@ -12,7 +14,8 @@ module tokenizer
|
|||||||
character(:), allocatable, intent(out) :: tokens
|
character(:), allocatable, intent(out) :: tokens
|
||||||
character(string_length), intent(in) :: input_string
|
character(string_length), intent(in) :: input_string
|
||||||
|
|
||||||
character(:), dimension(:), allocatable :: buffer
|
type(vec) :: buf
|
||||||
|
character :: buffer
|
||||||
character(1) :: c
|
character(1) :: c
|
||||||
integer :: i
|
integer :: i
|
||||||
|
|
||||||
@ -24,19 +27,29 @@ module tokenizer
|
|||||||
do while (i < string_length)
|
do while (i < string_length)
|
||||||
c = slice(input_string, i, i+1)
|
c = slice(input_string, i, i+1)
|
||||||
if (token_isalpha(c) == 1) then
|
if (token_isalpha(c) == 1) then
|
||||||
|
call buf%push_back(c) ! i think this is correct?
|
||||||
i = i + 1
|
i = i + 1
|
||||||
endif
|
do while (token_isalnum(slice(input_string, 1, i+1)) == 1)
|
||||||
|
call buf%push_back(slice(input_string, 1, i+1))
|
||||||
|
i = i + 1
|
||||||
|
end do
|
||||||
|
i = i - 1
|
||||||
|
! call vector_get(buf, 1) ! FUCK FORTRAN VECTOR...
|
||||||
|
if (buffer == 'return') then
|
||||||
|
|
||||||
|
end if
|
||||||
|
end if
|
||||||
end do
|
end do
|
||||||
|
|
||||||
end subroutine tokenize
|
end subroutine tokenize
|
||||||
|
|
||||||
integer function token_isalpha(input_character) result(res)
|
integer function token_isalpha(input_character) result(res)
|
||||||
character(1) :: input_character
|
character(1), intent(in) :: input_character
|
||||||
|
|
||||||
if ( input_character == 'a') then
|
if ( input_character == 'a') then
|
||||||
elseif (input_character == 'b') then
|
elseif (input_character == 'b') then
|
||||||
elseif (input_character == 'c') then
|
elseif (input_character == 'c') then
|
||||||
elseif (input_character =='d') then
|
elseif (input_character == 'd') then
|
||||||
elseif (input_character == 'e') then
|
elseif (input_character == 'e') then
|
||||||
elseif (input_character == 'f') then
|
elseif (input_character == 'f') then
|
||||||
elseif (input_character == 'g') then
|
elseif (input_character == 'g') then
|
||||||
@ -96,7 +109,7 @@ module tokenizer
|
|||||||
end function token_isalpha
|
end function token_isalpha
|
||||||
|
|
||||||
integer function token_isalnum(input_character) result(res)
|
integer function token_isalnum(input_character) result(res)
|
||||||
character(1) :: input_character
|
character(1), intent(in) :: input_character
|
||||||
|
|
||||||
if ( input_character == 'a') then
|
if ( input_character == 'a') then
|
||||||
elseif (input_character == 'b') then
|
elseif (input_character == 'b') then
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user