Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions gen/oap/application/plugin/gen/parser/OapParser.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

970 changes: 490 additions & 480 deletions gen/oap/application/plugin/gen/parser/_OapLexer.java

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion gen/oap/application/plugin/gen/psi/OapDotRemote.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions gen/oap/application/plugin/gen/psi/impl/OapDotRemoteImpl.java

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 10 additions & 3 deletions grammars/_OapLexer.flex
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])*
%state INCLUDE
%state DEPENDS_ON, DEPENDS_ON_IN
%state CONFIGURATIONS, CONFIGURATIONS_OBJECTS, CONFIGURATIONS_OBJECT, CONFIGURATIONS_OBJECT_LOADER, CONFIGURATIONS_OBJECT_CONFIG
%state SERVICES, SERVICES_IN, SERVICES_SERVICE, SERVICES_SERVICE_REMOTE
%state SERVICES, SERVICES_IN, SERVICES_SERVICE, SERVICES_SERVICE_REMOTE, SERVICES_SERVICE_REMOTE_DOT_NAME
%state SERVICES_SERVICE_PARAMETERS
%state SERVICES_SERVICE_WS_SERVICE, SERVICES_SERVICE_WS_SERVICE_DOT_PATH
%state SERVICES_SERVICE_WS_HANDLER, SERVICES_SERVICE_WS_HANDLER_DOT_PATH
Expand Down Expand Up @@ -250,7 +250,7 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])*
"listen" { yypushState(LISTEN); return OAP_ID_LISTEN; }
"link" { yypushState(LISTEN); return OAP_ID_LINK; }
"parameters" { yypushState(SERVICES_SERVICE_PARAMETERS); return OAP_ID_PARAMETERS; }
"remote" { yybegin(SERVICES_SERVICE_REMOTE); return OAP_ID_REMOTE; }
"remote" { yypushState(SERVICES_SERVICE_REMOTE); return OAP_ID_REMOTE; }
"ws-service" { yypushState(SERVICES_SERVICE_WS_SERVICE); return OAP_ID_WS_SERVICE; }
"ws-handler" { yypushState(SERVICES_SERVICE_WS_HANDLER); return OAP_ID_WS_HANDLER; }
"supervision" { yypushState(SERVICES_SERVICE_SUPERVISION); return OAP_ID_SUPERVISION; }
Expand All @@ -259,15 +259,22 @@ KEY_NAME=[:jletter:] ([:jletterdigit:]|[-/])*
{NEXTLINE} { return WHITE_SPACE; }
}
<SERVICES_SERVICE_REMOTE> {
"." { yybegin(SERVICES_SERVICE_REMOTE_DOT_NAME); return OAP_DOT; }
"{" { return OAP_LEFTBRACE; }
"}" { yybegin(SERVICES_SERVICE); return OAP_RIGHTBRACE; }
"}" { yypopState(); return OAP_RIGHTBRACE; }
"url" { yypushState(KEY_VALUE_STRING); return OAP_ID_URL; }
"name" { yypushState(_VALUE_REFERENCE); return OAP_ID_NAME; }
"timeout" { yypushState(KEY_VALUE_STRING); return OAP_ID_TIMEOUT; }

{WHITE_SPACE} { return WHITE_SPACE; }
{NEXTLINE} { return WHITE_SPACE; }
}
<SERVICES_SERVICE_REMOTE_DOT_NAME> {
"name" { yybegin(_VALUE_REFERENCE); return OAP_ID_NAME; }

{WHITE_SPACE} { return WHITE_SPACE; }
{NEXTLINE} { yypopState(); return WHITE_SPACE; }
}
<SERVICES_SERVICE_WS_SERVICE> {
"." { yybegin(SERVICES_SERVICE_WS_SERVICE_DOT_PATH); return OAP_DOT; }
"{" { return OAP_LEFTBRACE; }
Expand Down
2 changes: 1 addition & 1 deletion grammars/oap.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ module_services_service_remote ::= 'remote' (&'.' dot_remote | remote_object ) {
pin=1
implements="oap.application.plugin.psi.OapKeyValuePairWithIndentNormal"
}
dot_remote ::= '.' remote_name
dot_remote ::= '.' remote_name {pin=1}
remote_object ::= '{' remote_entries '}' {pin=1}
remote_entries ::= (&'name' remote_name | &'timeout' remote_timeout | &'url' remote_url )*

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,10 @@ class OapParserTest : ParsingTestCase("parser", "oap", OapParserDefinition()) {
doTest(false)
}

fun testRemoteDotName() {
doTest(false)
}

fun testRemoteNameError() {
doTest(true)
}
Expand Down
8 changes: 8 additions & 0 deletions testdata/parser/RemoteDotName.oap
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name = RemoteDotName

services {
remote-client {
implementation = oap.remote.application.RemoteClient
remote.name = <modules.oap-module-with-remoting.remote-service>
}
}
57 changes: 57 additions & 0 deletions testdata/parser/RemoteDotName.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
OAP_FILE
OAP_MODULE_NAME_PAIR
PsiElement(name)('name')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
OAP_MODULE_NAME
PsiElement(key_value)('RemoteDotName')
PsiWhiteSpace('\n\n')
OAP_MODULE_SERVICES
PsiElement(services)('services')
PsiWhiteSpace(' ')
PsiElement({)('{')
PsiWhiteSpace('\n')
PsiWhiteSpace(' ')
OAP_MODULE_SERVICES_SERVICE
OAP_SERVICE_NAME
PsiElement(key_name)('remote-client')
PsiWhiteSpace(' ')
PsiElement({)('{')
PsiWhiteSpace('\n')
PsiWhiteSpace(' ')
OAP_MODULE_SERVICES_SERVICE_IMPLEMENTATION
PsiElement(implementation)('implementation')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
OAP_CLASS_NAME_PSI
PsiElement(class_name)('oap.remote.application.RemoteClient')
PsiWhiteSpace('\n')
PsiWhiteSpace(' ')
OAP_MODULE_SERVICES_SERVICE_REMOTE
PsiElement(remote)('remote')
OAP_DOT_REMOTE
PsiElement(.)('.')
OAP_REMOTE_NAME
PsiElement(name)('name')
PsiWhiteSpace(' ')
PsiElement(=)('=')
PsiWhiteSpace(' ')
OAP_REFERENCE_MODULES_VALUE
PsiElement(<)('<')
OAP_REFERENCE_MODULES_VALUE_IN
OAP_REFERENCE_TYPE_MODULES
PsiElement(modules)('modules')
PsiElement(.)('.')
OAP_REFERENCE_MODULES_NAME
PsiElement(reference_value)('oap-module-with-remoting')
PsiElement(.)('.')
OAP_REFERENCE_MODULES_SERVICE_NAME
PsiElement(reference_value)('remote-service')
PsiElement(>)('>')
PsiWhiteSpace('\n')
PsiWhiteSpace(' ')
PsiElement(})('}')
PsiWhiteSpace('\n')
PsiElement(})('}')