From 999d26eb5b7fcd96feadde6ca9ee9900ac8179af Mon Sep 17 00:00:00 2001 From: Suleyman Farajli Date: Sun, 19 Jan 2025 20:02:29 +0400 Subject: program name changed to `marp` --- .gitignore | 2 +- Makefile | 13 ++-- README.md | 4 +- examples/const.ash | 4 - examples/const.marp | 4 + examples/fib.ash | 16 ---- examples/fib.marp | 16 ++++ examples/hello_world.ash | 5 -- examples/hello_world.marp | 5 ++ examples/seq10.ash | 6 -- examples/seq10.marp | 6 ++ examples/words.ash | 7 -- examples/words.marp | 7 ++ go.mod | 2 +- lib/std.ash | 191 ---------------------------------------------- lib/std.marp | 191 ++++++++++++++++++++++++++++++++++++++++++++++ src/main.go | 9 ++- 17 files changed, 245 insertions(+), 243 deletions(-) delete mode 100644 examples/const.ash create mode 100644 examples/const.marp delete mode 100644 examples/fib.ash create mode 100644 examples/fib.marp delete mode 100644 examples/hello_world.ash create mode 100644 examples/hello_world.marp delete mode 100644 examples/seq10.ash create mode 100644 examples/seq10.marp delete mode 100644 examples/words.ash create mode 100644 examples/words.marp delete mode 100644 lib/std.ash create mode 100644 lib/std.marp diff --git a/.gitignore b/.gitignore index b88931b..10f8dfa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -ash +marp GNUmakefile diff --git a/Makefile b/Makefile index ce70bdb..070c19c 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,17 @@ PREFIX ?= /usr/local -ash: src/main.go - go build -o ash ./src +marp: src/main.go + go build -o marp ./src -install: ash +install: marp mkdir -p ${DESTDIR}${PREFIX}/bin - cp -f ash ${DESTDIR}${PREFIX}/bin + cp -f marp ${DESTDIR}${PREFIX}/bin + cp -f lib/std.marp ${DESTDIR}${PREFIX}/bin uninstall: - rm -f ${DESTDIR}${PREFIX}/bin/ash + rm -f ${DESTDIR}${PREFIX}/bin/marp clean: - rm -f ash + rm -f marp .PHONY: test clean diff --git a/README.md b/README.md index aadbfdc..77ee302 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ash +# marp A Simple stack based programming language inspired by [forth](https://www.forth.com/forth) and posix shell syntax. ## Building @@ -15,4 +15,4 @@ make install * ld ## OS -ash only supports linux. +marp only supports linux. diff --git a/examples/const.ash b/examples/const.ash deleted file mode 100644 index 421f7f5..0000000 --- a/examples/const.ash +++ /dev/null @@ -1,4 +0,0 @@ -# Prints out the value 5 - -define CON 5 end -CON dump diff --git a/examples/const.marp b/examples/const.marp new file mode 100644 index 0000000..421f7f5 --- /dev/null +++ b/examples/const.marp @@ -0,0 +1,4 @@ +# Prints out the value 5 + +define CON 5 end +CON dump diff --git a/examples/fib.ash b/examples/fib.ash deleted file mode 100644 index c29476d..0000000 --- a/examples/fib.ash +++ /dev/null @@ -1,16 +0,0 @@ -# Print out given number of elements in the Fibonacci sequence, 46 is the max value -define fib - var lim !lim - var a 1 !a - var b 1 !b - @lim while dup 0 > do - @a dump - @b dup - @a - + !b - !a - 1 - - done -end - -10 fib diff --git a/examples/fib.marp b/examples/fib.marp new file mode 100644 index 0000000..c29476d --- /dev/null +++ b/examples/fib.marp @@ -0,0 +1,16 @@ +# Print out given number of elements in the Fibonacci sequence, 46 is the max value +define fib + var lim !lim + var a 1 !a + var b 1 !b + @lim while dup 0 > do + @a dump + @b dup + @a + + !b + !a + 1 - + done +end + +10 fib diff --git a/examples/hello_world.ash b/examples/hello_world.ash deleted file mode 100644 index a1c1d48..0000000 --- a/examples/hello_world.ash +++ /dev/null @@ -1,5 +0,0 @@ -# Prints out "Hello, World!" - -include "../lib/std.ash" - -"Hello, World!" write diff --git a/examples/hello_world.marp b/examples/hello_world.marp new file mode 100644 index 0000000..bdc5fb6 --- /dev/null +++ b/examples/hello_world.marp @@ -0,0 +1,5 @@ +# Prints out "Hello, World!" + +include "../lib/std.marp" + +"Hello, World!" write diff --git a/examples/seq10.ash b/examples/seq10.ash deleted file mode 100644 index e73743e..0000000 --- a/examples/seq10.ash +++ /dev/null @@ -1,6 +0,0 @@ -# Print out numbers from 1 to 10 - -1 while dup 11 < do - dup dump - 1 + -done diff --git a/examples/seq10.marp b/examples/seq10.marp new file mode 100644 index 0000000..e73743e --- /dev/null +++ b/examples/seq10.marp @@ -0,0 +1,6 @@ +# Print out numbers from 1 to 10 + +1 while dup 11 < do + dup dump + 1 + +done diff --git a/examples/words.ash b/examples/words.ash deleted file mode 100644 index c0e1461..0000000 --- a/examples/words.ash +++ /dev/null @@ -1,7 +0,0 @@ -# Prints out one - -define printOutOne - 1 dump -end - -printOutOne diff --git a/examples/words.marp b/examples/words.marp new file mode 100644 index 0000000..c0e1461 --- /dev/null +++ b/examples/words.marp @@ -0,0 +1,7 @@ +# Prints out one + +define printOutOne + 1 dump +end + +printOutOne diff --git a/go.mod b/go.mod index 2484211..81fa7f1 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module ash +module marp go 1.23.3 diff --git a/lib/std.ash b/lib/std.ash deleted file mode 100644 index d44cccb..0000000 --- a/lib/std.ash +++ /dev/null @@ -1,191 +0,0 @@ -define sys_stdin 0 end -define sys_stdout 1 end -define sys_stderr 2 end - -# Not all syscalls are defined here -define sys_read 0 end -define sys_write 1 end -define sys_open 2 end -define sys_close 3 end -define sys_stat 4 end -define sys_fstat 5 end -define sys_lstat 6 end -define sys_poll 7 end -define sys_lseek 8 end -define sys_mmap 9 end -define sys_mprotect 10 end -define sys_munmap 11 end -define sys_brk 12 end -define sys_rt_sigaction 13 end -define sys_rt_sigprocmask 14 end -define sys_rt_sigreturn 15 end -define sys_ioctl 16 end -define sys_pread64 17 end -define sys_pwrite64 18 end -define sys_readv 19 end -define sys_writev 20 end -define sys_access 21 end -define sys_pipe 22 end -define sys_select 23 end -define sys_sched_yield 24 end -define sys_mremap 25 end -define sys_msync 26 end -define sys_mincore 27 end -define sys_madvise 28 end -define sys_shmget 29 end -define sys_shmat 30 end -define sys_shmctl 31 end -define sys_dup 32 end -define sys_dup2 33 end -define sys_pause 34 end -define sys_nanosleep 35 end -define sys_getitimer 36 end -define sys_alarm 37 end -define sys_setitimer 38 end -define sys_getpid 39 end -define sys_sendfile 40 end -define sys_socket 41 end -define sys_connect 42 end -define sys_accept 43 end -define sys_sendto 44 end -define sys_recvfrom 45 end -define sys_sendmsg 46 end -define sys_recvmsg 47 end -define sys_shutdown 48 end -define sys_bind 49 end -define sys_listen 50 end -define sys_getsockname 51 end -define sys_getpeername 52 end -define sys_socketpair 53 end -define sys_setsockopt 54 end -define sys_getsockopt 55 end -define sys_clone 56 end -define sys_fork 57 end -define sys_vfork 58 end -define sys_execve 59 end -define sys_exit 60 end -define sys_wait4 61 end -define sys_kill 62 end -define sys_uname 63 end -define sys_semget 64 end -define sys_semop 65 end -define sys_semctl 66 end -define sys_shmdt 67 end -define sys_msgget 68 end -define sys_msgsnd 69 end -define sys_msgrcv 70 end -define sys_msgctl 71 end -define sys_fcntl 72 end -define sys_flock 73 end -define sys_fsync 74 end -define sys_fdatasync 75 end -define sys_truncate 76 end -define sys_ftruncate 77 end -define sys_getdents 78 end -define sys_getcwd 79 end -define sys_chdir 80 end -define sys_fchdir 81 end -define sys_rename 82 end -define sys_mkdir 83 end -define sys_rmdir 84 end -define sys_creat 85 end -define sys_link 86 end -define sys_unlink 87 end -define sys_symlink 88 end -define sys_readlink 89 end -define sys_chmod 90 end -define sys_fchmod 91 end -define sys_chown 92 end -define sys_fchown 93 end -define sys_lchown 94 end -define sys_umask 95 end -define sys_gettimeofday 96 end -define sys_getrlimit 97 end -define sys_getrusage 98 end -define sys_sysinfo 99 end -define sys_times 100 end -define sys_ptrace 101 end -define sys_getuid 102 end -define sys_syslog 103 end -define sys_getgid 104 end -define sys_setuid 105 end -define sys_setgid 106 end -define sys_geteuid 107 end -define sys_getegid 108 end -define sys_setpgid 109 end -define sys_getppid 110 end -define sys_getpgrp 111 end -define sys_setsid 112 end -define sys_setreuid 113 end -define sys_setregid 114 end -define sys_getgroups 115 end -define sys_setgroups 116 end -define sys_setresuid 117 end -define sys_getresuid 118 end -define sys_setresgid 119 end -define sys_getresgid 120 end -define sys_getpgid 121 end -define sys_setfsuid 122 end -define sys_setfsgid 123 end -define sys_getsid 124 end -define sys_capget 125 end -define sys_capset 126 end -define sys_rt_sigpending 127 end -define sys_rt_sigtimedwait 128 end -define sys_rt_sigqueueinfo 129 end -define sys_rt_sigsuspend 130 end -define sys_sigaltstack 131 end -define sys_utime 132 end -define sys_mknod 133 end -define sys_uselib 134 end -define sys_personality 135 end -define sys_ustat 136 end -define sys_statfs 137 end -define sys_fstatfs 138 end -define sys_sysfs 139 end -define sys_getpriority 140 end -define sys_setpriority 141 end -define sys_sched_setparam 142 end -define sys_sched_getparam 143 end -define sys_sched_setscheduler 144 end -define sys_sched_getscheduler 145 end -define sys_sched_get_priority_max 146 end -define sys_sched_get_priority_min 147 end -define sys_sched_rr_get_interval 148 end -define sys_mloc 149 end -define sys_munlock 150 end -define sys_mlockall 151 end -define sys_munlockall 152 end -define sys_vhangup 153 end -define sys_modify_ldt 154 end -define sys_pivot_root 155 end -define sys__sysctl 156 end -define sys_prctl 157 end -define sys_arch_prctl 158 end -define sys_adjtimex 159 end -define sys_setrlimit 160 end -define sys_chroot 161 end -define sys_sync 162 end -define sys_acct 163 end -define sys_settimeofday 164 end -define sys_mount 165 end -define sys_umount2 166 end -define sys_swapon 167 end -define sys_swapoff 168 end -define sys_reboot 169 end -define sys_sethostname 170 end -define sys_setdomainname 171 end -define sys_iopl 172 end -define sys_ioperm 173 end -define sys_create_module 174 end -define sys_init_module 175 end -define sys_delete_module 176 end - - -define write - sys_stdout sys_write syscall.4 drop -end - -define exit - sys_exit syscall.2 drop -end diff --git a/lib/std.marp b/lib/std.marp new file mode 100644 index 0000000..d44cccb --- /dev/null +++ b/lib/std.marp @@ -0,0 +1,191 @@ +define sys_stdin 0 end +define sys_stdout 1 end +define sys_stderr 2 end + +# Not all syscalls are defined here +define sys_read 0 end +define sys_write 1 end +define sys_open 2 end +define sys_close 3 end +define sys_stat 4 end +define sys_fstat 5 end +define sys_lstat 6 end +define sys_poll 7 end +define sys_lseek 8 end +define sys_mmap 9 end +define sys_mprotect 10 end +define sys_munmap 11 end +define sys_brk 12 end +define sys_rt_sigaction 13 end +define sys_rt_sigprocmask 14 end +define sys_rt_sigreturn 15 end +define sys_ioctl 16 end +define sys_pread64 17 end +define sys_pwrite64 18 end +define sys_readv 19 end +define sys_writev 20 end +define sys_access 21 end +define sys_pipe 22 end +define sys_select 23 end +define sys_sched_yield 24 end +define sys_mremap 25 end +define sys_msync 26 end +define sys_mincore 27 end +define sys_madvise 28 end +define sys_shmget 29 end +define sys_shmat 30 end +define sys_shmctl 31 end +define sys_dup 32 end +define sys_dup2 33 end +define sys_pause 34 end +define sys_nanosleep 35 end +define sys_getitimer 36 end +define sys_alarm 37 end +define sys_setitimer 38 end +define sys_getpid 39 end +define sys_sendfile 40 end +define sys_socket 41 end +define sys_connect 42 end +define sys_accept 43 end +define sys_sendto 44 end +define sys_recvfrom 45 end +define sys_sendmsg 46 end +define sys_recvmsg 47 end +define sys_shutdown 48 end +define sys_bind 49 end +define sys_listen 50 end +define sys_getsockname 51 end +define sys_getpeername 52 end +define sys_socketpair 53 end +define sys_setsockopt 54 end +define sys_getsockopt 55 end +define sys_clone 56 end +define sys_fork 57 end +define sys_vfork 58 end +define sys_execve 59 end +define sys_exit 60 end +define sys_wait4 61 end +define sys_kill 62 end +define sys_uname 63 end +define sys_semget 64 end +define sys_semop 65 end +define sys_semctl 66 end +define sys_shmdt 67 end +define sys_msgget 68 end +define sys_msgsnd 69 end +define sys_msgrcv 70 end +define sys_msgctl 71 end +define sys_fcntl 72 end +define sys_flock 73 end +define sys_fsync 74 end +define sys_fdatasync 75 end +define sys_truncate 76 end +define sys_ftruncate 77 end +define sys_getdents 78 end +define sys_getcwd 79 end +define sys_chdir 80 end +define sys_fchdir 81 end +define sys_rename 82 end +define sys_mkdir 83 end +define sys_rmdir 84 end +define sys_creat 85 end +define sys_link 86 end +define sys_unlink 87 end +define sys_symlink 88 end +define sys_readlink 89 end +define sys_chmod 90 end +define sys_fchmod 91 end +define sys_chown 92 end +define sys_fchown 93 end +define sys_lchown 94 end +define sys_umask 95 end +define sys_gettimeofday 96 end +define sys_getrlimit 97 end +define sys_getrusage 98 end +define sys_sysinfo 99 end +define sys_times 100 end +define sys_ptrace 101 end +define sys_getuid 102 end +define sys_syslog 103 end +define sys_getgid 104 end +define sys_setuid 105 end +define sys_setgid 106 end +define sys_geteuid 107 end +define sys_getegid 108 end +define sys_setpgid 109 end +define sys_getppid 110 end +define sys_getpgrp 111 end +define sys_setsid 112 end +define sys_setreuid 113 end +define sys_setregid 114 end +define sys_getgroups 115 end +define sys_setgroups 116 end +define sys_setresuid 117 end +define sys_getresuid 118 end +define sys_setresgid 119 end +define sys_getresgid 120 end +define sys_getpgid 121 end +define sys_setfsuid 122 end +define sys_setfsgid 123 end +define sys_getsid 124 end +define sys_capget 125 end +define sys_capset 126 end +define sys_rt_sigpending 127 end +define sys_rt_sigtimedwait 128 end +define sys_rt_sigqueueinfo 129 end +define sys_rt_sigsuspend 130 end +define sys_sigaltstack 131 end +define sys_utime 132 end +define sys_mknod 133 end +define sys_uselib 134 end +define sys_personality 135 end +define sys_ustat 136 end +define sys_statfs 137 end +define sys_fstatfs 138 end +define sys_sysfs 139 end +define sys_getpriority 140 end +define sys_setpriority 141 end +define sys_sched_setparam 142 end +define sys_sched_getparam 143 end +define sys_sched_setscheduler 144 end +define sys_sched_getscheduler 145 end +define sys_sched_get_priority_max 146 end +define sys_sched_get_priority_min 147 end +define sys_sched_rr_get_interval 148 end +define sys_mloc 149 end +define sys_munlock 150 end +define sys_mlockall 151 end +define sys_munlockall 152 end +define sys_vhangup 153 end +define sys_modify_ldt 154 end +define sys_pivot_root 155 end +define sys__sysctl 156 end +define sys_prctl 157 end +define sys_arch_prctl 158 end +define sys_adjtimex 159 end +define sys_setrlimit 160 end +define sys_chroot 161 end +define sys_sync 162 end +define sys_acct 163 end +define sys_settimeofday 164 end +define sys_mount 165 end +define sys_umount2 166 end +define sys_swapon 167 end +define sys_swapoff 168 end +define sys_reboot 169 end +define sys_sethostname 170 end +define sys_setdomainname 171 end +define sys_iopl 172 end +define sys_ioperm 173 end +define sys_create_module 174 end +define sys_init_module 175 end +define sys_delete_module 176 end + + +define write + sys_stdout sys_write syscall.4 drop +end + +define exit + sys_exit syscall.2 drop +end diff --git a/src/main.go b/src/main.go index 1765971..ed0f1dd 100644 --- a/src/main.go +++ b/src/main.go @@ -575,7 +575,8 @@ func main() { argv := os.Args; argc := len(argv); progname = argv[0] - suffix := ".ash" + suffix := ".marp" + sufLen := len(suffix) if argc != 2 { fmt.Fprintf(os.Stderr, "%s: error: expected one input file.\n", progname) @@ -583,12 +584,12 @@ func main() { } srcFile := argv[argc - 1] - if !strings.HasSuffix(srcFile, suffix) || len(srcFile) < 5 { - fmt.Fprintf(os.Stderr, "%s: error: invalid file format '%s'.\n", progname, srcFile) + if !strings.HasSuffix(srcFile, suffix) || len(srcFile) <= sufLen { + fmt.Fprintf(os.Stderr, "%s: error: invalid file name '%s'.\n", progname, srcFile) os.Exit(1) } - binFile := srcFile[:len(srcFile) - 4] + binFile := srcFile[:len(srcFile) - sufLen] assemFile := binFile + ".s" objFile := binFile + ".o" _, err := os.Stat(srcFile) -- cgit v1.2.3