Skip to content

Commit

Permalink
fix(devin-language): update syntax #101
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Mar 11, 2024
1 parent 1e4507a commit 1589eb1
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 9 deletions.
17 changes: 12 additions & 5 deletions exts/devin-lang/src/grammar/DevInLexer.flex
Expand Up @@ -22,12 +22,14 @@ import com.intellij.psi.TokenType;
%eof{ return;
%eof}

%s CONTEXT_BLOCK
%s AGENT_BLOCK
%s VARIABLE_BLOCK
%s COMMAND_BLOCK

IDENTIFIER=[a-zA-Z0-9]([_\-a-zA-Z0-9]*)
VARIABLE_ID=[a-zA-Z0-9]([_\-a-zA-Z0-9]*)
IDENTIFIER=[a-zA-Z0-9][_\-a-zA-Z0-9]*
VARIABLE_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
AGENT_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
COMMAND_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
REF_BLOCK=([$/@] {IDENTIFIER} )
TEXT_SEGMENT=[^$/@]+
NEWLINE=\n|\r\n
Expand All @@ -45,7 +47,7 @@ NEWLINE=\n|\r\n
%%
<YYINITIAL> {
"@" { yybegin(AGENT_BLOCK); return AGENT_START; }
"/" { yybegin(AGENT_BLOCK); return COMMAND_START; }
"/" { yybegin(COMMAND_BLOCK); return COMMAND_START; }
"$" { yybegin(VARIABLE_BLOCK); return VARIABLE_START; }

{TEXT_SEGMENT} { return TEXT_SEGMENT; }
Expand All @@ -54,7 +56,12 @@ NEWLINE=\n|\r\n
}

<AGENT_BLOCK> {
{IDENTIFIER} { yybegin(YYINITIAL); return IDENTIFIER; }
{IDENTIFIER} { yybegin(YYINITIAL); return AGENT_ID; }
[^] { return TokenType.BAD_CHARACTER; }
}

<COMMAND_BLOCK> {
{COMMAND_ID} { yybegin(YYINITIAL); return COMMAND_ID; }
[^] { return TokenType.BAD_CHARACTER; }
}

Expand Down
4 changes: 3 additions & 1 deletion exts/devin-lang/src/test/testData/parser/BasicTest.devin
@@ -1 +1,3 @@
你好 @hello-world sm
你好 @hello-world sm
解释一下代码 $selection
/agent dothign somet
13 changes: 10 additions & 3 deletions exts/devin-lang/src/test/testData/parser/BasicTest.txt
Expand Up @@ -2,6 +2,13 @@ DevInFile
PsiElement(DevInTokenType.TEXT_SEGMENT)('你好 ')
DevInUsedImpl(USED)
PsiElement(DevInTokenType.AGENT_START)('@')
DevInAgentIdImpl(AGENT_ID)
PsiElement(DevInTokenType.IDENTIFIER)('hello-world')
PsiElement(DevInTokenType.TEXT_SEGMENT)(' sm')
PsiElement(DevInTokenType.AGENT_ID)('hello-world')
PsiElement(DevInTokenType.TEXT_SEGMENT)(' sm\n解释一下代码 ')
DevInUsedImpl(USED)
PsiElement(DevInTokenType.VARIABLE_START)('$')
PsiElement(DevInTokenType.VARIABLE_ID)('selection')
PsiElement(DevInTokenType.TEXT_SEGMENT)('\n')
DevInUsedImpl(USED)
PsiElement(DevInTokenType.COMMAND_START)('/')
PsiElement(DevInTokenType.COMMAND_ID)('agent')
PsiElement(DevInTokenType.TEXT_SEGMENT)(' dothign somet')

0 comments on commit 1589eb1

Please sign in to comment.