3

구문 강조 표시에 현재 google-code-prettify을 사용하고 있습니다. LLVM을 지원하지 않는 것 같습니다. 여기가 LLVM을 포맷 할 때의 모습입니다 :LLVM을 지원하는 HTML/JS/CSS 구문 형광펜

enter image description here

그것은 꽤 추한. LLVM을 지원하는 프런트 엔드 구문 형광펜이 있습니까?

+0

LLVM 플러그와 결합

  • 유액 그 내가 쓴 내 대답은 이제 구글 코드의 일부입니다 - prettify! 따라서 * LLVM 구문을 지원합니다. –

  • +0

    @NikhilDabas 너무 두려운 – jterrace

    답변

    3

    나는 LLVM TextMate Bundle project에서 LLVM 어셈블리 구문 강조를위한 패턴을 잡고 google-code-prettify에 대한 플러그인을 썼습니다. 여기

    PR['registerLangHandler'](
        PR['createSimpleLexer'](
         [ 
         // Whitespace 
         [PR['PR_PLAIN'],  /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], 
    
         // A double quoted, possibly multi-line, string. 
         [PR['PR_STRING'],  /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'], 
    
         // comment.llvm 
         [PR['PR_COMMENT'],  /^;[^\r\n]*/, null, ';'], 
         ], 
         [ 
         // llvm instructions 
         [PR['PR_KEYWORD'],  /^\b(?:add|alloca|and|ashr|bitcast|br|call|eq|exact|extractelement|extractvalue|fadd|fcmp|fdiv|fmul|fpext|fptosi|fptoui|fptrunc|free|frem|fsub|getelementptr|icmp|inbounds|indirectbr|insertelement|insertvalue|inttoptr|invoke|load|lshr|malloc|mul|ne|nsw|nuw|oeq|oge|ogt|ole|olt|one|or|ord|phi|ptrtoint|ret|sdiv|select|sext|sge|sgt|shl|shufflevector|sitofp|sle|slt|srem|store|sub|switch|trunc|udiv|ueq|uge|uge|ugt|ugt|uitofp|ule|ule|ult|ult|une|uno|unreachable|unwind|urem|va_arg|xor|zext)\b/, null], 
    
         // llvm keywords 
         [PR['PR_KEYWORD'],  /^\b(?:addrspace|alias|align|alignstack|alwaysinline|appending|asm|blockaddress|byval|c|cc|ccc|coldcc|common|constant|datalayout|declare|default|define|deplibs|dllexport|dllimport|except|extern_weak|external|fastcc|gc|global|hidden|inlinehint|inreg|internal|linkonce|linkonce_odr|metadata|module|naked|nest|noalias|nocapture|noimplicitfloat|noinline|noredzone|noreturn|nounwind|optsize|private|protected|ptx_device|ptx_kernel|readnone|readonly|section|sideeffect|signext|sret|ssp|sspreq|tail|target|thread_local|to|triple|uwtable|volatile|weak|weak_odr|x86_fastcallcc|x86_stdcallcc|zeroext)\b/, null], 
    
         // variable.llvm 
         [PR['PR_TYPE'],  /^\s(?:[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*)/], 
    
         // variable.language.llvm 
         [PR['PR_TYPE'],  /^\s(?:[%]\d+)/], 
    
         // storage.type.language.llvm 
         [PR['PR_PLAIN'],  /^\b(?:i\d+\**)/], 
    
         // variable.metadata.llvm 
         [PR['PR_PLAIN'],  /^(!\d+)/], 
    
         // constant.numeric.float.llvm 
         [PR['PR_LITERAL'],  /^\b\d+\.\d+\b/], 
    
         // constant.numeric.integer.llvm 
         [PR['PR_LITERAL'],  /^\b(?:\d+|0(?:x|X)[a-fA-F0-9]+)\b/], 
         ]), 
        ['llvm', 'll']); 
    

    demo jsFiddle에 대한 링크 및 데모 페이지와 README와 Gist 있습니다.

    +0

    +1 될 겁니다. 당신이 나를 위해 regexes을 이식한다면 +150은 당신 것입니다 – jterrace

    +0

    제가 이식시에 총을 맞았습니다 : http://jsfiddle.net/eaPg6/ - 저는 어떤 LLVM 전문가도 아니고, 실제 LLVM 코드로 시도해 볼 수 있습니까? ? –

    +0

    사소한 업데이트 : http://jsfiddle.net/eaPg6/2/ –

    0

    LLVM이 다소 모호한 프로그래밍 언어라는 점을 감안할 때 특별히 고안된 구문 형광펜을 찾는 것은 의심 스럽습니다. 그러나 그것이 당신이 조금 속일 수는 없으며, 뭔가 효과가 있다는 것을 의미하지는 않습니다. SyntaxHighlighter를 사용하는 것이 좋습니다. http://alexgorbatchev.com/SyntaxHighlighter

    LLVM을 기본적으로 지원하지 않지만 다양한 다른 프로그래밍 언어에 대해 많은 내장 브러시를 제공합니다. 나는 이것을 시험해보고 LLVM 코드에 다른 브러시 (구문 형광펜)를 적용 해 보았습니다. 어떤 것은 꽤 잘 어울리는 반면 다른 것들은 당신이 보여준 예에서와 같이 꽤 평범한 것처럼 보일 것입니다.

    here으로 보시면 많은 비공식적 인 브러시도 존재합니다. SyntaxHighlighter를 사용하면 이점이 있습니다. LLVM 용 브러시가 설계된 경우 (또는 직접 설계하기로 결정한 경우) 구현하기가 간단합니다.

    행운을 빈다.

    0

    당신이 파이썬을 사용하고 있기 때문에 당신이 리눅스 녀석인지 모르겠다. Emacs와 Vim은 LLVM 구문 강조를 지원하는 것 같습니다. http://llvm.org/docs/GettingStarted.html을 참조하십시오. 이들을 사용하지 않으려는 경우 다른 IDE 또는 편집기에서 제공되는 구문 파일 (일부 무언가와 함께)을 사용할 수 있습니다. 인터넷 검색을 통해 더 이상 당신을 도울 수 없습니다. 충분하지 않다면 성공에 성공합니다.

    1

    Pyments는 LLVM을 지원합니다. 파이썬 백엔드를 기반으로하며 사용자는 스타일을 선택할 수 있습니다.

    출력 모드 :

    • HTML
    • ANSI 시퀀스 (콘솔 출력) 패키지 minted
    • RTF

    http://pygments.org/demo/45402/

    +0

    하지만 화성을위한 서버 백엔드가 필요합니까? 전적으로 프론트 엔드 (JS) 접근 방식이 필요했습니다. – jterrace