Skip to content

Commit

Permalink
feat(devin-lang): add support for agent properties #101
Browse files Browse the repository at this point in the history
The DevInLexer and DevInParser have been updated to support agent properties, which are specified using a colon (:) followed by a property value. This change also updates the grammar to support the new syntax and adds new tokens for COLON and PROPERTY_VALUE.
  • Loading branch information
phodal committed Mar 14, 2024
1 parent a7dd530 commit 632372d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
9 changes: 6 additions & 3 deletions exts/devin-lang/src/grammar/DevInLexer.flex
Expand Up @@ -33,7 +33,7 @@ import com.intellij.psi.TokenType;
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]*)(":" [._\-a-zA-Z0-9]*)?
AGENT_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
COMMAND_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
LANGUAGE_ID=[a-zA-Z0-9][_\-a-zA-Z0-9 .]*

Expand All @@ -42,6 +42,7 @@ CODE_CONTENT=[^\n]+
NEWLINE= \n | \r | \r\n

COLON=:
PROPERTY_VALUE=[^ :]+

%{
private boolean isCodeStart = false;
Expand Down Expand Up @@ -115,8 +116,10 @@ COLON=:
}

<AGENT_BLOCK> {
{AGENT_ID} { yybegin(YYINITIAL); return AGENT_ID; }
[^] { return TokenType.BAD_CHARACTER; }
{AGENT_ID} { return AGENT_ID; }
{COLON} { return COLON; }
{PROPERTY_VALUE} { return PROPERTY_VALUE; }
[^] { yypushback(1); yybegin(YYINITIAL); }
}

<COMMAND_BLOCK> {
Expand Down
8 changes: 5 additions & 3 deletions exts/devin-lang/src/grammar/DevInParser.bnf
Expand Up @@ -27,15 +27,17 @@
VARIABLE_ID = "VARIABLE_ID"
COMMAND_ID = "COMMAND_ID"
AGENT_ID = "AGENT_ID"
COLON = "COLON"
PROPERTY_VALUE = "PROPERTY_VALUE"
]
}

DevInFile ::= (used | code | TEXT_SEGMENT | NEWLINE)*

used ::= (
AGENT_START AGENT_ID?
| COMMAND_START COMMAND_ID?
| VARIABLE_START VARIABLE_ID?
AGENT_START AGENT_ID (COLON PROPERTY_VALUE)?
| COMMAND_START COMMAND_ID
| VARIABLE_START VARIABLE_ID
)

code ::= CODE_BLOCK_START LANGUAGE_ID? NEWLINE? code_contents? CODE_BLOCK_END?
Expand Down
4 changes: 3 additions & 1 deletion exts/devin-lang/src/test/testData/parser/BasicTest.txt
Expand Up @@ -19,7 +19,9 @@ DevInFile
PsiElement(DevInTokenType.NEWLINE)('\n')
DevInUsedImpl(USED)
PsiElement(DevInTokenType.AGENT_START)('@')
PsiElement(DevInTokenType.AGENT_ID)('file:Sample.file')
PsiElement(DevInTokenType.AGENT_ID)('file')
PsiElement(DevInTokenType.COLON)(':')
PsiElement(DevInTokenType.PROPERTY_VALUE)('Sample.file')
PsiElement(DevInTokenType.TEXT_SEGMENT)(' 从文件中读取内容')
PsiElement(DevInTokenType.NEWLINE)('\n')
PsiElement(DevInTokenType.TEXT_SEGMENT)('#system_id:51 传递参数到 story_id')

0 comments on commit 632372d

Please sign in to comment.