summaryrefslogtreecommitdiff
path: root/web/maple/mapleweb/maple.spider
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/maple/mapleweb/maple.spider
Initial commit
Diffstat (limited to 'web/maple/mapleweb/maple.spider')
-rw-r--r--web/maple/mapleweb/maple.spider196
1 files changed, 196 insertions, 0 deletions
diff --git a/web/maple/mapleweb/maple.spider b/web/maple/mapleweb/maple.spider
new file mode 100644
index 0000000000..c5406aabd0
--- /dev/null
+++ b/web/maple/mapleweb/maple.spider
@@ -0,0 +1,196 @@
+language MAPLE extension mpl
+
+module definition stmt use stmt
+token newline category ignore_scrap translation <>
+
+comment begin <"#"> end newline
+
+default translation <*> mathness no
+
+line begin <"#line"> end <>
+
+token pseudo_semi category terminator translation <"\\rx">
+
+token identifier category ident
+token number category numbr
+token { category slopen translation <"\\{">
+token } category slclose translation <"\\}">
+token [ category slopen tangleto <space-"\[">
+token ] category slclose tangleto <"\]"-space>
+token ( category open
+token ) category close
+
+#what to do with ' and ` and "??
+#token ` category backquote
+
+token ' category math tangleto <space-"'">
+token . category point
+token ; category terminator translation <";"-break_space>
+token : category terminator translation <":"-break_space>
+token , category comma translation <","-opt-1>
+token \ category backslash translation <"\\backslash">
+#tijdelijk: van vorige regel: tangleto <"\\">
+token := category assignment translation <":=">
+token $ category binop translation <"\\,\\$\\,">
+#token .. category binop translation <"..">
+token * category binop
+token ^ category binop
+token / category binop
+token <> category binop translation <"\\NEQ"> tangleto <"<>">
+token <= category binop translation <"\\leq">
+token >= category binop translation <"\\geq">
+token = category binop
+token < category binop
+token > category binop
+token ! category unop
+token + category unorbinop
+token - category unorbinop
+
+#ilk definitions
+ilk forstart_like category forstart
+ilk forbodystart_like category forbodystart
+ilk forbodyend_like category forbodyend
+ilk ifbegin_like category ifbegin
+ilk ifthen_like category ifthen
+ilk elif_like category elif
+ilk ifbody_like category ifbody
+ilk ifend_like category ifend
+ilk procedure_like category procedure
+ilk procextra_like category procextra
+ilk procend_like category procend
+ilk return_like category return
+ilk ident_like category ident
+
+default translation <"\\"-space-*-"\\"-space>
+
+ilk binop_like category binop
+
+reserved proc ilk procedure_like
+reserved end ilk procend_like
+reserved local ilk procextra_like
+reserved option ilk procextra_like
+reserved minus ilk binop_like
+
+reserved for ilk forstart_like
+reserved while ilk forstart_like
+reserved to ilk forstart_like
+reserved in ilk forstart_like
+reserved from ilk forstart_like
+reserved do ilk forbodystart_like
+reserved od ilk forbodyend_like
+reserved if ilk ifbegin_like
+reserved then ilk ifthen_like
+reserved elif ilk elif_like
+reserved else ilk ifbody_like
+reserved fi ilk ifend_like
+reserved RETURN ilk return_like
+reserved break ilk ident_like
+reserved next ilk ident_like
+#token category
+
+#production rules
+#? ignore_scrap --> #1
+
+#handling statements;
+<"$"> math <"$"> terminator --> stmt
+stmt <space> stmt --> stmt
+stmt terminator --> stmt
+ignore_scrap --> terminator
+terminator --> stmt
+
+#handling comments
+#comment newline --> newline
+#comment ? --> comment
+
+#handling idents and math etc.
+<force> return --> math
+ident --> math
+numbr --> math
+(unop|unorbinop|binop) math --> math
+math (unop|unorbinop|binop) --> math
+math math --> math
+math comma --> math
+math [ point point ] --> math binop
+math point --> math
+math assignment --> math
+<"$"> math <"$"> <space> terminator --> stmt
+
+
+#handlig forloops
+forstart <space> <"$"> math <"$"> <space> --> forstart
+forstart forstart --> forstart
+forstart <space> forbodystart <force-indent> --> forbodystart
+forbodystart stmt --> forbodystart
+<force> forbodystart <outdent-force> forbodyend terminator <force> --> stmt
+<force> forbodystart <outdent-force> forbodyend <force> --> stmt
+<force> forbodystart <space> <"$"> math <"$"> <outdent-force> forbodyend terminator <force> --> stmt
+<force> forbodystart <space> <"$"> math <"$"> <outdent> <force> forbodyend <force> --> stmt
+
+
+#handling ifstatements
+<force> ifbegin <space> <"$"> math <"$"> <space> ifthen <force-indent> --> ifbegin
+ifbegin stmt --> ifbegin
+ifbegin <outdent-force> ifend terminator <force> --> stmt
+ifbegin <outdent-force> ifend <force> --> stmt
+ifbegin <"$"> math <"$"> <outdent-force> ifend terminator <force> --> stmt
+ifbegin <"$"> math <"$"> <outdent-force> ifend <force> --> stmt
+
+ifbegin <outdent-force> ifbody <space> <indent> --> ifbegin
+ifbegin <space> <"$"> math <"$"> <outdent-force> ifbody <space> <indent> --> ifbegin
+
+elif <space> <"$"> math <"$"> <space> ifthen <force-indent> --> elif
+elif stmt --> elif
+elif <space> <"$"> math <"$"> <outdent-force> elif --> elif
+elif <outdent-force> elif --> elif
+elif <outdent-force> ifbody <space> <indent> --> elif
+elif <"$"> math <"$"> <outdent-force> ifbody <space> <indent> --> elif
+elif <"$"> math <"$"> <outdent-force> ifend terminator <force> --> elifend
+elif <"$"> math <"$"> <outdent-force> ifend <force> --> elifend
+elif <outdent-force> ifend terminator <force> --> elifend
+elif <outdent-force> ifend <force> --> elifend
+
+ifbegin <outdent-force> elifend --> stmt
+ifbegin <"$"> math <"$"> <outdent-force> elifend --> stmt
+
+#handling procedures
+
+<"$"> math <"$"> <force> <indent> procedure <"$"> math <"$"> <force> --> procedure
+procedure <force> procextra <space> stmt <force> --> procedure
+procedure <indent> stmt --> procbody
+procbody stmt --> procbody
+
+procbody <outdent> <force> procend terminator <big_force-outdent> --> stmt
+procbody <"$"> math <"$"> <outdent> <force> procend terminator <big_force-outdent> --> stmt
+
+procbody <outdent> <force> procend <big_force-outdent> --> stmt
+procbody <"$"> math <"$"> <outdent> <force> procend <big_force-outdent> --> stmt
+procedure <space> <indent> <"$"> math <"$"> <force> <outdent> procend terminator <big_force-outdent> --> stmt
+procedure <space> <indent> <"$"> math <"$"> <force> <outdent> procend <big_force-outdent> --> stmt
+
+#handling sets and lists
+open <"\\,"> close --> math
+open <"\\,"> math <"\\,"> close --> math
+slopen <"\\,"> slclose --> math
+slopen <"\\,"> math <"\\,"> slclose --> math
+
+#handling backslash
+math backslash math --> math
+backslash newline --> newline
+backslash backslash --> math
+backslash --> math
+
+#handling backquote
+#changefile makes '`' reading as string!
+
+
+macros begin
+\def\commentbegin{\#}
+\def\commentend{}
+\def\NEQ{\ne}
+\def\LL{\ll\,}
+\def\RR{\,\gg}
+\def\PS{\joinrel{+\equiv}}
+\let\rx\relax
+
+macros end
+