yeah im going back to sleep now... i hate this

This commit is contained in:
Tyler McGurrin 2025-06-08 12:19:57 -04:00
parent bcba3e7414
commit c071191465
5 changed files with 30 additions and 13 deletions

View File

@ -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
) )

View File

@ -10,4 +10,5 @@ im not explaining that sentence...
- fortran stdlibs - fortran stdlibs
- 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

View File

@ -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