Skip to content

Commit 5f8065c

Browse files
committed
refactor(devin-lang): split \n to new language #101
1 parent 9f33f89 commit 5f8065c

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

exts/devin-lang/src/grammar/DevInLexer.flex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ VARIABLE_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
3131
AGENT_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
3232
COMMAND_ID=[a-zA-Z0-9][_\-a-zA-Z0-9]*
3333
REF_BLOCK=([$/@] {IDENTIFIER} )
34-
TEXT_SEGMENT=[^$/@]+
34+
TEXT_SEGMENT=[^$/@\n]+
3535
NEWLINE=\n|\r\n
3636

3737
%{

exts/devin-lang/src/grammar/DevInParser.bnf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,14 @@
2222
]
2323
}
2424

25-
DevInFile ::= (used | TEXT_SEGMENT | CODE_FENCE | NEWLINE)*
25+
DevInFile ::= (used | code | TEXT_SEGMENT | NEWLINE)*
2626

2727
used ::= (
2828
AGENT_START AGENT_ID?
2929
| COMMAND_START COMMAND_ID?
3030
| VARIABLE_START VARIABLE_ID?
3131
)
32+
33+
code ::= (
34+
"```" IDENTIFIER TEXT_SEGMENT "```"
35+
)

exts/devin-lang/src/test/testData/parser/BasicTest.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ DevInFile
33
DevInUsedImpl(USED)
44
PsiElement(DevInTokenType.AGENT_START)('@')
55
PsiElement(DevInTokenType.AGENT_ID)('hello-world')
6-
PsiElement(DevInTokenType.TEXT_SEGMENT)(' sm\n解释一下代码 ')
6+
PsiElement(DevInTokenType.TEXT_SEGMENT)(' sm')
7+
PsiElement(DevInTokenType.NEWLINE)('\n')
8+
PsiElement(DevInTokenType.TEXT_SEGMENT)('解释一下代码 ')
79
DevInUsedImpl(USED)
810
PsiElement(DevInTokenType.VARIABLE_START)('$')
911
PsiElement(DevInTokenType.VARIABLE_ID)('selection')
10-
PsiElement(DevInTokenType.TEXT_SEGMENT)('\n')
12+
PsiElement(DevInTokenType.NEWLINE)('\n')
1113
DevInUsedImpl(USED)
1214
PsiElement(DevInTokenType.COMMAND_START)('/')
1315
PsiElement(DevInTokenType.COMMAND_ID)('agent')
Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,14 @@
11
DevInFile
2-
PsiElement(DevInTokenType.TEXT_SEGMENT)('```java\npublic class Main {\n public static void main(String[] args) {\n System.out.println("Hello, world!");\n }\n}\n```')
2+
PsiElement(DevInTokenType.TEXT_SEGMENT)('```java')
3+
PsiElement(DevInTokenType.NEWLINE)('\n')
4+
PsiElement(DevInTokenType.TEXT_SEGMENT)('public class Main {')
5+
PsiElement(DevInTokenType.NEWLINE)('\n')
6+
PsiElement(DevInTokenType.TEXT_SEGMENT)(' public static void main(String[] args) {')
7+
PsiElement(DevInTokenType.NEWLINE)('\n')
8+
PsiElement(DevInTokenType.TEXT_SEGMENT)(' System.out.println("Hello, world!");')
9+
PsiElement(DevInTokenType.NEWLINE)('\n')
10+
PsiElement(DevInTokenType.TEXT_SEGMENT)(' }')
11+
PsiElement(DevInTokenType.NEWLINE)('\n')
12+
PsiElement(DevInTokenType.TEXT_SEGMENT)('}')
13+
PsiElement(DevInTokenType.NEWLINE)('\n')
14+
PsiElement(DevInTokenType.TEXT_SEGMENT)('```')

0 commit comments

Comments
 (0)