diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /web/maple/mapleweb/maple.spider |
Initial commit
Diffstat (limited to 'web/maple/mapleweb/maple.spider')
-rw-r--r-- | web/maple/mapleweb/maple.spider | 196 |
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 + |