DQ ZONE……:)

Project

Project Javacc

Buat yang lagi bikin compiler pake javcc,, ini ada sedikit hasil kerjaanku bareng temen2, sourcode ini merupakan tahap awal dalam pengerjaan..yang nantinya di compile pake javacc. typenya: *.j ,, yaa..walaupun mungkin ini tidak sempurna,, seditaknya dapat dijadikan gambaran,,atau masukan. jadi..bila ada kesalahan..moon maaf aj ya :)

type file: .j yang kemudian dicompile dengan javacc:

options {
JAVA_UNICODE_ESCAPE = true;
}

PARSER_BEGIN(MyParser)
public class MyParser {

public static void main(String args[]) throws ParseException {
MyParser parser = new MyParser(System.in);
parser.PROG();
System.out.println(“Done”);
}
}

PARSER_END(MyParser)

SKIP :
{
” “
| “\t”
| “\n”
| “\r”
| “\f”
}

SPECIAL_TOKEN :
{
<COMMENT1: “//” (~["\n","\r"])* (“\n”|”\r”|”\r\n”)>
| <COMMENT2: “/**” (~["*"])* “*” (“*” | (~["*","/"] (~["*"])* “*”))* “/”>
| <COMMENT3: “/*” (~["*"])* “*” (“*” | (~["*","/"] (~["*"])* “*”))* “/”>
}

TOKEN :
{
< KURBUK: “(” >
| < KURTUP: “)” >
| < BUK: “[" >
| < TUP: "]” >
| < RABUK: “{” >
| < RATUP: “}” >
| < TIKKOM: “;” >
| < TK: “.” >
| < SD: “=” >
| < KD: “<” >
| < PLUS: “+” >
| < MINUS: “-” >
| < KALI: “*” >
| < AND : “&&” >
| < TASERU : “!” >
| < BOOLEAN: “boolean” >
| < CLASS: “class” >
| < INTERFACE: “interface” >
| < ELSE: “else” >
| < EXTENDS: “extends” >
| < FALSE: “false” >
| < IF: “if” >
| < WHILE: “while” >
| < INT: “int” >
| < LENGTH: “length” >
| < MAIN: “main” >
| < NEW: “new” >
| < PUBLIC: “public” >
| < RETURN: “return” >
| < STATIC: “static” >
| < STRING: “String” >
| < THIS: “this” >
| < TRUE: “true” >
| < PRINT: “System.out.println” >
| < VOID: “void” >
}

TOKEN :
{
< INTLIT: ( ["1"-"9"] (["0"-"9"])* | “0″ ) >
}

TOKEN :
{
< ID: (["a"-"z"] | ["A"-"Z"]) ((["a"-"z"] | ["A"-"Z"])|<DIGIT>| “_”)* >
|

< #DIGIT: ["0"-"9"] >
}

void PROG() :
{}
{
MC() ( TD() )* <EOF>
}

void MC() :
{}
{
<CLASS> ID() <RABUK> <PUBLIC> <STATIC> <VOID> <MAIN> <KURBUK> <STRING> <BUK> <TUP> ID() <KURTUP> <RABUK> PRINTST() <RATUP> <RATUP>
}

void TD() :
{}
{
LOOKAHEAD(3)
CD()
|
CDEX()
}

void CD() :
{}
{
<CLASS> ID() <RABUK> ( VD() )*( MD() )* <RATUP>
}

void CDEX() :
{}
{
<CLASS> ID() <EXTENDS> ID() <RABUK> ( VD() )* ( MD() )* <RATUP>
}

void VD() :
{}
{
TYPE() ID() <TIKKOM>
}

void MD() :
{}
{
<PUBLIC> TYPE() ID() <KURBUK> ( FL() )? <KURTUP> <RABUK> ( LOOKAHEAD(2) VD() )* ( ST() )* <RETURN> EXP() <TIKKOM> <RATUP>
}

void FL() :
{}
{
FORMAL() ( FR() )*
}

void FORMAL() :
{}
{
TYPE() ID()
}

void FR() :
{}
{
“,” FORMAL()
}

void TYPE() :
{}
{
LOOKAHEAD(3)
ARRAYT()
|
BOOLEANT()
|
INTTYPE()
|
ID()
}

void ARRAYT() :
{}
{
<INT> <BUK> <TUP>
}

void BOOLEANT() :
{}
{
<BOOLEAN>
}

void INTTYPE() :
{}
{
<INT>
}

void ST() :
{}
{
LOOPST()
|
LOOKAHEAD(2)
SDST()
|
LOOKAHEAD(2)
ARRAYST()
|
IFST()
|
WHILEST()
|
PRINTST()
}

void LOOPST() :
{}
{
<RABUK> ( ST() )* <RATUP>
}

void SDST() :
{}
{
ID() <SD> EXP() <TIKKOM>
}

void ARRAYST() :
{}
{
ID() <BUK> EXP() <TUP> <SD> EXP() <TIKKOM>
}

void IFST() :
{}
{
<IF> <KURBUK> EXP() <KURTUP> ST() <ELSE> ST()
}

void WHILEST() :
{}
{
<WHILE> <KURBUK> EXP() <KURTUP> ST()
}

void PRINTST() :
{}
{
<PRINT> <KURBUK> EXP() <KURTUP> <TIKKOM>
}

void EXP() :
{}
{
LOOKAHEAD( EX1() <AND> )ANDEXP()
|
LOOKAHEAD( EX1() <KD> )KDEXP()
|
LOOKAHEAD( EX1() <PLUS> )PLUSEXP()
|
LOOKAHEAD( EX1() <MINUS> )MINUSEXP()
|
LOOKAHEAD( EX1() <KALI> )KALIEXP()
|
LOOKAHEAD( EX1() <BUK> )ARRAYEXP2()
|
LOOKAHEAD( EX1() <TK> <LENGTH> )ARRAYLENGTH()
|
LOOKAHEAD( EX1() <TK> ID() <KURBUK> )IDEXLIST()
|
EX1()
}

void ANDEXP() :
{}
{
EX1() <AND> EX1()
}

void KDEXP() :
{}
{
EX1() <KD> EX1()
}

void PLUSEXP() :
{}
{
EX1() <PLUS> EX1()
}

void MINUSEXP() :
{}
{
EX1() <MINUS> EX1()
}

void KALIEXP() :
{}
{
EX1() <KALI> EX1()
}

void ARRAYEXP2() :
{}
{
EX1() <BUK> EX1() <TUP>
}

void ARRAYLENGTH() :
{}
{
EX1() <TK> <LENGTH>
}

void IDEXLIST() :
{}
{
EX1() <TK> ID() <KURBUK> ( EXLIST() )? <KURTUP>
}

void EXLIST() :
{}
{
EXP() ( EXREST() )*
}

void EXREST() :
{}
{
“,” EXP()
}

void EX1() :
{}
{
INT_LIT()
|
TRUE_LIT()
|
FALSE_LIT()
|
ID()
|
THISEXP()
|
LOOKAHEAD(3)
ARRAYEXP()
|
NEWIDEXP()
|
TASERUEXP()
|
BUKTUPEXP()
}

void INT_LIT() :
{}
{
<INTLIT>
}

void TRUE_LIT() :
{}
{
<TRUE>
}

void FALSE_LIT() :
{}
{
<FALSE>
}

void ID() :
{}
{
<ID>
}

void THISEXP() :
{}
{
<THIS>
}

void ARRAYEXP() :
{}
{
<NEW> <INT> <BUK> EXP() <TUP>
}

void NEWIDEXP() :
{}
{
<NEW> ID() <KURBUK> <KURTUP>
}

void TASERUEXP() :
{}
{
<TASERU> EXP()
}

void BUKTUPEXP() :
{}
{
<KURBUK> EXP() <KURTUP>
}

2 Comments

2 responses so far ↓

Leave a Comment

  • Hi… ALL…..

    it's my weblog ;p

    Adalah seorang insan manusia yang hidup dimuka bumi ini. Mencari jati dirinya..menggapai mimpi.. meraih cita.. dan menjemput impian.. Dia hanyalah seorang insan manusia biasa, yang tak luput dari salah. Mencoba tuk berbagi dengan sesama dengan tulisannya. Untuk seluruh umat manusia di muka bumi ini... :)
  • Tentang Qu!
  • c

  • Archives

  • Link My Friend’s

  • Denny
  • Denny'2
  • Fachri
  • Wawan
  • Tami
  • Rahmat
  • Mitchel
  • Rahman
  • Digit
  • Suci
  • Rafi
  • Choki2
  • Agastya
  • DeWe
  • Zulkarnaen
  • DiLLa
  • LaLa
  • rosalina kah?
  • Recent Posts

  • Recent Comments

    mahardi on Iseng intip FOTO di FACEB…
    maumau on Iseng intip FOTO di FACEB…
    Denny on cuma mo nulis doank…
    mahardi on Project
    najmasign on Project
  • Halaman

  • RSS My Mood

  • Kalender

    November 2009
    M T W T F S S
    « Jul    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30  
  • Category Cloud

    "OOT" Catatanku Cuap-Cuap joomla lyrics My inspiration
  • Lokasi Pengunjung :

  • Yang Dateng

    Locations of visitors to this page

  • Spam Blocked





  • Dq Keren's Facebook profile

  • Meta

  • Blog Stats

  • Bgaimana menurut anda tentang tampilan dan isi web ini???

    1) Sangat bagus
    2) Bagus
    3) Lumayan bagus
    4) Jelek
    5) Jelek sekali

    View Results
  • shoutbox

    Shoutbox


    My blog is worth $1,129.08.
    How much is your blog worth?



    I Support IGOS Summit 2

    Ubuntu

    penguin!
    Pesta Blogger 2008
  • Halaman Utama

  • Back to HOME

  • sitemeter

    Site Meter