aboutsummaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2012-12-14 12:15:40 +0100
committerDrahflow <drahflow@gmx.de>2012-12-14 12:15:40 +0100
commitf20e50a4e3ac3aeeac84358a68c253358f213667 (patch)
treeefed2b2c51fec59a0fae8f59845afa1b520e0204 /compiler
parent26c5b2be3918e7e27f9ae0616f3a3a629190b19c (diff)
Compiler Tokenizer working
Diffstat (limited to 'compiler')
-rwxr-xr-xcompiler/elymas.ey9
-rw-r--r--compiler/elymasGlobal.ey47
-rw-r--r--compiler/standard.ey7
3 files changed, 63 insertions, 0 deletions
diff --git a/compiler/elymas.ey b/compiler/elymas.ey
new file mode 100755
index 0000000..217614f
--- /dev/null
+++ b/compiler/elymas.ey
@@ -0,0 +1,9 @@
+#!/home/drahflow/elymas/interpreter/elymas
+
+"standard.ey" include
+"elymasGlobal.ey" include
+
+0 sys .argv _ len not { "Usage: ./elymas <input file.ey>" die } rep
+ * sys .file -010 .open executeFile
+
+# vim: syn=elymas
diff --git a/compiler/elymasGlobal.ey b/compiler/elymasGlobal.ey
new file mode 100644
index 0000000..13df759
--- /dev/null
+++ b/compiler/elymasGlobal.ey
@@ -0,0 +1,47 @@
+0 /TOKINT defv
+1 /TOKSTR defv
+2 /TOKID defv
+
+{ /f deff _1 /s defv regex { f } { s } ? * } /rxparse deff
+
+{ " " cat
+ { < /type defv /value defv > } /token deff
+ [ -01 { _ "" streq not } {
+ 0 /any defv { /f deff any { - } { { 1 =any f } rxparse } ? * } /parse deff
+
+ "^ (.*)" { } parse
+ "^#" { "" } parse
+ "^(\\d+) +(.*)" { TOKINT token -01 } parse
+ "\"(.*)" {
+ "" /str defv
+ { _ "^\"(.*)" regex { --0 0 } { 1 } ? * } {
+ 0 /strany defv { /f deff strany { - } { { 1 =strany f } rxparse } ? * } /strparse deff
+
+ "^\\\\\\\\(.*)" { str "\\" cat =str } strparse
+ "^\\\\n(.*)" { str "\n" cat =str } strparse
+ "^\\\\\"(.*)" { str "\"" cat =str } strparse
+ "^([^\"\\\\])(.*)" { str -01 cat =str } strparse
+ strany not { "Tokenization of string-liked failed" die } rep
+ } loop
+ str TOKSTR token -01
+ } parse
+ "^([^a-zA-Z ]+)([a-zA-Z]+) +(.*)" { -201 TOKSTR token " " -1203 cat cat } parse
+ "^([a-zA-Z]+|[^a-zA-Z ]+) +(.*)" { TOKID token -01 } parse
+ any not { "Tokenization failed" die } rep
+ } loop - ]
+} /tokenize deff
+
+{
+ dump
+} /interpretToken deff
+
+{ /input defv
+ "" {
+ 4096 input .readstr cat
+ _ "" streq not
+ } {
+ { _ "([^\\n]*)\\n(.*)" regex } { ---10 tokenize |interpretToken each } loop
+ } loop
+} /executeFile deff
+
+# vim: syn=elymas
diff --git a/compiler/standard.ey b/compiler/standard.ey
new file mode 100644
index 0000000..7c92e35
--- /dev/null
+++ b/compiler/standard.ey
@@ -0,0 +1,7 @@
+{ "}" | *
+ { /f deff /x defv
+ { x f }
+ } quoted { } { * } ? *
+} "}0" defq
+
+# vim: syn=elymas