Parser for tapir file and transformer. Started on generator.
This commit is contained in:
parent
e4b1daf0c2
commit
f0e2523a3d
3 changed files with 186 additions and 0 deletions
93
parser/src/main/jjtree/tapir.jjt
Executable file
93
parser/src/main/jjtree/tapir.jjt
Executable file
|
@ -0,0 +1,93 @@
|
|||
|
||||
PARSER_BEGIN(TapirParser)
|
||||
package nu.zoom.tapir.parser;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
public class TapirParser
|
||||
{
|
||||
}
|
||||
|
||||
PARSER_END(TapirParser)
|
||||
|
||||
// white space
|
||||
SKIP: {
|
||||
"\n"
|
||||
| "\t"
|
||||
| "\r"
|
||||
| " "
|
||||
}
|
||||
|
||||
TOKEN : {
|
||||
<OPENPARANTHESIS: "(">
|
||||
| <CLOSEPARANTHESIS: ")">
|
||||
| <TRANSITION: "->">
|
||||
| <SLASH: "/">
|
||||
| <COLON: ":">
|
||||
| <COMMA: ",">
|
||||
| <LETTER: [ "A"-"Z", "a"-"z" ]>
|
||||
| <IDENTIFIER: ( <LETTER>)+ >
|
||||
}
|
||||
|
||||
void path() :
|
||||
{Token t;}
|
||||
{
|
||||
t=<IDENTIFIER>{jjtThis.value = t.image;} <SLASH>
|
||||
}
|
||||
|
||||
void paths() :
|
||||
{}
|
||||
{
|
||||
path() (path())*
|
||||
}
|
||||
|
||||
void payloadFieldName() :
|
||||
{Token t;}
|
||||
{
|
||||
t=<IDENTIFIER>{jjtThis.value = t.image;}
|
||||
}
|
||||
|
||||
void payloadFieldType() :
|
||||
{Token t;}
|
||||
{
|
||||
t=<IDENTIFIER>{jjtThis.value = t.image;}
|
||||
}
|
||||
|
||||
void payloadField() :
|
||||
{}
|
||||
{
|
||||
payloadFieldName() <COLON> payloadFieldType()
|
||||
}
|
||||
|
||||
void payloadFields() :
|
||||
{}
|
||||
{
|
||||
payloadField() (<COMMA> payloadField() )*
|
||||
}
|
||||
|
||||
void handlerName() :
|
||||
{Token t;}
|
||||
{
|
||||
t=<IDENTIFIER>{jjtThis.value = t.image;}
|
||||
}
|
||||
|
||||
void handlerSpec() :
|
||||
{}
|
||||
{
|
||||
handlerName() <OPENPARANTHESIS> payloadFields() <CLOSEPARANTHESIS>
|
||||
}
|
||||
|
||||
void endpoint() :
|
||||
{}
|
||||
{
|
||||
paths() <TRANSITION> handlerSpec()
|
||||
}
|
||||
|
||||
SimpleNode endpoints() :
|
||||
{}
|
||||
{
|
||||
(endpoint() )*
|
||||
{ return jjtThis; }
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue