Skip to content

Repository files navigation

GoLexThatJava

This library is a Lexical Analysis for a minified java syntax. You can find more info about the target syntax in this Document

This tool uses a DFA (Deterministic Finite Automata) as a backend to efficiently tokenize the Code text.

The minjava BNF:

BNFdeMiniJAVAProgram::= MainClass ( ClassDeclaration )*<EOF>MainClass::="class"Identifier"{""public""static""void""main""(""String""[""]"Identifier")""{"Statement"}""}"ClassDeclaration::="class" Identifier ( "extends"Identifier )? "{" ( VarDeclaration )* ( MethodDeclaration )*"}"VarDeclaration::=TypeIdentifier";"MethodDeclaration::="public"TypeIdentifier"(" ( Type Identifier ( ","TypeIdentifier )* )? ")""{" ( VarDeclaration )* ( Statement )*"return"Expression";""}"Type::="int""[""]"|"boolean"|"int"|IdentifierStatement::="{" ( Statement )*"}"|"if""("Expression")"Statement"else"Statement|"while""("Expression")"Statement|"System.out.println""("Expression")"";"|Identifier"="Expression";"|Identifier"["Expression"]""="Expression";"Expression::= Expression ( "&&"|"<"|"+"|"-"|"*" ) Expression|Expression"["Expression"]"|Expression".""length"|Expression"."Identifier"(" ( Expression ( ","Expression )* )? ")"|<INTEGER_LITERAL>|<BOOLEAN_LITERAL>|Identifier|"this"|"new""int""["Expression"]"|"new"Identifier"("")"|"!"Expression|"("Expression")"Identifier::=<IDENTIFIER>

Ressources:

Execution example

Running this program on example.java yields:

> gorun *.go
---------- START ----------
classIDENTIFIER{
publicstaticvoidmain(String[] IDENTIFIER){
System.out.println(newIDENTIFIER().IDENTIFIER(INTEGER_LITERAL)); }
}
classIDENTIFIER {
intIDENTIFIER;
publicvoidIDENTIFIER(){
System.out.println(IDENTIFIER);
}
}
classIDENTIFIERextendsIDENTIFIER {
publicintIDENTIFIER(intIDENTIFIER){
intIDENTIFIER ;
SINGLE_LINE_COMMENTfor(intIDENTIFIER=INTEGER_LITERAL; IDENTIFIER<=IDENTIFIER; IDENTIFIER++){
IDENTIFIER = IDENTIFIER;
System.out.println(IDENTIFIER);
}
if (IDENTIFIER <= INTEGER_LITERAL)
IDENTIFIER = INTEGER_LITERAL ;
MULTI_LINE_COMMENTelseIDENTIFIER = IDENTIFIER * (this.IDENTIFIER(IDENTIFIER - INTEGER_LITERAL)) ;
returnIDENTIFIER ;
}
}
---------- END ----------

About

Lexical Syntaxer for a minified Java syntax

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages