diff --git a/README.md b/README.md index 88990e5..054a9d4 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ A plugin that adds NASM support for the IntelliJ Platform IDEs. # Features -Version v0.4-beta.4 pre-release +Version v0.4-beta.5 pre-release FPU, MMX, SSE, SSE2, SSE3, SSE4, AVX, AVX2, AVX512, Virtualization, and General instruction support. Syntax highlighting. @@ -23,9 +23,9 @@ Version v0.4-beta.4 pre-release - Goto Symbol - Debugger Support -# v0.4-beta.4 Changes +# v0.4-beta.5 Changes - Macro parameters can now be any expression or mnemonic. + Added size type prefix for registers. # Complete Changelog @@ -70,6 +70,7 @@ Version v0.4-beta.4 pre-release Began adding more conditions for conditional expressions. Added ability to use non-local to macro labels. Macro parameters can now be any expression or mnemonic. + Added size type prefix for registers. # License diff --git a/gen/com/nasmlanguage/parser/NASMParser.java b/gen/com/nasmlanguage/parser/NASMParser.java index 77fb5d1..fbb9351 100644 --- a/gen/com/nasmlanguage/parser/NASMParser.java +++ b/gen/com/nasmlanguage/parser/NASMParser.java @@ -2680,17 +2680,25 @@ private static boolean Address_0_0(PsiBuilder b, int l) { return true; } - // REGISTER + // SIZE_TYPE? REGISTER public static boolean Reg(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Reg")) return false; - if (!nextTokenIsSmart(b, REGISTER)) return false; + if (!nextTokenIsSmart(b, REGISTER, SIZE_TYPE)) return false; boolean r; - Marker m = enter_section_(b); - r = consumeTokenSmart(b, REGISTER); - exit_section_(b, m, REG, r); + Marker m = enter_section_(b, l, _NONE_, REG, "<reg>"); + r = Reg_0(b, l + 1); + r = r && consumeToken(b, REGISTER); + exit_section_(b, l, m, r, false, null); return r; } + // SIZE_TYPE? + private static boolean Reg_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "Reg_0")) return false; + consumeTokenSmart(b, SIZE_TYPE); + return true; + } + // SEGMENT_REGISTER public static boolean Seg(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Seg")) return false; diff --git a/gen/com/nasmlanguage/psi/NASMReg.java b/gen/com/nasmlanguage/psi/NASMReg.java index fe43184..c72e228 100644 --- a/gen/com/nasmlanguage/psi/NASMReg.java +++ b/gen/com/nasmlanguage/psi/NASMReg.java @@ -10,4 +10,7 @@ public interface NASMReg extends NASMExpr { @NotNull PsiElement getRegister(); + @Nullable + PsiElement getSizeType(); + } diff --git a/gen/com/nasmlanguage/psi/impl/NASMRegImpl.java b/gen/com/nasmlanguage/psi/impl/NASMRegImpl.java index ff6d44c..9ae2888 100644 --- a/gen/com/nasmlanguage/psi/impl/NASMRegImpl.java +++ b/gen/com/nasmlanguage/psi/impl/NASMRegImpl.java @@ -31,4 +31,10 @@ public PsiElement getRegister() { return findNotNullChildByType(REGISTER); } + @Override + @Nullable + public PsiElement getSizeType() { + return findChildByType(SIZE_TYPE); + } + } diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index 98c2b7c..bb223fe 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -1,13 +1,13 @@ <idea-plugin> <id>com.nasmlanguage</id> <name>NASM Assembly Language</name> - <version>0.4-beta.4</version> + <version>0.4-beta.5</version> <vendor email="aidankhoury@gmail.com" url="https://github.com/ajkhoury">Aidan Khoury</vendor> <description><![CDATA[ <h1>NASM assembly language for JetBrains IDEs</h1> <br> - <h2>Version v0.4-beta.4 pre-release</h2> + <h2>Version v0.4-beta.5 pre-release</h2> <br> <h3>Features</h3> <ul> @@ -72,6 +72,7 @@ <li>Began adding more conditions for conditional expressions.</li> <li>Added ability to use non-local to macro labels.</li> <li>Macro parameters can now be any expression or mnemonic.</li> + <li>Added size type prefix for registers.</li> </ul> ]]> </change-notes> diff --git a/src/com/nasmlanguage/NASM.bnf b/src/com/nasmlanguage/NASM.bnf index 993c36e..7aed5a7 100644 --- a/src/com/nasmlanguage/NASM.bnf +++ b/src/com/nasmlanguage/NASM.bnf @@ -424,7 +424,7 @@ ParenthesisNumericExpr ::= ROUND_L NumericExpr ROUND_R { pin(".*")=1 extends=Num NumericLiteral ::= ((SIZE_TYPE (BITWISE_NOT|MINUS|PLUS)?)? (BINARY|ZEROES|HEXADECIMAL|DECIMAL|CHARACTER)) { extends=Expr } Identifier ::= ID { extends=Expr mixin="com.nasmlanguage.psi.impl.NASMNamedElementImpl" implements="com.nasmlanguage.psi.NASMNamedElement" methods=[getName setName getNameIdentifier getReferences getPresentation] } LabelIdentifier ::= (SIZE_TYPE? (LBL|ID)) { extends=Expr } -Reg ::= REGISTER { extends=Expr } +Reg ::= SIZE_TYPE? REGISTER { extends=Expr } Seg ::= SEGMENT_REGISTER { extends=Expr } Str ::= STRING { extends=Expr } StructureField ::= STRUCT_FIELD { extends=Expr }