diff options
| author | Drahflow <drahflow@gmx.de> | 2012-12-14 12:15:40 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2012-12-14 12:15:40 +0100 |
| commit | f20e50a4e3ac3aeeac84358a68c253358f213667 (patch) | |
| tree | efed2b2c51fec59a0fae8f59845afa1b520e0204 /compiler | |
| parent | 26c5b2be3918e7e27f9ae0616f3a3a629190b19c (diff) | |
Compiler Tokenizer working
Diffstat (limited to 'compiler')
| -rwxr-xr-x | compiler/elymas.ey | 9 | ||||
| -rw-r--r-- | compiler/elymasGlobal.ey | 47 | ||||
| -rw-r--r-- | compiler/standard.ey | 7 |
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 |
