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 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