Welcome to MiSC
Mini Sharp C Language
What is MiSC
MiSC is a simple 'C' compiler written in Java. With MiSC you are able to write
some simple programs, which are directly executable on real Sharp MZ-700/MZ-800
or in appropriate emulator. One of the emulators is reachable on
http://mz-800.hyperlink.cz.
Another good Sharp MZ-800 site is
http://MZunity.hyperlink.cz.
How To Use MiSC
MiSC has very simple graphic user inteface, so it is very easy to use it.
When you start the application with batch file "go.bat", you will see main
control panel. It lets you
Load a file with source code
Change output file name in Options
When you load the file with source code, another window appears. It is the
standard ouptut of MiSC. Here you will be informed about program's activity.
Language Support
MiSC supports some of the commonly used constructions in ANSI C. For syntax
overview, please see section MiSC Grammar.
How to use MiSC output file with MZ emulator
It is very simple. Execute MZ emulator. Blue screen should appear in emulator
window. Then press "C" key on your keyboard. From File dialog choose MiSC output
file and load it. Now your C program runs.
Grammar
Here you can see supported syntax construction. The grammar is in Czech and
contains atributes.
Program -> Deklarace Funkce Program.su=Funkce.su
-> Funkce Program.su=Funkce.su
Deklarace -> Typ ident ( putProm ) D2 putProm.did=ident.sid
Typ -> int
D2 -> = D2' D3
-> D3
D2' -> cislo
-> ident
D3 -> ; D4
-> , ident ( putProm ) D2 putProm.did=ident.sid
D4 -> epsilon
-> Deklarace
Vyraz -> T E' Vyraz.su=E'.su; E'.du=T.su
E' -> + T E' T0'.su=T1'.su; T1'.du=new BinOp('+',T0.du,F.su)
-> - T E' T0'.su=T1'.su; T1'.du=new BinOp('-',T0.du,F.su)
-> epsilon T'.su=T'.du
T -> FT' T'.du=F.su; T.su=T'.su
T' -> * F T' T0'.su=T1'.su; T1'.du=new BinOp('*',T0.du,F.su)
-> / F T' -- not supported --
-> epsilon T'.su=T'.du
F -> ident F.su=new Ident(ident.sid)
-> cislo F.su=new Cislo(cislo.shod)
-> ( Vyraz ) F.su=Vyraz.su
Funkce -> void ident ( ) SlozPrikaz Funkce.su=new Funkce(SlozPrikaz.su)
SLozPrikaz -> { Prikaz Sloz2 } SlozPrikaz.su=new Seznam(Prikaz.su,SLoz2.su)
Sloz2 -> Prikaz Sloz2 Sloz20.su=new Seznam(Prikaz.su,Sloz21.su)
-> epsilon Sloz2.su=new Empty()
Prikaz -> ; Prikaz.su=new Empty()
-> SLozPrikaz Prikaz.su=SlozPrikaz.su
-> Prirazeni ; Prikaz.su=Prirazeni.su
-> Print Prikaz.su=Print.su
-> If Prikaz.su=If.su
-> While Prikaz.su=While.su
-> For Prikaz.su=For.su
-> epsilon Prikaz.su=new Empty()
Prirazeni -> ident = Vyraz Prirazeni.su=new Prirazeni(getAdr(ident.sid),Vyraz.su)
Print -> printf ( Print2 Print.su=Print2.su
Print2 -> string ) ; Print2.su=new PrintS(string.shod)
-> ident ) ; Print2.su=new Print(Vyraz.su)
If -> if ( Podm ) Prikaz If2 If.su=new If(Podm.su,Prikaz.su,If2.su)
If2 -> else Prikaz If2.su=Prikaz.su
-> epsilon If2.su=new Empty()
Podm -> ident Podm2 Podm.su=Podm2.su; Podm2.did=ident.sid
Podm2 -> Porovnani Vyraz Podm2.su=new BinOp(Porovnani.sid,Podm2.did,Vyraz.su)
-> epsilon -- not supported --
While -> while ( Podm ) Prikaz While.su=new While(Podm.su,Prikaz.su)
For -> for ( Prirazeni ; For2 For.su=For2.su; For2.du=Prirazeni.su
For2 -> ; For3 For2.su=For3.su; For3.d1=For2.du; For3.d2=new Empty()
-> Podm ; For3 For2.su=For3.su; For3.d1=For2.du; For3.d2=Podm.su
For3 -> Prirazeni ) Prikaz For3.su=new For(For3.d1,For3.d2,Prirazeni.su,Prikaz.su)
-> ) Prikaz For3.su=new For(For3.d1,For3.d2,new Empty(),Prikaz.su)
Porovnani -> == Porovnani.sid=ROVNO
-> != Porovnani.sid=NEROVNO
-> >= Porovnani.sid=VETSIROVNO
-> <= Porovnani.sid=MENSIROVNO
-> > Porovnani.sid=VETSI
-> < Porovnani.sid=MENSI
Contact
You can write your comments to author.
Copyright 2000-2001 Pavel Vanek