mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Add recognition and classification of WebAssembly (#3650)
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -851,3 +851,6 @@ | ||||
| [submodule "vendor/grammars/language-closure-templates"] | ||||
| 	path = vendor/grammars/language-closure-templates | ||||
| 	url = https://github.com/mthadley/language-closure-templates | ||||
| [submodule "vendor/grammars/language-webassembly"] | ||||
| 	path = vendor/grammars/language-webassembly | ||||
| 	url = https://github.com/Alhadis/language-webassembly | ||||
|   | ||||
| @@ -462,6 +462,8 @@ vendor/grammars/language-viml: | ||||
| vendor/grammars/language-wavefront: | ||||
| - source.wavefront.mtl | ||||
| - source.wavefront.obj | ||||
| vendor/grammars/language-webassembly: | ||||
| - source.webassembly | ||||
| vendor/grammars/language-xbase: | ||||
| - source.harbour | ||||
| vendor/grammars/language-xcompose: | ||||
|   | ||||
| @@ -2469,6 +2469,7 @@ Makefile: | ||||
|   - Makefile.frag | ||||
|   - Makefile.in | ||||
|   - Makefile.inc | ||||
|   - Makefile.wat | ||||
|   - makefile | ||||
|   - makefile.sco | ||||
|   - mkfile | ||||
| @@ -4693,6 +4694,20 @@ Web Ontology Language: | ||||
|   tm_scope: text.xml | ||||
|   ace_mode: xml | ||||
|   language_id: 394 | ||||
| WebAssembly: | ||||
|   type: programming | ||||
|   color: "#04133b" | ||||
|   extensions: | ||||
|   - ".wast" | ||||
|   - ".wat" | ||||
|   aliases: | ||||
|   - wast | ||||
|   - wasm | ||||
|   tm_scope: source.webassembly | ||||
|   ace_mode: lisp | ||||
|   codemirror_mode: commonlisp | ||||
|   codemirror_mime_type: text/x-common-lisp | ||||
|   language_id: 956556503 | ||||
| WebIDL: | ||||
|   type: programming | ||||
|   extensions: | ||||
|   | ||||
							
								
								
									
										248
									
								
								samples/Makefile/filenames/Makefile.wat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										248
									
								
								samples/Makefile/filenames/Makefile.wat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,248 @@ | ||||
| # | ||||
| #                     The FreeType Project LICENSE | ||||
| #                     ---------------------------- | ||||
| #  | ||||
| #                        Copyright 1996-1999 by | ||||
| #           David Turner, Robert Wilhelm, and Werner Lemberg | ||||
| #  | ||||
| #  | ||||
| #  | ||||
| # Introduction | ||||
| # ============ | ||||
| #  | ||||
| #   The FreeType  Project is distributed in  several archive packages; | ||||
| #   some of them may contain, in addition to the FreeType font engine, | ||||
| #   various tools and  contributions which rely on, or  relate to, the | ||||
| #   FreeType Project. | ||||
| #  | ||||
| #   This  license applies  to all  files found  in such  packages, and | ||||
| #   which do not  fall under their own explicit  license.  The license | ||||
| #   affects  thus  the  FreeType   font  engine,  the  test  programs, | ||||
| #   documentation and makefiles, at the very least. | ||||
| #  | ||||
| #   This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG | ||||
| #   (Independent JPEG  Group) licenses, which  all encourage inclusion | ||||
| #   and  use of  free  software in  commercial  and freeware  products | ||||
| #   alike.  As a consequence, its main points are that: | ||||
| #  | ||||
| #     o We don't promise that this software works.  However, we are be | ||||
| #       interested in any kind of bug reports. (`as is' distribution) | ||||
| #  | ||||
| #     o You can  use this software for whatever you  want, in parts or | ||||
| #       full form, without having to pay us. (`royalty-free' usage) | ||||
| #  | ||||
| #     o You may not pretend that  you wrote this software.  If you use | ||||
| #       it, or  only parts of it,  in a program,  you must acknowledge | ||||
| #       somewhere in your documentation  that you've used the FreeType | ||||
| #       code. (`credits') | ||||
| #  | ||||
| #   We  specifically  permit  and  encourage  the  inclusion  of  this | ||||
| #   software,  with  or without modifications, in commercial products, | ||||
| #   provided that all warranty or  liability claims are assumed by the | ||||
| #   product vendor. | ||||
| #  | ||||
| #  | ||||
| # Legal Terms | ||||
| # =========== | ||||
| #  | ||||
| # 0. Definitions | ||||
| # -------------- | ||||
| #  | ||||
| #   Throughout this license,  the terms `package', `FreeType Project', | ||||
| #   and  `FreeType  archive' refer  to  the  set  of files  originally | ||||
| #   distributed  by the  authors  (David Turner,  Robert Wilhelm,  and | ||||
| #   Werner Lemberg) as the `FreeType project', be they named as alpha, | ||||
| #   beta or final release. | ||||
| #  | ||||
| #   `You' refers to  the licensee, or person using  the project, where | ||||
| #   `using' is a generic term including compiling the project's source | ||||
| #   code as  well as linking it  to form a  `program' or `executable'. | ||||
| #   This  program is  referred to  as  `a program  using the  FreeType | ||||
| #   engine'. | ||||
| #  | ||||
| #   This  license applies  to all  files distributed  in  the original | ||||
| #   FreeType  archive,   including  all  source   code,  binaries  and | ||||
| #   documentation,  unless  otherwise  stated   in  the  file  in  its | ||||
| #   original, unmodified form as  distributed in the original archive. | ||||
| #   If you are  unsure whether or not a particular  file is covered by | ||||
| #   this license, you must contact us to verify this. | ||||
| #  | ||||
| #   The FreeType  project is copyright (C) 1996-1999  by David Turner, | ||||
| #   Robert Wilhelm, and Werner Lemberg.  All rights reserved except as | ||||
| #   specified below. | ||||
| #  | ||||
| # 1. No Warranty | ||||
| # -------------- | ||||
| #  | ||||
| #   THE FREETYPE ARCHIVE  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY | ||||
| #   KIND, EITHER EXPRESSED OR  IMPLIED, INCLUDING, BUT NOT LIMITED TO, | ||||
| #   WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR | ||||
| #   PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS | ||||
| #   BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO | ||||
| #   USE, OF THE FREETYPE PROJECT. | ||||
| #  | ||||
| #   As  you have  not signed  this license,  you are  not  required to | ||||
| #   accept  it.   However,  as  the FreeType  project  is  copyrighted | ||||
| #   material, only  this license, or  another one contracted  with the | ||||
| #   authors, grants you  the right to use, distribute,  and modify it. | ||||
| #   Therefore,  by  using,  distributing,  or modifying  the  FreeType | ||||
| #   project, you indicate that you understand and accept all the terms | ||||
| #   of this license. | ||||
| #  | ||||
| # 2. Redistribution | ||||
| # ----------------- | ||||
| #  | ||||
| #   Redistribution and use in source and binary forms, with or without | ||||
| #   modification, are permitted provided that the following conditions | ||||
| #   are met: | ||||
| #  | ||||
| #     o Redistribution  of source code  must retain this  license file | ||||
| #       (`licence.txt') unaltered; any additions, deletions or changes | ||||
| #       to   the  original   files  must   be  clearly   indicated  in | ||||
| #       accompanying  documentation.   The  copyright notices  of  the | ||||
| #       unaltered, original  files must be preserved in  all copies of | ||||
| #       source files. | ||||
| #  | ||||
| #     o Redistribution in binary form must provide a  disclaimer  that | ||||
| #       states  that  the software is based in part of the work of the | ||||
| #       FreeType Team,  in  the  distribution  documentation.  We also | ||||
| #       encourage you to put an URL to the FreeType web page  in  your | ||||
| #       documentation, though this isn't mandatory. | ||||
| #  | ||||
| #   These conditions  apply to any  software derived from or  based on | ||||
| #   the FreeType code, not just  the unmodified files.  If you use our | ||||
| #   work, you  must acknowledge us.  However,  no fee need  be paid to | ||||
| #   us. | ||||
| #  | ||||
| # 3. Advertising | ||||
| # -------------- | ||||
| #  | ||||
| #   The names of  FreeType's authors and contributors may  not be used | ||||
| #   to endorse or promote  products derived from this software without | ||||
| #   specific prior written permission. | ||||
| #    | ||||
| #   We suggest,  but do not require, that  you use one or  more of the | ||||
| #   following phrases to refer  to this software in your documentation | ||||
| #   or advertising  materials: `FreeType Project',  `FreeType Engine', | ||||
| #   `FreeType library', or `FreeType Distribution'. | ||||
| #  | ||||
| # 4. Contacts | ||||
| # ----------- | ||||
| #  | ||||
| #   There are two mailing lists related to FreeType: | ||||
| #  | ||||
| #     o freetype@freetype.org | ||||
| #  | ||||
| #       Discusses general use and applications of FreeType, as well as | ||||
| #       future and  wanted additions to the  library and distribution. | ||||
| #       If  you are looking  for support,  start in  this list  if you | ||||
| #       haven't found anything to help you in the documentation. | ||||
| #  | ||||
| #     o devel@freetype.org | ||||
| #  | ||||
| #       Discusses bugs,  as well  as engine internals,  design issues, | ||||
| #       specific licenses, porting, etc. | ||||
| #  | ||||
| #     o http://www.freetype.org | ||||
| #  | ||||
| #       Holds the current  FreeType web page, which will  allow you to | ||||
| #       download  our  latest  development  version  and  read  online | ||||
| #       documentation. | ||||
| #  | ||||
| #   You can also contact us individually at: | ||||
| #  | ||||
| #     David Turner      <david.turner@freetype.org> | ||||
| #     Robert Wilhelm    <robert.wilhelm@freetype.org> | ||||
| #     Werner Lemberg    <werner.lemberg@freetype.org> | ||||
| #  | ||||
| #  | ||||
| # --- end of license --- | ||||
| # | ||||
| # This file is part of the FreeType project. | ||||
| # | ||||
| # This builds the Watcom library with Watcom's wcc386 under OS/2. | ||||
| # | ||||
| # You'll need Watcom's wmake. | ||||
| # | ||||
| # | ||||
| # Invoke by "wmake -f arch\os2\Makefile.wat" when in the "lib" directory | ||||
| # | ||||
| # This will build "freetype\lib\libttf.lib" | ||||
|  | ||||
| ARCH = arch\os2 | ||||
| FT_MAKEFILE = $(ARCH)\Makefile.wat | ||||
| FT_MAKE = wmake -h | ||||
|  | ||||
|  | ||||
| .EXTENSIONS: | ||||
| .EXTENSIONS: .lib .obj .c .h | ||||
| .obj:.;.\extend;.\$(ARCH) | ||||
| .c:.;.\extend;.\$(ARCH) | ||||
| .h:.;.\extend;.\$(ARCH) | ||||
|  | ||||
| CC = wcc386 | ||||
|  | ||||
| CCFLAGS = /otexanl+ /s /w5 /zq -Iarch\os2 -I. -Iextend | ||||
|  | ||||
| TTFILE   = .\ttfile.c | ||||
| TTMEMORY = .\ttmemory.c | ||||
| TTMUTEX  = .\ttmutex.c | ||||
|  | ||||
| TTFILE_OBJ = ttfile.obj | ||||
| TTMEMORY_OBJ = ttmemory.obj | ||||
| TTMUTEX_OBJ = ttmutex.obj | ||||
|  | ||||
| PORT = $(TTFILE) $(TTMEMORY) $(TTMUTEX) | ||||
| PORT_OBJS = $(TTFILE_OBJ) $(TTMEMORY_OBJ) $(TTMUTEX_OBJ) | ||||
|  | ||||
| SRC_X = extend\ftxgasp.c extend\ftxkern.c  extend\ftxpost.c & | ||||
|         extend\ftxcmap.c extend\ftxwidth.c extend\ftxsbit.c & | ||||
|         extend\ftxgsub.c extend\ftxgpos.c  extend\ftxopen.c & | ||||
|         extend\ftxgdef.c | ||||
|  | ||||
| OBJS_X = extend\ftxgasp.obj extend\ftxkern.obj  extend\ftxpost.obj & | ||||
|          extend\ftxcmap.obj extend\ftxwidth.obj extend\ftxsbit.obj & | ||||
|          extend\ftxgsub.obj extend\ftxgpos.obj  extend\ftxopen.obj & | ||||
|          extend\ftxgdef.obj | ||||
|  | ||||
| SRC_M = ttapi.c     ttcache.c   ttcalc.c   ttcmap.c  & | ||||
|         ttgload.c   ttinterp.c  ttload.c   ttobjs.c  & | ||||
|         ttraster.c  ttextend.c  $(PORT) | ||||
|  | ||||
| OBJS_M = ttapi.obj     ttcache.obj   ttcalc.obj   ttcmap.obj  & | ||||
|          ttgload.obj   ttinterp.obj  ttload.obj   ttobjs.obj  & | ||||
|          ttraster.obj  ttextend.obj  $(PORT_OBJS) $(OBJS_X) | ||||
|  | ||||
| SRC_S = freetype.c | ||||
| OBJ_S = freetype.obj | ||||
| OBJS_S = $(OBJ_S) $(OBJS_X) | ||||
|  | ||||
|  | ||||
| .c.obj: | ||||
|   $(CC) $(CCFLAGS) $[* /fo=$[*.obj | ||||
|  | ||||
| all: .symbolic | ||||
|   $(FT_MAKE) -f $(FT_MAKEFILE) libttf.lib | ||||
|  | ||||
| debug: .symbolic | ||||
|   $(FT_MAKE) -f $(FT_MAKEFILE) LIB_FILES="$(OBJS_M)" libttf.lib | ||||
|  | ||||
|  | ||||
| libttf.lib: $(OBJS_M) | ||||
|   wlib -q -n libttf.lib $(OBJS_M) | ||||
|  | ||||
| # is this correct? Know nothing about wmake and the Watcom compiler... | ||||
| $(OBJ_S): $(SRC_S) $(SRC_M) | ||||
|   $(CC) $(CCFLAGS) $(SRC_S) /fo=$(OBJ_S) | ||||
|  | ||||
| clean: .symbolic | ||||
|   @-erase $(OBJS_M) | ||||
|   @-erase *.err | ||||
|  | ||||
| distclean: .symbolic clean | ||||
|   @-erase libttf.lib | ||||
|  | ||||
| new: .symbolic | ||||
|   @-wtouch *.c | ||||
|  | ||||
| # end of Makefile.wat | ||||
							
								
								
									
										14
									
								
								samples/WebAssembly/add.wat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								samples/WebAssembly/add.wat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| (module | ||||
|   (import "env" "printInt" (func $printInt (param i32))) | ||||
|   (func $add (param $lhs i32) (param $rhs i32) (result i32) | ||||
|     get_local $lhs | ||||
|     get_local $rhs | ||||
|     i32.add | ||||
|   ) | ||||
|  | ||||
|   (func $main | ||||
|     (call $printInt | ||||
|       (call $add (i32.const 9) (i32.const 8)))) | ||||
|  | ||||
|   (export "main" (func $main)) | ||||
| ) | ||||
							
								
								
									
										41
									
								
								samples/WebAssembly/fibonacci.wat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								samples/WebAssembly/fibonacci.wat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| (module | ||||
|   (import "env" "printInt" (func $printInt (param i32))) | ||||
|   (import "env" "print" (func $print (param i32 i32))) | ||||
|  | ||||
|   (memory $memory 1) | ||||
|   (data (i32.const 0) "\n") | ||||
|   (data (i32.const 1) " ") | ||||
|  | ||||
|   (func $endl | ||||
|     (call $print (i32.const 0) (i32.const 1))) | ||||
|   (func $space | ||||
|     (call $print (i32.const 1) (i32.const 1))) | ||||
|  | ||||
|   (func $fibonacci_rec (param $a i32) (param $b i32) (param $n i32) (result i32) | ||||
|     (if (i32.eqz (get_local $n)) (return (get_local $a))) | ||||
|     (call $printInt (get_local $b)) | ||||
|     (call $space) | ||||
|     (set_local $a (i32.add (get_local $a) (get_local $b))) | ||||
|     (call $fibonacci_rec (get_local $b) (get_local $a) (i32.sub (get_local $n) (i32.const 1))) | ||||
|   ) | ||||
|  | ||||
|   (func $fibonacci_iter (param $a i32) (param $b i32) (param $n i32) (result i32) | ||||
|     (loop $fi | ||||
|       (if (i32.eqz (get_local $n)) (return (get_local $a))) | ||||
|       (call $printInt (get_local $b)) | ||||
|       (call $space) | ||||
|       (set_local $b (i32.add (get_local $a) (get_local $b))) | ||||
|       (set_local $a (i32.sub (get_local $b) (get_local $a))) | ||||
|       (set_local $n (i32.sub (get_local $n) (i32.const 1))) | ||||
|       (br $fi)) | ||||
|     (get_local $b)) | ||||
|  | ||||
|   (func $main | ||||
|     (drop (call $fibonacci_rec (i32.const 0) (i32.const 1) (i32.const 9))) | ||||
|     (call $endl) | ||||
|     (drop (call $fibonacci_iter (i32.const 0) (i32.const 1) (i32.const 9)))) | ||||
|  | ||||
|   (export "main" (func $main)) | ||||
|   (export "memory" (memory $memory)) | ||||
| ) | ||||
|  | ||||
							
								
								
									
										48
									
								
								samples/WebAssembly/imported-min.wast
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								samples/WebAssembly/imported-min.wast
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| (module | ||||
|   (memory 256 256) | ||||
|   (data (i32.const 10) "waka waka waka waka waka") | ||||
|   ;; stack imports are special | ||||
|   (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) | ||||
|   (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) | ||||
|   ;; other imports must not be touched! | ||||
|   (import "env" "tempDoublePtr" (global $tempDoublePtr i32)) | ||||
|   (export "test1" $test1) | ||||
|   (export "test2" $test2) | ||||
|   (export "test3" $test3) | ||||
|   ;; ok to modify a global, if we keep it the same value | ||||
|   (global $mine (mut i32) (i32.const 1)) | ||||
|   ;; stack imports are ok to use. their uses are the same as other | ||||
|   ;; globals - must keep the same value (which means, unwind the stack) | ||||
|   ;; here the global names are "minified" | ||||
|   (global $global0 (mut i32) (get_global $STACKTOP$asm2wasm$import)) | ||||
|   (global $global1 (mut i32) (get_global $STACK_MAX$asm2wasm$import)) | ||||
|   ;; a global initialized by an import, so bad, but ok if not used | ||||
|   (global $do-not-use (mut i32) (get_global $tempDoublePtr)) | ||||
|   (func $test1 | ||||
|     (local $temp i32) | ||||
|     (set_global $mine (i32.const 1)) | ||||
|     (set_local $temp (get_global $global0)) | ||||
|     (set_global $global0 (i32.const 1337)) ;; bad | ||||
|     (set_global $global0 (get_local $temp)) ;; save us | ||||
|     (set_global $global1 (i32.const 913370)) ;; bad | ||||
|     (set_global $global1 (get_local $temp)) ;; save us | ||||
|     ;; use the stack memory | ||||
|     (i32.store (get_local $temp) (i32.const 1337)) | ||||
|     (if | ||||
|       (i32.ne | ||||
|         (i32.load (get_local $temp)) | ||||
|         (i32.const 1337) | ||||
|       ) | ||||
|       (unreachable) ;; they should be equal, never get here | ||||
|     ) | ||||
|     ;; finally, do a valid store | ||||
|     (i32.store8 (i32.const 12) (i32.const 115)) | ||||
|   ) | ||||
|   (func $test2 | ||||
|     (set_global $tempDoublePtr (i32.const 1)) ;; bad! | ||||
|     (i32.store8 (i32.const 13) (i32.const 115)) | ||||
|   ) | ||||
|   (func $test3 | ||||
|     (i32.store8 (i32.const 14) (i32.const 115)) | ||||
|   ) | ||||
| ) | ||||
							
								
								
									
										164
									
								
								samples/WebAssembly/local-cse.wast
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								samples/WebAssembly/local-cse.wast
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | ||||
| (module | ||||
|   (memory 100 100) | ||||
|   (func $basics | ||||
|     (local $x i32) | ||||
|     (local $y i32) | ||||
|     (drop | ||||
|       (i32.add (i32.const 1) (i32.const 2)) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add (i32.const 1) (i32.const 2)) | ||||
|     ) | ||||
|     (if (i32.const 0) (nop)) | ||||
|     (drop ;; we can't do this yet, non-linear | ||||
|       (i32.add (i32.const 1) (i32.const 2)) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add (get_local $x) (get_local $y)) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add (get_local $x) (get_local $y)) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add (get_local $x) (get_local $y)) | ||||
|     ) | ||||
|     (call $basics) ;; side effects, but no matter for our locals | ||||
|     (drop | ||||
|       (i32.add (get_local $x) (get_local $y)) | ||||
|     ) | ||||
|     (set_local $x (i32.const 100)) | ||||
|     (drop ;; x was changed! | ||||
|       (i32.add (get_local $x) (get_local $y)) | ||||
|     ) | ||||
|   ) | ||||
|   (func $recursive1 | ||||
|     (local $x i32) | ||||
|     (local $y i32) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 1) | ||||
|         (i32.add | ||||
|           (i32.const 2) | ||||
|           (i32.const 3) | ||||
|         ) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 1) | ||||
|         (i32.add | ||||
|           (i32.const 2) | ||||
|           (i32.const 3) | ||||
|         ) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 2) | ||||
|         (i32.const 3) | ||||
|       ) | ||||
|     ) | ||||
|   ) | ||||
|   (func $recursive2 | ||||
|     (local $x i32) | ||||
|     (local $y i32) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 1) | ||||
|         (i32.add | ||||
|           (i32.const 2) | ||||
|           (i32.const 3) | ||||
|         ) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 2) | ||||
|         (i32.const 3) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 1) | ||||
|         (i32.add | ||||
|           (i32.const 2) | ||||
|           (i32.const 3) | ||||
|         ) | ||||
|       ) | ||||
|     ) | ||||
|   ) | ||||
|   (func $self | ||||
|     (local $x i32) | ||||
|     (local $y i32) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.add | ||||
|           (i32.const 2) | ||||
|           (i32.const 3) | ||||
|         ) | ||||
|         (i32.add | ||||
|           (i32.const 2) | ||||
|           (i32.const 3) | ||||
|         ) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.add | ||||
|         (i32.const 2) | ||||
|         (i32.const 3) | ||||
|       ) | ||||
|     ) | ||||
|   ) | ||||
|   (func $loads | ||||
|     (drop | ||||
|       (i32.load (i32.const 10)) | ||||
|     ) | ||||
|     (drop | ||||
|       (i32.load (i32.const 10)) ;; implicit traps, sad | ||||
|     ) | ||||
|   ) | ||||
|   (func $8 (param $var$0 i32) (result i32) | ||||
|     (local $var$1 i32) | ||||
|     (local $var$2 i32) | ||||
|     (local $var$3 i32) | ||||
|     (block $label$0 i32 | ||||
|       (i32.store | ||||
|         (tee_local $var$2 | ||||
|           (i32.add | ||||
|             (get_local $var$1) | ||||
|             (i32.const 4) | ||||
|           ) | ||||
|         ) | ||||
|         (i32.and | ||||
|           (i32.load | ||||
|             (get_local $var$2) | ||||
|           ) | ||||
|           (i32.xor | ||||
|             (tee_local $var$2 | ||||
|               (i32.const 74) | ||||
|             ) | ||||
|             (i32.const -1) | ||||
|           ) | ||||
|         ) | ||||
|       ) | ||||
|       (i32.store | ||||
|         (tee_local $var$1 | ||||
|           (i32.add | ||||
|             (get_local $var$1) | ||||
|             (i32.const 4) | ||||
|           ) | ||||
|         ) | ||||
|         (i32.or | ||||
|           (i32.load | ||||
|             (get_local $var$1) | ||||
|           ) | ||||
|           (i32.and | ||||
|             (get_local $var$2) | ||||
|             (i32.const 8) | ||||
|           ) | ||||
|         ) | ||||
|       ) | ||||
|       (i32.const 0) | ||||
|     ) | ||||
|   ) | ||||
| ) | ||||
							
								
								
									
										23
									
								
								samples/WebAssembly/print.wat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								samples/WebAssembly/print.wat
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| (module | ||||
|   (import "env" "printInt" (func $printInt (param i32))) | ||||
|   (import "env" "printFloat" (func $printFloat (param f32))) | ||||
|   (import "env" "print" (func $print (param i32 i32))) | ||||
|  | ||||
|   (memory $memory 1) | ||||
|   (data (i32.const 0) "\n") | ||||
|   (data (i32.const 1) "Hello World!") | ||||
|  | ||||
|   (func $endl | ||||
|     (call $print (i32.const 0) (i32.const 1))) | ||||
|  | ||||
|   (func $main | ||||
|     (call $printInt (i32.const 9)) | ||||
|     (call $endl) | ||||
|     (call $printFloat (f32.const 6.28)) | ||||
|     (call $endl) | ||||
|     (call $print (i32.const 1) (i32.const 12)) | ||||
|     ) | ||||
|  | ||||
|   (export "main" (func $main)) | ||||
|   (export "memory" (memory $memory)) | ||||
| ) | ||||
| @@ -0,0 +1,81 @@ | ||||
| (module | ||||
|   (memory 256 256) | ||||
|   (type $0 (func (param i32))) | ||||
|   (type $1 (func)) | ||||
|   (type $2 (func (result i32))) | ||||
|   (func $b14 (type $2) | ||||
|     (drop | ||||
|       (if i32 ;; with shrinking, this can become a select | ||||
|         (i32.const 1) | ||||
|         (block $block1 i32 | ||||
|           (i32.const 12) | ||||
|         ) | ||||
|         (block $block3 i32 | ||||
|           (i32.const 27) | ||||
|         ) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (if i32 | ||||
|         (i32.const 1) | ||||
|         (i32.load (i32.const 10)) ;; load may have side effects, unless ignored | ||||
|         (i32.const 27) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (if i32 | ||||
|         (i32.const 1) | ||||
|         (i32.rem_s (i32.const 11) (i32.const 12)) ;; rem may have side effects, unless ignored | ||||
|         (i32.const 27) | ||||
|       ) | ||||
|     ) | ||||
|     (drop | ||||
|       (if i32 | ||||
|         (i32.const 1) | ||||
|         (i32.trunc_u/f64 (f64.const 12.34)) ;; float to int may have side effects, unless ignored | ||||
|         (i32.const 27) | ||||
|       ) | ||||
|     ) | ||||
|     (i32.const 0) | ||||
|   ) | ||||
|   (func $join-br_ifs | ||||
|     (block $out | ||||
|       (br_if $out (i32.const 1)) | ||||
|       (br_if $out (i32.const 2)) | ||||
|       (br_if $out (i32.const 3)) | ||||
|     ) | ||||
|     (block $out2 | ||||
|       (block $out3 | ||||
|         (br_if $out2 (i32.const 1)) | ||||
|         (br_if $out3 (i32.const 2)) | ||||
|         (br_if $out2 (i32.const 3)) | ||||
|       ) | ||||
|       (unreachable) | ||||
|     ) | ||||
|     (block $out4 | ||||
|       (block $out5 | ||||
|         (br_if $out4 (i32.const 1)) | ||||
|         (br_if $out5 (i32.const 2)) | ||||
|         (br_if $out5 (i32.const 3)) | ||||
|       ) | ||||
|       (unreachable) | ||||
|     ) | ||||
|     (block $out6 | ||||
|       (block $out7 | ||||
|         (br_if $out6 (i32.const 1)) | ||||
|         (br_if $out6 (i32.const 2)) | ||||
|         (br_if $out7 (i32.const 3)) | ||||
|       ) | ||||
|       (unreachable) | ||||
|     ) | ||||
|     (block $out8 | ||||
|       (br_if $out8 (call $b14)) ;; side effect | ||||
|       (br_if $out8 (i32.const 0)) | ||||
|     ) | ||||
|     (block $out8 | ||||
|       (br_if $out8 (i32.const 1)) | ||||
|       (br_if $out8 (call $b14)) ;; side effect | ||||
|     ) | ||||
|   ) | ||||
| ) | ||||
|  | ||||
							
								
								
									
										1
									
								
								vendor/README.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/README.md
									
									
									
									
										vendored
									
									
								
							| @@ -370,6 +370,7 @@ This is a list of grammars that Linguist selects to provide syntax highlighting | ||||
| - **Wavefront Material:** [Alhadis/language-wavefront](https://github.com/Alhadis/language-wavefront) | ||||
| - **Wavefront Object:** [Alhadis/language-wavefront](https://github.com/Alhadis/language-wavefront) | ||||
| - **Web Ontology Language:** [textmate/xml.tmbundle](https://github.com/textmate/xml.tmbundle) | ||||
| - **WebAssembly:** [Alhadis/language-webassembly](https://github.com/Alhadis/language-webassembly) | ||||
| - **WebIDL:** [andik/IDL-Syntax](https://github.com/andik/IDL-Syntax) | ||||
| - **wisp:** [atom/language-clojure](https://github.com/atom/language-clojure) | ||||
| - **World of Warcraft Addon Data:** [nebularg/language-toc-wow](https://github.com/nebularg/language-toc-wow) | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/grammars/language-webassembly
									
									
									
									
										vendored
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/grammars/language-webassembly
									
									
									
									
										vendored
									
									
										Submodule
									
								
							 Submodule vendor/grammars/language-webassembly added at 47874fed72
									
								
							
							
								
								
									
										18
									
								
								vendor/licenses/grammar/language-webassembly.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/licenses/grammar/language-webassembly.txt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| --- | ||||
| type: grammar | ||||
| name: language-webassembly | ||||
| license: isc | ||||
| --- | ||||
| Copyright (c) 2016-2017, John Gardner | ||||
|  | ||||
| Permission to use, copy, modify, and/or distribute this software for any | ||||
| purpose with or without fee is hereby granted, provided that the above | ||||
| copyright notice and this permission notice appear in all copies. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
| WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
| MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
| ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
| ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
| OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
		Reference in New Issue
	
	Block a user