Parser for tapir file and transformer. Started on generator.

This commit is contained in:
Johan Maasing 2025-03-15 21:59:16 +01:00
parent e4b1daf0c2
commit f0e2523a3d
Signed by: johan
GPG key ID: FFD31BABEE2DEED2
3 changed files with 186 additions and 0 deletions

View 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; }
}