Skip to content

Commit

Permalink
hare: convert from Go to XML lexer
Browse files Browse the repository at this point in the history
  • Loading branch information
triallax committed Nov 14, 2023
1 parent 1e6d554 commit 8a9632c
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 60 deletions.
104 changes: 104 additions & 0 deletions lexers/embedded/hare.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<lexer>
<config>
<name>Hare</name>
<alias>hare</alias>
<filename>*.ha</filename>
<mime_type>text/x-hare</mime_type>
</config>
<rules>
<state name="whitespace">
<rule pattern="^use\s.+;">
<token type="CommentPreproc"/>
</rule>
<rule pattern="@[a-z]+">
<token type="CommentPreproc"/>
</rule>
<rule pattern="\n">
<token type="Text"/>
</rule>
<rule pattern="\s+">
<token type="Text"/>
</rule>
<rule pattern="//.*\n">
<token type="CommentSingle"/>
</rule>
</state>
<state name="statements">
<rule pattern="&quot;">
<token type="LiteralString"/>
<push state="string"/>
</rule>
<rule pattern="`[^`]*`">
<token type="LiteralString"/>
</rule>
<rule pattern="'(\\[\\0abfnrtv&quot;']||\\(x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})|[^\\'])'">
<token type="LiteralStringChar"/>
</rule>
<rule pattern="(0|[1-9]\d*)\.\d+([eE][+-]?\d+)?(f32|f64)?">
<token type="LiteralNumberFloat"/>
</rule>
<rule pattern="(0|[1-9]\d*)([eE][+-]?\d+)?(f32|f64)">
<token type="LiteralNumberFloat"/>
</rule>
<rule pattern="0x[0-9a-fA-F]+\.[0-9a-fA-F]+([pP][+-]?\d+(f32|f64)?)?">
<token type="LiteralNumberFloat"/>
</rule>
<rule pattern="0x[0-9a-fA-F]+[pP][+-]?\d+(f32|f64)">
<token type="LiteralNumberFloat"/>
</rule>
<rule pattern="0x[0-9a-fA-F]+(z|[iu](8|16|32|64)?)?">
<token type="LiteralNumberHex"/>
</rule>
<rule pattern="0o[0-7]+(z|[iu](8|16|32|64)?)?">
<token type="LiteralNumberOct"/>
</rule>
<rule pattern="0b[01]+(z[iu](8|16|32|64)?)?">
<token type="LiteralNumberBin"/>
</rule>
<rule pattern="(0|[1-9]\d*)([eE][+-]?\d+)?(z|[iu](8|16|32|64)?)?">
<token type="LiteralNumberInteger"/>
</rule>
<rule pattern="[~!%^&amp;*+=|?:&lt;&gt;/-]|[ai]s\b|\.\.\.">
<token type="Operator"/>
</rule>
<rule pattern="[()\[\],.{};]">
<token type="Punctuation"/>
</rule>
<rule pattern="(_|align|break|const|continue|else|enum|export|for|if|return|size|static|struct|offset|union|fn|free|assert|abort|alloc|let|len|def|type|match|switch|case|append|delete|insert|defer|yield|vastart|vaarg|vaend)\b">
<token type="Keyword"/>
</rule>
<rule pattern="(str|rune|bool|int|uint|uintptr|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|null|void|nullable|valist|opaque|never)\b">
<token type="KeywordType"/>
</rule>
<rule pattern="(true|false)\b">
<token type="NameBuiltin"/>
</rule>
<rule pattern="[a-zA-Z_]\w*">
<token type="Name"/>
</rule>
</state>
<state name="string">
<rule pattern="&quot;">
<token type="LiteralString"/>
<pop depth="1"/>
</rule>
<rule pattern="\\([\\0abfnrtv&quot;']|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})">
<token type="LiteralStringEscape"/>
</rule>
<rule pattern="[^\\&quot;\n]+">
<token type="LiteralString"/>
</rule>
<rule pattern="\\">
<token type="LiteralString"/>
</rule>
</state>
<state name="root">
<rule>
<include state="whitespace"/>
</rule>
<rule>
<include state="statements"/>
</rule>
</state>
</rules>
</lexer>
60 changes: 0 additions & 60 deletions lexers/hare.go

This file was deleted.

0 comments on commit 8a9632c

Please sign in to comment.