summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-01-01 19:40:40 +0100
committerGeorg Brandl <georg@python.org>2010-01-01 19:40:40 +0100
commit728996fdd49c373c5c1185f20710d79d713456a3 (patch)
tree22a1a32bbe19b03567b4b70ab5512ab485481be7
parentc2d1683ba6e7cea36d5f258cef5f271e47d190e1 (diff)
downloadpygments-728996fdd49c373c5c1185f20710d79d713456a3.tar.gz
Fixed LLVM lexer identifier syntax and added new keywords (#442).
-rw-r--r--CHANGES2
-rw-r--r--pygments/lexers/asm.py88
2 files changed, 56 insertions, 34 deletions
diff --git a/CHANGES b/CHANGES
index 6729055b..b82f2c95 100644
--- a/CHANGES
+++ b/CHANGES
@@ -30,6 +30,8 @@ Version 1.2
- Added the Monokai style (#453).
+- Fixed LLVM lexer identifier syntax and added new keywords (#442).
+
- Fixed the PythonTracebackLexer to handle non-traceback data in header or
trailer, and support more partial tracebacks that start on line 2 (#437).
diff --git a/pygments/lexers/asm.py b/pygments/lexers/asm.py
index d1de1ef1..e574a59b 100644
--- a/pygments/lexers/asm.py
+++ b/pygments/lexers/asm.py
@@ -199,7 +199,7 @@ class LlvmLexer(RegexLexer):
#: optional Comment or Whitespace
string = r'"[^"]*?"'
- identifier = r'([a-zA-Z$._][a-zA-Z$._0-9]*|' + string + ')'
+ identifier = r'([-a-zA-Z$._][-a-zA-Z$._0-9]*|' + string + ')'
tokens = {
'root': [
@@ -211,14 +211,17 @@ class LlvmLexer(RegexLexer):
include('keyword'),
(r'%' + identifier, Name.Variable),#Name.Identifier.Local),
- (r'@' + identifier, Name.Constant),#Name.Identifier.Global),
+ (r'@' + identifier, Name.Variable.Global),#Name.Identifier.Global),
(r'%\d+', Name.Variable.Anonymous),#Name.Identifier.Anonymous),
+ (r'@\d+', Name.Variable.Global),#Name.Identifier.Anonymous),
+ (r'!' + identifier, Name.Variable),
+ (r'!\d+', Name.Variable.Anonymous),
(r'c?' + string, String),
(r'0[xX][a-fA-F0-9]+', Number),
(r'-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?', Number),
- (r'[=<>{}\[\]()*.,]|x\b', Punctuation)
+ (r'[=<>{}\[\]()*.,!]|x\b', Punctuation)
],
'whitespace': [
(r'(\n|\s)+', Text),
@@ -226,39 +229,56 @@ class LlvmLexer(RegexLexer):
],
'keyword': [
# Regular keywords
- (r'(void|label|float|double|opaque'
- r'|to'
- r'|alias|type'
- r'|zeroext|signext|inreg|sret|noalias|noreturn|nounwind|nest'
- r'|module|asm|target|datalayout|triple'
- r'|true|false|null|zeroinitializer|undef'
- r'|global|internal|external|linkonce|weak|appending|extern_weak'
- r'|dllimport|dllexport'
- r'|ccc|fastcc|coldcc|cc|tail'
- r'|default|hidden|protected'
- r'|thread_local|constant|align|section'
- r'|define|declare'
-
- # Statements & expressions
- r'|trunc|zext|sext|fptrunc|fpext|fptoui|fptosi|uitofp|sitofp'
- r'|ptrtoint|inttoptr|bitcast|getelementptr|select|icmp|fcmp'
- r'|extractelement|insertelement|shufflevector'
- r'|sideeffect|volatile'
- r'|ret|br|switch|invoke|unwind|unreachable'
- r'|add|sub|mul|udiv|sdiv|fdiv|urem|srem|frem'
- r'|shl|lshr|ashr|and|or|xor'
- r'|malloc|free|alloca|load|store'
- r'|phi|call|va_arg|va_list'
-
- # new float ops
- r'|fadd|fsub|fmul'
-
- # Comparison condition codes for icmp
- r'|eq|ne|ugt|uge|ult|ule|sgt|sge|slt|sle'
- # Ditto for fcmp: (minus keywords mentioned in other contexts)
- r'|oeq|ogt|oge|olt|ole|one|ord|ueq|ugt|uge|une|uno'
+ (r'(begin|end'
+ r'|true|false'
+ r'|declare|define'
+ r'|global|constant'
+
+ r'|private|linker_private|internal|available_externally|linkonce'
+ r'|linkonce_odr|weak|weak_odr|appending|dllimport|dllexport'
+ r'|common|default|hidden|protected|extern_weak|external'
+ r'|thread_local|zeroinitializer|undef|null|to|tail|target|triple'
+ r'|deplibs|datalayout|volatile|nuw|nsw|exact|inbounds|align'
+ r'|addrspace|section|alias|module|asm|sideeffect|gc|dbg'
+
+ r'|ccc|fastcc|coldcc|x86_stdcallcc|x86_fastcallcc|arm_apcscc'
+ r'|arm_aapcscc|arm_aapcs_vfpcc'
+
+ r'|cc|c'
+
+ r'|signext|zeroext|inreg|sret|nounwind|noreturn|noalias|nocapture'
+ r'|byval|nest|readnone|readonly'
+
+ r'|inlinehint|noinline|alwaysinline|optsize|ssp|sspreq|noredzone'
+ r'|noimplicitfloat|naked'
+
+ r'|type|opaque'
+
+ r'|eq|ne|slt|sgt|sle'
+ r'|sge|ult|ugt|ule|uge'
+ r'|oeq|one|olt|ogt|ole'
+ r'|oge|ord|uno|ueq|une'
+ r'|x'
+
+ # instructions
+ r'|add|fadd|sub|fsub|mul|fmul|udiv|sdiv|fdiv|urem|srem|frem|shl'
+ r'|lshr|ashr|and|or|xor|icmp|fcmp'
+
+ r'|phi|call|trunc|zext|sext|fptrunc|fpext|uitofp|sitofp|fptoui'
+ r'fptosi|inttoptr|ptrtoint|bitcast|select|va_arg|ret|br|switch'
+ r'|invoke|unwind|unreachable'
+
+ r'|malloc|alloca|free|load|store|getelementptr'
+
+ r'|extractelement|insertelement|shufflevector|getresult'
+ r'|extractvalue|insertvalue'
r')\b', Keyword),
+
+ # Types
+ (r'void|float|double|x86_fp80|fp128|ppc_fp128|label|metadata',
+ Keyword.Type),
+
# Integer types
(r'i[1-9]\d*', Keyword)
]